求返回值並描述用途
int Func(int x)
{
int count = 0;
while(x)
{
x = x & (x - 1);
count++;
}
return count;
};
x=678
============
含義:這條語句執行一次,就會把x用二進制格式表示時的最右邊的一個二進制1變爲二進制0,因爲x-1會將該位(x用二進制表示時最右邊的一個二進制1)變爲0;
應用1:把一個整數用二進制表示時,其中二進制1的'個數;
設x=9999,其二進制格式爲: 10011100001111; 則count=8;
思路:將x轉化爲二進制格式,統計一下含有的二進制1的個數;
應用2:判斷一個整數(x)是否是2的n次方;
int Func(int x)
{
if((x & (x - 1)) == 0)
{
return 1; //是
}
else
{
return 0; //否
}
};
思路:如果一個整數是2的n次方,那麼,這個數用二進制表示時,其最高位爲二進制1,其餘位爲二進制0;