二进制中1的个数
题目
输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。
解题思路
- 负数是补码表示
>>>
为无符号右移,>>
为有符号右移,当 n 为负数是会增加多余的1
public int NumberOf1(int n) {
int mask = 0x01;
int res = 0;
int t = n;
while (t != 0) {
if ((t & mask) == 1) {
res++;
}
t = t >>> 1;
}
return res;
}
当前内容版权归 Hayden Yang 或其关联方所有,如需对内容或内容相关联开源项目进行关注与资助,请访问 Hayden Yang .