我遇到了关于按位运算符的屏蔽是什么的在线解释,但由于使用了我不熟悉的符号而无法完全理解解释。以下是演示:
让我困惑的具体行是“//实际班次是10&(8-1)= 2 “。我得到10是我们想要左移的位数,但是”&“在这种情况下意味着什么,为什么我们减去8-1?
可以在此处找到演示链接:
https://msdn.microsoft.com/en-us/library/8xftzc7e(v=vs.100).aspx
提前致谢。
答案 0 :(得分:0)
答案在您自己的链接备注部分的第二段
中<< operator掩盖expression2以避免表达式1 许多。否则,如果移位量超过了位数 表达式1的数据类型,所有原始位都将被移位 离开给一个微不足道的结果。确保每个班次离开 至少有一个原始位,移位运算符使用以下内容 计算实际移位量的公式:mask expression2(使用 按位AND运算符),其中一个小于位数 表达式1。
字节中的位数为8.因此位掩码为7或0b111。将此应用于10(0x1010),您到达0x10又称2.这是您的班次金额。