2014-09-05 19 views
0

給定C++ 03中的32位或64位整數,確定是否只有一個位是否有效的方法是什麼? (例如,值恰恰是1,2,4,8,16,32等中的一個)。是否有任何C++ 03庫(或者如果不是C++ 11)的內置函數可以在我遇到的任何硬件上高效工作在嗎?我想用它來處理多次出現頻率較低的衰減消息。如何有效地確定一個整數的漢明權重是否恰好爲1?

回答

6

如果有已經公知的整數x不爲零,則

if (0 == (x & (x - 1))) 
{ 
    there_is_only_1_bit = true; 
} 
+2

表達式x&=(X-1)將關閉,它被設置x的最低位。 – Logicrat 2014-09-05 22:51:59

相關問題