它做了什么?
起初我认为这是做Math.max()
的简便方法
每次我(1 | 0)
或(0 | 2985235)
,我都会收到更大的数字
但是,我错了,因为我在发布这个问题的时候很快就发现了这个问题:
(128|256|0)
未评估为256
的{{1}}。
感谢您的回复。
答案 0 :(得分:3)
|
是bitwise OR运营商。
要查看它的作用,请考虑数字的二进制形式:
128 = 010000000
256 = 100000000
0 = 000000000
结果来自逐位执行OR
384 = 110000000
我猜你可能会在逻辑中遇到这种模式来表示选项。 例如,
128 = option 1
256 = option 2
384 = both option 1 & 2
答案 1 :(得分:2)
|
是Javascript中的按位运算符。因此,在评估这些整数之前,首先将它们转换为二进制。
0 -> 000000000
128 -> 010000000
256 -> 100000000
根据您的数据类型,可能会有更多前面的零。无论如何|
作为按位OR运算符,将从这两个整数中计算每个位。
因此,您将获得110000000的结果,即十进制的384。
P.S。 OR操作:如果其中任何一个成立,则为真。