二进制中1的个数
题目描述
输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。
思路
- 可以使用位运算来处理。
- n & (n-1) 结果中1的个数比n少一个。
- 在位运算时,负数就是用补码运算的,所以不需要特殊处理。
ps:补码为原码各个位置取反,最后在末位加1。
例如:4 & 3 = 0 (1个1 变成了 0个1)、5 & 4 = 4 (2个1 变成了 1个1)
Java代码实现
public int NumberOf1(int n) {
int res = 0;
while( n != 0){
res++;
n = n & (n-1);
}
return res;
}
字节跳动公司福利 1297人发布