世界上有10种人,一种懂二进制,一种不懂。那么你知道两个int32整数m和n的二进制表达,有多少个位(bit)不同么?

示例1
输入

1999 2299
输出

7
class Solution {
public:
    /**
     * 获得两个整形二进制表达位数不同的数量
     * 
     * @param m 整数m
     * @param n 整数n
     * @return 整型
     */
    int countBitDiff(int m, int n) {
        int a = m^n;
        int c = 0;
        while(a)
        {
            a=a&(a-1);
            ++c;
        }
        return c;
    }
};

二进制 一的个数

int BitCount(unsigned int n)
{
    unsigned int c =0 ;
    for (c =0; n; ++c)
    {
        n &= (n -1) ; // 清除最低位的1
    }
    return c ;
}

求二进制数中0的个数

int BitCount(int x)  
{  
    int count = 0;  
    while (x + 1)  
    {  
        count++;  
        x |= (x + 1);  
    }  
    return count;  
}