Używanie bitwise & operator i + w Javie daje niespójne wyniki

Czy ktoś mógłby wyjaśnić, dlaczego te dwie części kodów Java zachowują się inaczej? Pierwszy z nich poprawnie liczy liczbę bitów, a drugi wyświetla tylko 1 lub 0 dla liczb niezerowych. Nie rozumiem, co się dzieje.

    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);
    }

questionAnswers(3)

yourAnswerToTheQuestion