我正在浏览器控制台上检查某些内容并意外使用了|
而不是||
(或者)。
此运营商的功能是什么?我做了一些谷歌搜索,但没有任何相关内容。
2 | 4
6
1 | 2
3
4 | 5
5
8|10
10
8 | 10
10
10 | 8
10
2 || 4
2
答案 0 :(得分:3)
按位或。 它会在输出位设置的两个操作数中逐个检查每个位(1)如果设置了两个位中的一个。
例如:var test = 5 | 3
5 - > 101(这里忽略了前导零)
3 - > 011
然后测试将是7(111)
答案 1 :(得分:0)
<强> | (按位OR)
对每对位执行OR运算。如果a或b为1,则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)
按位OR运算任意数字x和0都会产生x。
将任意数字x与-1按位或运算得-1。
来源MDN
答案 2 :(得分:0)
二进制OR
0 OR 0 - &gt; 0
0 OR 1 - &gt; 1
1 OR 0 - &gt; 1
1 OR 1 - &gt; 1
(容易记住 - 0或0给出0.任何其他情况给出1)
如果您有例如4 | 1 - &gt;二进制形式的4是100,1是001.然后是100 | 001 - &gt; 101(或十进制5)
逻辑OR(||)也只是处理你的左右值和1和0,并且工作方式与上面相同。
答案 3 :(得分:0)
|是按位OR而不是布尔OR ||
这意味着它会在每个位上执行OR,如2是二进制10,4是二进制100,结果为110。
如果你用二进制数计算上面的所有结果,你会看到。
这对位掩码或评估标志很有用。如果你编程更接近硬件,你经常会在设置寄存器位或在通信时解析协议数据时找到它。
if (myVar | 0x2 > 0) {
// Bit two is set!
}
当然还有其他用途。
还有一个按位AND&amp;以同样的方式工作但是和比特一样。
答案 4 :(得分:-1)
而||是布尔逻辑或|是一个按位或。
4 I 5 = 100 | 101 = 101 = 5