首页 > 解决方案 > 使用位操作的位掩码 &

问题描述

我的教科书说

“按位与运算符 & 通常用于屏蔽某些位集,例如 n = n & 0177;除了 n 的低 7 位之外,所有位都设置为零。”

但是,根据我的理解,0177 的二进制形式是 101010001,所以操作 n =n & 0177 应该保留 n 的第 1、5、7 和 9 位,并将所有其他位设置为零。

谁能指出我理解这一点的错误在哪里?

标签: bit-manipulationbit

解决方案


除了 0177 的二进制表示之外,我相信您的理解是正确的。如果这是一个十进制数,它将是 01111111,如果它是十六进制(我怀疑它是),不要忘记 0x 前缀!然后是 101110111 所以它会保留不同的位。不确定你从哪里得到 101010001。如果这没有意义,请告诉我。


推荐阅读