Usando bitwise & operator e + em Java dando resultados inconsistentes
Alguém poderia explicar por que essas duas partes de códigos Java estão se comportando de maneira diferente? O primeiro conta corretamente o número de bits, mas o segundo exibe apenas 1 ou 0 para números diferentes de zero. Eu não entendo o que está acontecendo.
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);
}