【问题标题】:What is | operator in javascript? [duplicate]什么是| javascript中的运算符? [复制]
【发布时间】:2014-03-24 00:24:29
【问题描述】:

我在浏览器控制台上检查某些内容时不小心使用了 | 而不是 || ( OR )。

这个操作符的功能是什么?我做了一些谷歌搜索,但没有任何相关内容。

2 | 4
6
1 | 2
3
4 | 5
5
8|10
10
8 | 10
10
10 | 8
10
2 || 4
2

【问题讨论】:

标签: javascript operators


【解决方案1】:

它是按位或。 如果设置了两个位中的一个,它会逐位检查输出位设置 (1) 的两个操作数中的每个位。

例如:var test = 5 | 3

5 -> 101(这里忽略前导零)

3 -> 011

那么测试将是 7 (111)

【讨论】:

    【解决方案2】:

    | (按位或)

    对每对位执行 OR 运算。如果 a 或 b 为 1,则 a OR b 的结果为 1。事实 OR 运算的表是:

    a   b   a OR b
    0   0   0
    0   1   1
    1   0   1
    1   1   1
    
    
         9 (base 10) = 00000000000000000000000000001001 (base 2)
        14 (base 10) = 00000000000000000000000000001110 (base 2)
                       -------------------------------- 
    14 | 9 (base 10) = 00000000000000000000000000001111 (base 2) = 15 (base 10)
    

    将任意数 x 与 0 进行按位或运算得到 x。

    将任意数字 x 与 -1 进行按位或运算得到 -1。

    来源MDN

    【讨论】:

      【解决方案3】:

      二进制或

      0 或 0 -> 0

      0 或 1 -> 1

      1 或 0 -> 1

      1 或 1 -> 1

      (容易记住 - 0 OR 0 给出 0。任何其他情况给出 1)

      如果你有例如4 |二进制形式的 1 -> 4 是 100,1 是 001。然后 100 | 001 -> 101(或十进制的 5)

      此外,逻辑 OR (||) 仅处理您的左右值以及 1 和 0,其工作原理与上述相同。

      【讨论】:

        【解决方案4】:

        该 |是按位或而不是布尔或 ||

        这意味着它将对每个位进行 OR 运算,例如 2 是二进制 10,4 是二进制 100,结果为 110。

        如果你用二进制数计算上面的所有结果,你会看到。

        这对于位掩码或评估标志很有用。如果您在靠近硬件的地方进行编程,则在设置寄存器位或在通信时解析协议数据时经常会发现这一点。

        if (myVar | 0x2 > 0) {
          // Bit two is set!
        }
        

        当然还有其他用途。

        还有一个按位与 & 以相同的方式工作,但与位相加。

        【讨论】:

          【解决方案5】:

          虽然 ||是布尔逻辑或 |是按位或。

          4 I 5 = 100 | 101 = 101 = 5
          

          【讨论】:

          • 现在我想知道为什么我的回答被否决了。简短但正确。
          猜你喜欢
          • 2017-06-09
          • 2016-08-28
          • 2012-12-29
          • 2019-07-01
          • 2011-05-30
          • 2011-08-08
          • 2016-07-24
          • 2014-03-07
          • 1970-01-01
          相关资源
          最近更新 更多