對于一個整形變量,求其二進制表示中“1”的個數(shù)。
擴展問題:給定兩個正整數(shù)啊a和b,問把a變?yōu)閎需要改變多少位(bit)?也就是說,整數(shù)a和b的二進制表示中有多少位是不同的?
把兩個整數(shù) a, b 異或, 然后又回歸到判斷 1 的個數(shù)
int Count( int a, int b)
{
int num = 0;
int v = a ^ b;
//計算一個整數(shù)中1的個數(shù)
while(v)
{
v &= (v-1);
num++;
}
return num;
}