これら 2 つの Java コードの動作が異なる理由を誰か説明してもらえますか? 最初のものはビット数を正しくカウントしますが、2番目のものはゼロ以外の数値に対して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);
}