2014-05-06 35 views

回答

0

您可以使用按位和&

int x = 0x00cb; 
x = x & 0xffe0; 

這將保持高位,並設置較低位爲零。

2

創建空白指出,去年n整數如果是按位與運算的INT面具:

x &= ~ ((1 << n) - 1); 

表達1 << n班1由n的地方,實際上是2到n力量。所以5,你得到32或0x00000020。減1,你得到一個數字,最低位設置爲n,你的情況爲0x0000001F。用~取代這些位,並且你得到0xFFFFFFE0,其他人也發佈了掩碼。與你的整數按位AND將只保留掩碼和你的號碼有共同的位,它只能從第六位開始下注位。

+0

當n = sizeof(int) –

+0

時失敗@WingerSendon:你的意思是當n == CHAR_BIT * sizeof(int)'?是的,但是掩蓋掉等於或大於該值的位寬的位數將其設置爲零。如果需要,這種特殊情況很容易被發現。 –