對于一個整形變量,求其二進制表示中“1”的個數。
擴展問題:給定兩個正整數啊a和b,問把a變為b需要改變多少位(bit)?也就是說,整數a和b的二進制表示中有多少位是不同的?
把兩個整數 a, b 異或, 然后又回歸到判斷 1 的個數
int Count( int a, int b)
{
int num = 0;
int v = a ^ b;
//計算一個整數中1的個數
while(v)
{
v &= (v-1);
num++;
}
return num;
}
posted on 2008-10-21 10:25
水 閱讀(1083)
評論(0) 編輯 收藏 引用 所屬分類:
算法與數據結構