题:请编写一个函数,让它把一个指定整数的二进制表示形式中的“1”的个数统计出来。
这题在JAVA下有几个解法:
1。设计一个把十进制转换为二进制的算法,再对其统计。
2。用Integer.toBinaryString方法,先把十进制转换为二进制,再对其统计。
3。因为整数在计算机中的表示形式就是二进制,所以我们无需对其转换,运用位操作符可直接操作它的二进制数。我们把1作为掩码,与要统计的整数进行&运算,就可判断整数的最低位是否为1了,然后对整数进行右移>>>1位(注意:是>>>,不是>>,因为如果整数是负数,前者在移位后会全补上零,这是JAVA特有的符号,而后者会根据符号位进行补全)。

public static int numOnesInBinary(int num)...{
int count = 0;
while(num != 0)...{
if((num & 1) == 1) count++;
num >>>= 1;
}
return count;
}
本文介绍了一种在Java中计算整数二进制表示中1的数量的方法。通过位操作实现,无需将整数转换为二进制字符串,提高了效率。文中提供了一个具体的实现示例。
1868

被折叠的 条评论
为什么被折叠?



