一、题目:
函数原型:
int hammingWeight(uint32_t n)
参数解释:
uint32_t其实是unsigned int,C语言给无符号整型short int,取别名为uint32_t
二、思路:
利用位运算,设置循环,每次二进制串按位与上1,如果值为1,则说明二进制串的最低位是1,如果为0,则说明二进制串的最低位是0。
(1的二进制串为00000000000000000000000000000001,因此和1按位与时结果只与二进制串的最低位有关,前31位始终为0)
每次循环二进制串右移1位,最高位补充0。当二进制串的结果为0时说明二进制串中已经没有1,循环结束。
三、代码:
int hammingWeight(uint32_t n) { int sum=0; while(n!=0) { if(n&1==1) { sum++; } n=n>>1; } return sum; }