问题描述
输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。
代码:
function NumberOf1(n)
{
var count = 0,flag=1;
while(flag){
if(n&flag)count++;
flag=flag<<1;
}
return count;
}
说明:
1)&是表示位的与运算,把左右两边的数字转化为二进制,然后每一位分别进行比较,如果相等就为1,不相等即为0。
2)&还具有强制转换的功能,把false,true转换成了0和1进行比较。
3)<< 是左移运算符,先把数字转换成二进制,然后根据符号向左移动,根据后面的数字决定移动几位。