位屏蔽(javascript):如何检查所有标志

pis*_*hio 4 javascript bit-manipulation bitmask bitwise-operators masking

如果我有数字'00001000'和掩码'00101000',我如何通过二进制操作检查数字中的两个位是否都已设置?number & mask如果至少有一位匹配则返回true,但我需要检查所有匹配项.如何?

Poi*_*nty 7

只是比较面具:

if (number & mask === mask) {
  // all bits are set!
}
Run Code Online (Sandbox Code Playgroud)

&操作结果与掩码值完全相同的唯一方法是当数字设置了所有位时.(测试编号可能设置了更多位;如果要检查它是否设置了相同的位并且未设置,那么这是一个简单的相等测试.)

  • 我想你必须在“(number & mask)”两边加上括号,否则首先执行相等测试 (2认同)