位掩码使用位操作 &

蒙娜丽莎·鲍米克

我的课本上说

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

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

谁能指出我在理解这一点上哪里错了?

汉斯·柯廷

如评论中所述,当 0177 是八进制(基数为 8,每位数 3 位)数字时,它会起作用。

在多种语言(例如 javascript)中,前导 0 表示八进制数:

var n = 0177; // n now contains the decimal value 127

所以八进制 0177 == 二进制 01 111 111 == 十进制 127

而这个(0 前缀表示八进制)也是为什么在 javascript 中 aparseInt在一个月输入08or 时失败的原因09,除非您明确指定基数为 10。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章