我的课本上说
“按位与运算符 & 通常用于屏蔽某些位集,例如 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
在一个月输入08
or 时失败的原因09
,除非您明确指定基数为 10。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句