我试图在javascript中使用二进制搜索来查找数组元素,我偶然发现了这段代码。我现在才刚开始学习javascript一个星期。字符"|“在此语句中是什么意思
while (init_num <= last_num) {
mid_point = (init_num + last_num) / 2 | 0;
}发布于 2016-10-20 14:55:02
这是个bitwise OR operator。但它所做的是使用副作用来使一个可能有小数部分的数字变成一个整数。
JavaScript中的所有数字都是浮点数,因此(init_num + last_num) / 2可能包含小数部分。当您将按位运算符应用于一个数字时,它会被临时强制转换为32位整数,丢失所有小数部分。由于OR运算符的结果为任一操作数上的任何位设置了位,并且由于示例中的第二个操作数为0(所有位都关闭),因此结果是与左操作数相同的位模式(然后将其转换回浮点数)。
发布于 2016-10-20 14:55:03
管道是按位or。
位运算符的一种用途是数值转换,因为有时它们比Math或parseInt等效运算符快得多。你付出的代价是代码的可读性。
更多信息可以在这里找到:
https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Operators/Bitwise_Operators
发布于 2016-10-20 14:57:34
|代表OR example:x = 5 | 1 0101 | 0001 0101 = 5
还可以看看这个:js comparisons
https://stackoverflow.com/questions/40147399
复制相似问题