Shi*_*ano 6 java bit-manipulation bitwise-operators
有人可以解释为什么这两个Java代码的行为有所不同吗?第一个正确计算位数,但第二个只显示1或0表示非零数字.我不明白发生了什么.
public static void printNumUnitBits(int n){
int num=0;
for(int i=0;i<32;i++){
int x=n&1;
num=num+x;
n=n>>>1;
}
System.out.println("Number of one bits:"+num);
}
public static void printNumUnitBits(int n){
int num=0;
for(int i=0;i<32;i++){
num=num+n&1;
n=n>>>1;
}
System.out.println("Number of one bits:"+num);
}
Run Code Online (Sandbox Code Playgroud)