我需要执行按位操作(或系列),以便:
0 1 = 0
1 1 = 1
1 0 = 0
到目前为止AND(&)工作正常,但我也需要
0 0 = 1
这里AND(&)不正确。
我在jquery grep函数中使用它,其中包含:
jQuery.grep(json, function (e, index) {
return (e.value & (onoff << 3)) != 0;
});
其中onoff可以是1或0而e.value是4比特字符串的表示(即可以是“1001”)。在上面的例子中,我正在测试左边的第一位(&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt; 3
这可以用AND,OR,XOR系列来完成吗?
答案 0 :(得分:7)
这只是XNOR(a, b)
,等于NOT(XOR(a, b))
,即与输出反转的异或。在C和C类语言中,这将是:
!(a ^ b)
或在您的具体案例中:
return !((e.value >> 3) ^ onoff);
话虽如此,你可以测试平等:
return (e.value >> 3) == onoff;
答案 1 :(得分:0)
这看起来大致像XOR,其结果如下:
0 0 = 0
0 1 = 1
1 0 = 1
1 1 = 0
现在你想要反过来,这意味着如果两个输入都是相同的值你想要1
。这导致我们NOT XOR
0 0 = 1
0 1 = 0
1 0 = 0
1 1 = 1