换句话说,将整数变量x的最后5位设置为零,也必须是可移植的形式。
我试图用<<<<<<<<运算符,但只将位移到左侧,而不是将最后5位更改为零。
11001011应更改为11000000
答案 0 :(得分:2)
创建一个掩码,如果它与你的int进行按位与运算,那么会消隐掉最后n
个整数:
x &= ~ ((1 << n) - 1);
表达式1 << n
将n
个位置移位1,实际上是n
的两倍。所以对于5,你得到32或0x00000020
。减去一个,你得到一个数字,作为n
最低位设置,在你的情况0x0000001F
。使用~
取消这些位,然后获得其他人发布的掩码0xFFFFFFE0
。与您的整数进行按位AND将仅保留掩码和您的数字共有的位,这样只能打开第六位的位。
答案 1 :(得分:1)
对于32位整数,您应该能够使用&amp; amp;屏蔽这些位。 (按位和)运算符。
x & 0xFFFFFFE0.
答案 2 :(得分:0)
您可以使用按位和&
来实现此
int x = 0x00cb;
x = x & 0xffe0;
这保持较高位并将较低位设置为零。