Can someone explain why these two pieces of Java code behave differently? The first correctly counts the number of bits, and the second shows only 1 or 0 for nonzero numbers. I do not understand what is going on.
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); }
source share