換言之,將整數變量x的最後5位設置爲零,並且它必須是便攜形式。將int變量的最後n位設置爲零的C表達式
我試圖用< <算子做它,但只將位移動到左側,而不是將最後5位改爲零。
11001011應改爲11000000
換言之,將整數變量x的最後5位設置爲零,並且它必須是便攜形式。將int變量的最後n位設置爲零的C表達式
我試圖用< <算子做它,但只將位移動到左側,而不是將最後5位改爲零。
11001011應改爲11000000
您可以使用按位和&
這
int x = 0x00cb;
x = x & 0xffe0;
這將保持高位,並設置較低位爲零。
創建空白指出,去年n
整數如果是按位與運算的INT面具:
x &= ~ ((1 << n) - 1);
表達1 << n
班1由n
的地方,實際上是2到n
力量。所以5,你得到32或0x00000020
。減1,你得到一個數字,最低位設置爲n
,你的情況爲0x0000001F
。用~
取代這些位,並且你得到0xFFFFFFE0
,其他人也發佈了掩碼。與你的整數按位AND將只保留掩碼和你的號碼有共同的位,它只能從第六位開始下注位。
當n = sizeof(int) –
時失敗@WingerSendon:你的意思是當n == CHAR_BIT * sizeof(int)'?是的,但是掩蓋掉等於或大於該值的位寬的位數將其設置爲零。如果需要,這種特殊情況很容易被發現。 –