2012-01-10 35 views
0

我需要進行位操作(或系列),這樣:位運算得到1,如果兩者都是0

0 1 = 0 
1 1 = 1 
1 0 = 0 

到目前爲止AND(&)工作正常,但我還需要一個

0 0 = 1 

這裏和(&)是不正確的。

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

其中ONOFF可以爲1或0和e.value是一個4個比特串的表示(即,可以是「1001:

我在一個jquery grep的功能,讀取使用它「)。在上面的例子中,我正在測試左邊的第一位(< < 3)。

可以這樣用的意甲AND,OR,XOR做了什麼?

+0

有一個對方的回答(已被刪除),你需要簡單地平等''==操作符,它是罰款嗎? – sll 2012-01-10 16:08:32

回答

7

這只是XNOR(a, b),其等於NOT(XOR(a, b)),即異或倒置的輸出。在C和C類語言,這將是:

!(a^b) 

或在您的具體情況:

return !((e.value >> 3)^onoff); 

說了這麼多,你可以只測試相等:

return (e.value >> 3) == onoff; 
+0

AKA按位相等或iff。 – 2012-01-10 16:07:56

+0

@larsmans:確實是 - 我只是添加此 – 2012-01-10 16:13:59

+0

OP要求只AND,OR,和XOR。 NOT顯然不是一個選項:-)我不能想想辦法...... – Celada 2012-01-10 16:14:09

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 
相關問題