如果两者都为0,则按位运算得到1

Pie*_*tro 0 bit-manipulation

我需要执行按位操作(或系列),以便:

0 1 = 0
1 1 = 1
1 0 = 0
Run Code Online (Sandbox Code Playgroud)

到目前为止AND(&)工作正常但我也需要它

0 0 = 1
Run Code Online (Sandbox Code Playgroud)

这里AND(&)不正确.

我在jquery grep函数中使用它,该函数读取:

jQuery.grep(json, function (e, index) {
            return (e.value & (onoff << 3)) != 0;
        });
Run Code Online (Sandbox Code Playgroud)

其中onoff可以是1或0,而e.value是4位字符串的表示(即可以是"1001").在上面的例子中,我正在测试左边的第一位(<< 3).

这可以通过AND,OR,XOR系列完成吗?

Pau*_*l R 7

这只是XNOR(a, b),等于NOT(XOR(a, b)),即反转输出的异或.在C和C类语言中,这将是:

!(a ^ b)
Run Code Online (Sandbox Code Playgroud)

或在您的具体情况下:

return !((e.value >> 3) ^ onoff);
Run Code Online (Sandbox Code Playgroud)

话虽如此,你可以测试平等:

return (e.value >> 3) == onoff;
Run Code Online (Sandbox Code Playgroud)