Javascript 在本例中,为什么按位运算符或截断值?

Javascript 在本例中,为什么按位运算符或截断值?,javascript,bit-manipulation,bitwise-operators,Javascript,Bit Manipulation,Bitwise Operators,对于按位OR运算符,可以这样说: “按位或:在两个操作数的对应位均为零的每个位位置返回一个零。” 但是,当操作数b为1时,按位运算符或以下示例中的运算符向上取整a。这是我无法理解的。另外,由于a返回一个非舍入的数字,我也不清楚按位运算符如何将其截断为两位数 var a = Math.random()*100; console.log(a); console.log(a | 1); 非常欢迎有见地的解释。这里隐藏的因素是位运算符在应用之前将数字转换为整数。这就是这个数字四舍五入的原因。该类型转换

对于按位OR运算符,可以这样说:

“按位或:在两个操作数的对应位均为零的每个位位置返回一个零。”

但是,当操作数b为1时,按位运算符或以下示例中的运算符向上取整
a
。这是我无法理解的。另外,由于
a
返回一个非舍入的数字,我也不清楚按位运算符如何将其截断为两位数

var a = Math.random()*100;
console.log(a);
console.log(a | 1);

非常欢迎有见地的解释。

这里隐藏的因素是位运算符在应用之前将数字转换为整数。这就是这个数字四舍五入的原因。该类型转换将截断任何小数部分

然后,按位OR本身简单地将第一位设置为1。因此,根据截断后的奇数还是偶数,可以将截断数增加1,也可以不增加1


因此,它并不是在所有情况下都进行取整,只有50%的时间。

从您链接的页面上可以看到:“操作数被转换为32位整数,并由一系列位(0和1)表示。”取整是转换过程的一部分。@RaymondChen.:现在不读了,谢谢!您是否有机会推荐一种资源来更深入地详细说明这个过程?@gnzg有关详细信息,请参阅JavaScript语言规范。副本中有一个指向它的链接。