描述
输入一个整数 n ,输出该数32位二进制表示中1的个数。其中负数用补码表示
输入:
10
返回值:
2
说明:
十进制中10的32位二进制表示为0000 0000 0000 0000 0000 0000 0000 1010,其中有两个1。
输入:
-1
返回值:
32
说明:
负数使用补码表示 ,-1的32位二进制表示为1111 1111 1111 1111 1111 1111 1111 1111,其中32个1
方法一:
·通过依次遍历该数字二进制中的每一位,然后通过移位运算遍历每一位,数字1通过不断左移和二进制每一位做&与运算,如果与结果=1,则当前数字=1,否则当前数字=0
int NumberOf1(int n ) {
// write code here
//可以依次遍历该数字的二进制中的每一位,通过移位运算遍历每一位,数字1与数字相位&运算,
//结果为0,则表示该位=0
int count=0;
for(int i=0;i<32;++i)
{
if(n&(1<<i))
count++;
}
return count;