什么是掩蔽? (按位运算符)

时间:2017-10-12 22:50:21

标签: bit-manipulation bitwise-operators masking

我遇到了关于按位运算符的屏蔽是什么的在线解释,但由于使用了我不熟悉的符号而无法完全理解解释。以下是演示:

enter image description here

让我困惑的具体行是“//实际班次是10&(8-1)= 2 “。我得到10是我们想要左移的位数,但是”&“在这种情况下意味着什么,为什么我们减去8-1?

可以在此处找到演示链接:

https://msdn.microsoft.com/en-us/library/8xftzc7e(v=vs.100).aspx

提前致谢。

1 个答案:

答案 0 :(得分:0)

答案在您自己的链接备注部分的第二段

  

<< operator掩盖expression2以避免表达式1   许多。否则,如果移位量超过了位数   表达式1的数据类型,所有原始位都将被移位   离开给一个微不足道的结果。确保每个班次离开   至少有一个原始位,移位运算符使用以下内容   计算实际移位量的公式:mask expression2(使用   按位AND运算符),其中一个小于位数   表达式1。

字节中的位数为8.因此位掩码为7或0b111。将此应用于10(0x1010),您到达0x10又称2.这是您的班次金额。