第一种:使用n&(n-1)表示来计算有多少个1
int n=127;
int count=0;
while (n!=0){
count++;
n=n&(n-1);
}
第二种:使用移位操作
Integer input = in.nextInt();
int count=0;
for(int i=0;i<30;i++){
int tmp = (input >> i)&0x00000001;
if(tmp==1){
count++;
}
}
System.out.println(count);
本文介绍了两种计算整数二进制表示中1的位数的方法。第一种方法通过n&(n-1)的循环操作消除最低位的1,直至n变为0。第二种方法利用右移操作检查每一位是否为1,适用于30位内的整数。
3042

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



