用外行人的话说,什么是按位|运算符在Javascript中运行,为什么:
8 | 1 ; //9
答案 0 :(得分:7)
8 in binary = 1000
1中的二进制= 0001
如果你取每个二进制数字并将它们视为if语句(1为真,0为假),你得到这个:
1 || 0 = 1
0 || 0 = 0
0 || 0 = 0
0 || 1 = 1
,结果为1001,十进制为9
如果是8& 1,它会是这样的:
1 && 0 = 0
0 && 0 = 0
0 && 0 = 0
0 && 1 = 0
,结果为0
以下是您如何使用这些内容的简单示例:
如果你想组合面具,你可以使用OR运算符 -
使用文件权限的示例,您可能会有以下标志:
1st bit - execute (bin - 001, dec - 1)
2nd bit - write (bin - 010, dec - 2)
3rd bit - read (bin - 100, dec - 4)
如果您想创建一个用于阅读和执行的掩码,您可以使用read value | execute value
1 | 4
这样的内容5
,它会为您提供&
(101 in bin)< / p>
现在您有了一个掩码,您可以使用{{1}}运算符检查文件的权限以查看它是否具有这两种权限:
示例文件1(具有读,写和执行)
其许可值为7(bin中为111):111&amp; 101 = 101,所以它确实有那些烫发
示例文件2(已读取和写入)
它的许可值是6(箱中110):110&amp; 101 = 100,因此它只有掩码中提供的两个(4个十进制)烫发(读取)
答案 1 :(得分:2)
|
运算符是按位OR。
8(基数10)为1000(基数2;二进制)。 1是0001
所以,8 | 1(基数10)等于1000 | 0001二进制,为1001二进制,为9(基数为10)。
答案 2 :(得分:2)
计算机上的所有值都以二进制格式存储在硬件上。
1 = 0001
2 = 0010
3 = 0011
4 = 0100
etc.
|
是OR操作符,它组合了两个值的所有位:
8 - 1000
1 = 0001
--------
9 = 1001
答案 3 :(得分:1)
嗯,在你的例子中,采用二进制表示:
8 = 0b1000
1 = 0b0001
然后对每个位应用逻辑OR(因此为“按位”):对于每个位,如果其中一个,另一个或两者都是1,那么结果为1,否则结果为0.。
8|1 = 0b1001
这是9。
答案 4 :(得分:1)
它采用两个数字的二进制表示,并找到它们之间的联合(“或”)。
考虑你给的两个:
binary(8) = 1000
binary(1) = 0001
因此,如果第一个数字(8)或第二个数字(1)中的位为1,或者两者中的位数均为1,那么它将被结转到结果中。
所以,8 | 1 = 9
,因为二进制中的1001
是“或”操作的结果,并且是十进制的9