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