【问题标题】:New to Javascript [duplicate]Javascript新手[重复]
【发布时间】:2017-03-02 00:55:43
【问题描述】:

我正在尝试使用 javascript 中的二进制搜索来查找数组元素,但我遇到了这段代码。我刚开始学习 javascript 一个星期。字符“|”是什么意思这句话的意思

while (init_num <= last_num) {
            mid_point = (init_num + last_num) / 2 | 0;
}

【问题讨论】:

  • init_num 是数组第一个元素的索引,last_num 是每次循环搜索的数组最后一个元素的索引

标签: javascript


【解决方案1】:

这是bitwise OR operator。但是它在那里所做的是使用副作用来使可能有小数部分的数字变成整数。

JavaScript 中的所有数字都是浮点数,因此(init_num + last_num) / 2 可能有小数部分。当您将按位运算符应用于数字时,它会暂时强制转换为 32 位整数,丢失任何小数部分。由于 OR 运算符的结果为任一操作数上设置的任何位设置了一个位,并且由于示例中的第二个操作数为 0(所有位关闭),因此结果与左侧操作数的位模式相同(然后变回浮点数)。

【讨论】:

    【解决方案2】:

    管道是按位或。

    按位运算符的一种用途是数值转换,因为有时它们比它们的 Math 或 parseInt 等价物快得多。您付出的代价是一些代码可读性。

    更多信息可以在这里找到:

    https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Operators/Bitwise_Operators

    【讨论】:

      【解决方案3】:

      | 代表OR 例如:x = 5 | 1 0101 | 0001 0101 = 5

      也看看这个:js comparisons

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-12-24
        • 1970-01-01
        • 2015-11-02
        • 2011-12-12
        • 2012-06-30
        • 1970-01-01
        • 2015-04-23
        • 2014-02-20
        相关资源
        最近更新 更多