有人可以解释为什么这两个 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);
}