gnz*_*nzg 3 javascript bit-manipulation bitwise-operators
Mozilla JavaScript 指南对于按位 OR 运算符是这样说的:
“按位或:在两个操作数的相应位均为零的每个位位置返回零。”
但是,当操作数 b 为 1 时,下例中的按位运算符 OR 将向上舍入a
。这是我无法理解的事情。另外,由于a
返回一个非四舍五入的数字,我也不清楚按位运算符如何将其截断为两位数。
var a = Math.random()*100;
console.log(a);
console.log(a | 1);
Run Code Online (Sandbox Code Playgroud)
非常欢迎有见地的解释。
这里隐藏的因素是按位运算符在应用之前将数字转换为整数。这就是数字四舍五入的原因。转换会截断任何小数部分。
然后,按位或本身只是将第一位设置为 1。因此,可能会或可能不会将截断的数字加 1,具体取决于截断后它是奇数还是偶数。
因此,它并不是在所有情况下都进行四舍五入——只是 50% 的情况下进行四舍五入。
归档时间: |
|
查看次数: |
1375 次 |
最近记录: |