精华内容
下载资源
问答
  • 十六进制转换成二进制,处理负数,二进制最高是1表示负数,0表示正数。源代码,已测试,
  • 通过运算中的&运算将数字二进制中的1变成0,即每进行一次操作二进制表示中的1就减少一,当所有的1都变为0的时候,数字就变成了0。 怎样用&将二进制某一上面的1变为0 因为 当与运算&左右两边值都为1时,...

    计算一个十进制数的二进制表示有多少位1

    一、看个例子

    5的二进制为101含有2个1

    15的二进制为1111含有4个1

    二、实现原理

    通过位运算中的&运算将数字二进制中的1变成0,即每进行一次操作二进制表示中的1就减少一位,当所有的1都变为0的时候,数字就变成了0。

    怎样用&将二进制某一位上面的1变为0

    因为

    当与运算&左右两边值都为1时,结果为1

    当与运算&左右两边有一边值为0时,结果为0

    所以

    • 1.如果数字二进制表示的某一位为1,将这一位和0进行&运算后得到的结果中,这一位就变为0。
    • 2.我们是从低位开始,将1变为0,也就是先将最右边的1变为0。
    • 3。a-1的妙用,根据上一句话,我们可以知道当前要消除的1为最右边的1,所以可以将其右边全部看成是0,a-1会将右边的0全部变成1(0减去1向前借位),而本身由于借位变成0,这样就达成了1的目标。

    举个例子n二进制为1101,等价于110100,n-1的二进制为110011,则110100&110011结果的二进制为110000

    假定数字为a,具体实现


    1.将数字a和a-1进行与操作,得到的结果为消除掉最右边1后的十进制数
    2.统计1的个数的变量的值加1
    3.判断a是否为0,若为0则统计结束,否则继续进行1、2步操作

    三、C语言代码实现

    #include<stdio.h>
    int main()
    {
        int i, num, count;
        scanf("%d", &n);
        count = 0;
        while(n > 0) {//统计
            n = n & n-1;//将当前最右边的1变为0
            count++;
        }
        printf("%d\n", count);
        return 0; 
    }

    四、时间复杂度分析

    时间复杂度主要耗在while循环里面,而循环执行的次数取决于该数二进制表示有多少个1,所以时间复杂度为线性。

    参考:
    http://www.cnblogs.com/grenet/archive/2011/06/10/2077228.html

    展开全文
  • 二进制则是我们看的黑客电影的10001010010000(这个数等同于十进制的8848),计算方法:0+1还是等于1,而1+1则等于10,相当于1在往上加则向前进一二进制单独的0和1等于十进制单独的0和1,二进制的10则等于十...

    大部分进制都是以10为一个阶段。

    一般生活中我们常用十进制即满十进一,即0+1=1,1+1=2,而9+1=10往前进了一位。

    二进制则是我们看的黑客电影中的10001010010000(这个数等同于十进制的8848),计算方法:0+1还是等于1,而1+1则等于10,相当于1在往上加则向前进一位。
    二进制单独的0和1等于十进制单独的0和1,二进制的10则等于十进制的2(满二进一),二进制的11则等于十进制的3,以此类推。

    八进制也容易理解,便是满八进一,八进制的10就是十进制8,即7+1=10,往下以此类推。

    十六进制就比较难一点,因为十六进制已经超过10了。所以,十六进制从十开始用字母代替,即十进制的1—16在十六进制中表现为1、2、3、4、5、6、7、8、9、A、B、C、D、E、F、10。再往下以此类推即可。

     

    python3中的数字默认进制为十进制,即python3默认10=9+1。

    在python中二进制用0b加相应数字来表示,8进制用0o加相应数字来表示,16进制用0x加相应数字来表示。即:

    #二进制#
    >>> 0b10
    2
    >>> 0b11
    3
    >>> 0b1101
    13
    
    #八进制#
    >>> 0o10
    8
    >>> 0o11
    9
    >>> 0o1101
    577
    
    #十六进制#
    >>> 0x10
    16
    >>> 0x11
    17
    >>> 0x1101
    4353
    
    #十进制#
    >>> 10
    10
    >>> 11
    11
    >>> 1101
    1101

    在python中二进制、八进制、十六进制、十进制互相转换的方法:

    
    #其他进制转换二进制#
    >>> bin(2)  #十进制转换二进制#
    '0b10'
    >>> bin(0o10) #八进制转换二进制#
    '0b1000'
    >>> bin(0xf) #十六进制转换二进制#
    '0b1111'
    
    #其他进制转换为八进制#
    >>> oct(0b101)
    '0o5'
    >>> oct(0xf)
    '0o17'
    >>> oct(0o123)
    '0o123'
    
    #其他进制转换为十六进制#
    >>> hex(0o10)
    '0x8'
    >>> hex(3)
    '0x3'
    >>> hex(0b111)
    '0x7'
    
    #其他进制转换为十进制#
    >>> int(0o10)
    8
    >>> int(0xf)
    15
    >>> int(0b10)
    2

     

    展开全文
  • 二进制中最低的位置 描述 给定一个16的十进制数,请把该数转换为二进制数来看待。 请找到该数看为二进制后,其最低的1出现的位置。 也就是这个数最低的1是二进制中的第几呢? 输入 以1开头的二进制数的十...

    二进制中最低位的位置

    描述

    给定一个16位的十进制数,请把该数转换为二进制数来看待。

    请找到该数看为二进制后,其最低位的1出现的位置。

    也就是这个数最低位的1是二进制中的第几位呢?

    输入

    以1开头的二进制数的十进制表示B.

    例如输入9.

    输出

    输出K,表示B中的1在第K位(K=0,1,2…15)

    9的最低位的1出现在位置0.

    样例

    9
    
    0
    

    难度

    中,lowbit的用法

    解法

    先用打表法计算log2[1<<MaxN]

    2**3 = 8 log2[8] = 3 如100 最低位为1的数是3,查表可知log2[8]=3

    代码

    #include<iostream>
    using namespace std;
    #define MaxN 16
    int log2[1<<MaxN];  //65536
    // 打表法计算log2[1<<16]
    void BuildLog2Table(int n)
    {
        for(int k=0;k<=n;k++)
            log2[1<<k]=k; 
    }
    int lowbit(int n){
        return n & -n; //!-n表示n取反+1
    }
    int PosOf1(int n){
        return log2[lowbit(n)];
    }
    int main()
    {
        BuildLog2Table(MaxN);
        int n; cin>>n;
        cout<<PosOf1(n);
    }
    
    展开全文
  • 二进制中负数的表示

    千次阅读 2017-03-18 18:11:31
    二进制里,是用 0 和 1 来表示正负的,最高为符号,最高为 1 代表负数,最高为 0 代表正数。   原码:一个整数,按照绝对值大小转换成的二进制数,称为原码。 比如 00000000 00000000 00000000 ...

    计算机对有符号数(包括浮点数)的表示有三种方法:原码、反码和补码, 补码=反码+1。

    在 二进制里,是用 0 和 1 来表示正负的,最高位为符号位,最高位为 1 代表负数,最高位为 0 代表正数。

     

    原码:一个整数,按照绝对值大小转换成的二进制数,称为原码。

    比如 00000000 00000000 00000000 00000101 是 5的 原码。
     

    反码:将二进制数按位取反,所得的新二进制数称为原二进制数的反码。

    取反操作指:原为1,得0;原为0,得1。(1变0; 0变1)。

    比如:将00000000 00000000 00000000 00000101每一位取反,得11111111 11111111 11111111 11111010。

    称:11111111 11111111 11111111 11111010 是 00000000 00000000 00000000 00000101 的反码。

    反码是相互的,所以也可称:

    11111111 11111111 11111111 11111010 和 00000000 00000000 00000000 00000101 互为反码。
     

    补码:反码加1称为补码。

    也就是说,要得到一个数的补码,先得到反码,然后将反码加上1,所得数称为补码。

    比如:00000000 00000000 00000000 00000101 的反码是:11111111 11111111 11111111 11111010。

    那么,补码为:

    11111111 11111111 11111111 11111010 + 1 = 11111111 11111111 11111111 11111011

     

                   在计算机中,负数以其正值的补码形式表达。

    所以,-5 在计算机中表达为:11111111 11111111 11111111 11111011。


    原文地址:

    http://blog.csdn.net/garybrother/article/details/5991918

    http://blog.csdn.net/zlqqhs/article/details/8670509

    展开全文
  • C++ - 求一个正整数的二进制表示中1的个数

    万次阅读 多人点赞 2019-02-20 16:28:12
    希望你也加入到人工智能的队伍来!请点击http://www.captainbed.net /* * Created by Chimomo */ #include &lt;iostream&gt; #define NULL 0 using namespace std; int f(int x) { int n = 0...
  • B 二进制 Binary 的缩写 O 八进制 Octal 的缩写 Q 八进制 Octal 的缩写 避免字母O误认作数字0,标识改为Q D 十进制 Decimal的.八进制用什么字母表示? “H”表示“十六进制”; “K”表示“十进制”; “.八进制用...
  • C语言二进制、八进制和十六进制的表示

    千次阅读 多人点赞 2020-02-18 17:21:04
    二进制数、八进制数和十六进制数的表示 一个数字默认就是十进制的,表示一个十进制数字不需要任何特殊的格式。但是,表示一个二进制、八进制或者十六进制数字就不一样了,为了和十进制数字区分开来,必须采用某种...
  • 在计算机内部,8带符号二进制整数可表示的十进制的最大值是127。二进制的“00101000”直接可以转换成16进制的“28”。字节是电脑的基本存储单位,根据计算机字长的不同,字具有不同的位数,现代电脑的字长一般是...
  • 例如2157的千位是2,百位是1,十是5,个是7,可以写成:2 x 1000 + 1 x 100 + 5 x 10 + 7 x 1注意,1000是10的立方(即3次幂),100是10的平方(即2次幂),10是10的1次幂,而且10(以及任意正数)的0次幂是1。...
  • 对于有符号位二进制数,最高位表示正负数,最高1表示负数,最高是0则表示正数。如一个8的有符号位二进制数 1000 0001 最高是1则表示一个负数(-1) ,如果1000 0001 是无符号,换算成十进制数是129. 模  ...
  • 假设二进制中从1开始,每乘一次2,1就会向左移一,00000001×2=000000010,000000010×2=000000100. 所以可以简单归纳为2^n的二进制最低1的位置就为n+1。 然后继续+1, 假设我们求2^n+1的二进制最低1的位置, ...
  • 本词条缺少概述图,补充相关内容使词条更...依次类推,7位二进制可以表示(2=)128种状态,每种状态都唯一地编为一个7二进制码,对应一个字符(或控制码),这些码可以排列成一个十进制序号0~127。所以,7ASCII...
  • 二进制状态标志在Java的应用

    千次阅读 2019-11-15 16:57:36
    1、二进制 为什么是二进制呢?因为计算机在计算的时候全部都是基于二进制计算的。在Java声明一个普通的int类型变量: private int age = 10; 此时的变量 age 是默认十进制的,转化为二进制也就是:1010。如果想要...
  • 762. 二进制表示中质数个计算置位 给定两个整数 L 和 R ,找到闭区间 [L, R] 范围内,计算置位位数为质数的整数个数。 (注意,计算置位代表二进制表示中1的个数。例如 21 的二进制表示 10101 有 3 个计算置位。还有...
  • 负数的二进制表示运算

    千次阅读 2019-07-21 23:31:45
    首先必须要明确的是:负数在计算机中都是以补码来表示的。 负数的运算也是在补码上进行的。 与运算 -2&-3 =-4 原码 10000010 10000011 取反 11111101 11111100 (反码) 加一 11111110 11111101 (补码) 与...
  • 二进制 二进制就是计算机常用的进制,即逢二进一。例如:1010 八进制 八进制即逢八进一。例如:626 十进制 十进制就是我们在计算常用的进制,所以就不再举例(即逢十进一) 十六进制 十六进制与其它进制...
  • java二进制以及基本运算

    万次阅读 多人点赞 2018-06-30 17:50:57
    二进制是计算技术广泛采用的一种数制。二进制数据是用0和1两个数码来表示的数。...计算机二进制则是一个非常微小的开关,用“开”来表示1,“关”来表示0。 那么Java二进制又是怎么样的呢...
  • 二进制是逢二进一,所有的数都用两个数字0或1来表示二进制的每一只能表示0或1,例如十进制数的1、2、3二进制表示,分别是1、10、11。0和1两个数字可以分别用电路的两种状态来表示,很容易用电器元...
  • 十进制负数的二进制表示

    千次阅读 2018-04-04 11:22:36
    ...十进制转正整数转二进制应该都会,用C语言代码简单表示算法: #include&amp;amp;lt;stdio.h&amp;amp;gt; int main() { int dec=65535; /*positive decimalism number to binary ...
  • 字节、二进制表示

    万次阅读 2021-02-03 14:34:00
    每个bit非0即1,即二进制表达的0或1,0001每个“0”和“1”即为。 JAVA常见基本类型: byte 1字节 short 2字节 int 4字节 long 8字节 char 2字节(C语言是1字节)可以存储一个汉字 float 4字节 double 8...
  • 那么 7 转成二进制 111,那么其可以表示事物的3个方面,表示的状态为8个状态。很是节省空间,相对于用一些字符串来表示状态。但是,数字表示状态,不易让人去理解。 java code: package tree.test
  • Bin 二进制Binary,简写为B,在Java的前缀表示为0b Oct 八进制Octal,简写为O,在Java的前缀表示为0 Des 十进制Decimal,简写为D Hex 十六进制Hexadecimal,简写为H,在Java的前缀表示为0x 2. 初识二进制 其实...
  • 含有质因数2的个数,因为二进制最低为0代表是偶数,可以被2整除,如果为1则代表是奇数,不能被2整除,其内部也不会包含质因数2,所以质因数2的个数就是二进制表示中最低1后面的0个数。所以,答案等于N!含有质...
  • 8位二进制补码表示十进制整数的范围是()。A.8B.16C.32D.64八进制36转化为十进制为27。()在C++语言,整数可用3种数制表示,它们分别为:十进制、八进制和【】。编写一个算法,对于输入的十进制非负整数,将它的八进...
  • 今天在研究生复试面试的过程被问到小数的二进制和十六进制形式怎么表示,然而这个知识点已经记不得了,只能尴尬的和老师说这个知识点没有掌握好,回去会继续学习。不过最后的成绩还不错,复试第,回去查了下小数...
  • 1.二进制(Binary)0b print(0b11) 3 2.八进制(Octonary)0o print(0o11) 9 3.十六进制(hexadecimal) 0x print(0x11) 17
  • 二进制

    2018-12-10 11:07:39
    二进制数据是用0和1两个数码来表示的数。它的基数为2,进位规则是“逢二进一”,借位规则是“借一当二”(十进制加减法是“逢十进一”、“借一当十”)。数字电子电路,&amp;quot;逻辑门&amp;quot;的实现...
  • 二进制:基础、正负数表示、存储与运算

    万次阅读 多人点赞 2018-09-11 11:35:53
    一、概述 众所周知,计算机是由各种...所谓二进制表示从0开始,“逢二进一”(N进制则逢N进一)。比如十进制的0、1、2的二进制表示为0、1 、10。 二、进制转换 网上有很多进制转换的方法,我这里就不多做阐述,只...
  • 运算(一):二进制中1的个数

    千次阅读 2016-05-29 23:22:43
     请实现一个函数,输入一个整数,输出该数二进制表示中1的个数。  例如:10 二进制表示为:1010 ,该函数输出二 二、最初思路:  先检查二进制位最右边一是否为1,将二进制位右移一,这时最右边一 变为原来...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 866,478
精华内容 346,591
关键字:

二进制中的3位可以表示