question:输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。
思路:
1100:减一的话,1011,后三位与原数相反的
那么,n&(n-1)的话就是1000,就能消掉最后一个1
“`
public class Solution {
public int NumberOf1(int n) {
int count=0;
while(n!=0){
count++;
n &= (n-1);
}
return count;
}
}
ps:(n&1)==1 可判断n为奇数
本文介绍了一种计算整数二进制表示中1的个数的方法,利用位操作n&(n-1)来消除最低位的1,通过迭代直至n为0实现计数。
620

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



