题目分析:
- 统计一个整数对应的二进制数中1的个数。其中负数用补码表示。
解题思路:
两种方法实现
方法1:判断最后一个是否为1,然后右移,继续统计(注意处理负数情况
方法2:利用n&(n - 1)实现
实现程序
// 方法一实现: int NumberOf1(int n) { int count = 0; int i = 32; while(i) { if(n & 1 == 1) { count++; } n = n >> 1; i--; } return count; } // 方法二实现: int NumberOf1(int n) { int count = 0; while (n) { count++; n = n & (n-1); } return count; }