當前位置:學問君>人在職場>求職指導>

新大陸硬件筆試題

學問君 人氣:9.11K

求返回值並描述用途

新大陸硬件筆試題

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;