描述
输入一个整数,输出该数32位二进制表示中1的个数。其中负数用补码表示。
示例1
输入: 10
返回值: 2
思路
n & n - 1 : 消去数字 n 最右边的 1
二进制数:val :1101000, val-1: 1100111
那么val &(val-1) : 1100000
代码:
public class Solution {
public int NumberOf1(int n) {
int res = 0;
while(n != 0) {
n = n & (n-1);
res++;
}
return res;
}
}
博客介绍了如何通过位操作计算一个整数在32位二进制表示中1的个数。提供的代码示例展示了利用n&(n-1)消除最右侧1的方法,通过循环来统计1的总数。这种方法对于理解位操作和优化计算效率有帮助。
172万+

被折叠的 条评论
为什么被折叠?



