我们知道在java语言中一个int类型有32个0或1组成。我们要计算有多少个1,这里主要以int型数据为例来分析。比如15在二进制中表示的是1111,有4个1,所以返回4。再比如16在二进制中表示的是10000,只有一个1,所以返回1。这题解法比较多,我们将会逐个分析。 一,通过移动数字计算首先想到的是把要求的数字不停的往右移,然后再和1进行与运算,我们就以1
在C语言中,右移运算符(按二进制形式把所有的数字向右移动对应的位数,低位移出(舍弃),高位的空位补符号位,即正数补零,负数补1)可以帮助我们完成计算二进制中的1的个数。 方法:先将一个整数进行与1按位与(&),判断结果为1还是0,如果是1则该二进制中1的个数加1,再右移1位;再将其进行按位与1,判断结果为1...
假设有个二进制数:01,含有 1 个 1,正好二进制 01 对应的十进制也是 1。再假设有个二进制数 11,含有 2 个 1,正好二进制 11 对应的十进制是 2。于是不难得出一个结论:如果一个二进制数只有两位,那么它对应的十进制数就是该二进制中包含的 1 的个数。算法中核心的代码有 5 行,分别是: temp = (temp...
例如,二进制数1100中,从右边数起第三位是最右侧的一个1。减去1后,该位变为0,其后的两位0变为1,而前面的1保持不变,因此得到的结果是1011。这表明,减1的操作实质上是对最右侧的一个1开始的所有位进行取反。接下来,如果我们把原整数与减1后的结果进行与运算,从原整数最右侧一个1的位开始,所有位都...
计算二进制中1的个数的方法有遍历法、公式法、位运算、查表发、递归法。1、遍历法 判断是否为1,并累加计数。这种方法的时间复杂度是O,其中n是整数的大小。例如,对于整数10,其二进制表示为1010,遍历四位,发现有两个1,所以返回2。2、公式法 使用n &= (n - 1)。这个公式可以将整数的最低...
1的二进制表示为1(1*2^0)。2的二进制表示为10(1*2^1 + 0*2^0 = 2)。3的二进制表示为11(1*2^1 + 1*2^0 = 3)。4的二进制表示为100(1*2^2 + 0*2^1 + 0*2^0 = 4)。5的二进制表示为101(1*2^2 + 0*2^1 + 1*2^0 = 5)。6的二进制表示为110(1*2^...
1.二进制数的算术运算 二进制数的算术运算包括:加、减、乘、除四则运算,下面分别予以介绍。 (1)二进制数的加法 代码语言:javascript 代码运行次数:0 AI代码解释 根据“逢二进一”规则,二进制数加法的法则为:0+0=00+1=1+0=11+1=0(进位为1)1+1+1=1(进位为1) ...
即(0*2^2)+(1*2^1)+(0*2^0)=2(‘^’表示幂运算符) 所以1010表示十进制数(-2) 同理0010表示十进制数(2) 0001+0010=0011 (1+2=3)ok 0000+1000=1000 (+0+(-0)=-0) ok 0001+1001=1010 (1+(-1)=-2)no 由此引出了反码的概念来解决1 + -1 = -2的问题 ...
1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 解法二:使用位操作 进行向右移位操作 1 int Count(unsigned int v){ 2 int num = 0; 3 while(v){ 4 num += v & 0x01; 5 v >>= 1; 6 } 7 return num; 8 } 1. 2. 3. 4. ...