`(sum & operand) === operand` 在以下代码中如何工作? (按位与)
How does `(sum & operand) === operand` work in the following code? (Bitwise And)
下面的代码检查sum
是否有operand
,代码很简单,但是我被条件(sum & operand) === operand
搞糊涂了。
我看了Bitwise AND (&)文档,更加迷惑了,谁能简单解释一下?
const has = (sum, operand) => (sum & operand) === operand
console.log(has(7, 4))
这种代码通常在您使用 bitflags 时使用。本质上,您想检查 operand 位是否也在 sum 中设置。
7的二进制表示是00000111
,而4的二进制表示是00000100
.
通过执行按位与运算 A & B
,您“保留”了两者之间相同的位,同时将所有其他位设置为 0。再次将结果与 B
进行比较,您会发现如果在 B
中设置的所有位也在 A
中设置。
下面的代码检查sum
是否有operand
,代码很简单,但是我被条件(sum & operand) === operand
搞糊涂了。
我看了Bitwise AND (&)文档,更加迷惑了,谁能简单解释一下?
const has = (sum, operand) => (sum & operand) === operand
console.log(has(7, 4))
这种代码通常在您使用 bitflags 时使用。本质上,您想检查 operand 位是否也在 sum 中设置。
7的二进制表示是00000111
,而4的二进制表示是00000100
.
通过执行按位与运算 A & B
,您“保留”了两者之间相同的位,同时将所有其他位设置为 0。再次将结果与 B
进行比较,您会发现如果在 B
中设置的所有位也在 A
中设置。