//一个二进制数和1相与,就可以知道这个二进制数的最后一位是1还是0
//因为1和1相与还是1, 而0和1相与还是0
int countBitDiff(int m, int n ) {
    int cnt = 0;
    for(int i = 0; i < 32; i++)  //右移0位时检查最后一位是1还是0
                                 //右移1位时检查倒数第二位是1还是0
    {
        if((m >> i & 1) != (n >> i & 1))
            cnt++;               //一直到右移31位,检测倒数第32位也就是最高位
    }
    return cnt;
    
}


//当然也可以从最高位向最低位检查
//即for(int i = 31; i >= 0; i--)