2011-10-20 64 views

回答

6

1^3的情況下,XOR運算做一些二進制的東西拿到2

1 = 00000001^
    3 = 00000011 
     ======== 
     00000010 = 2 

的JavaScript看到數組語法[x,y]NaN當你開始做的數學-Y的東西它。當你做就可以了位運算NaN被解釋爲0,所以foobar數學變得有意義考慮到這一點:

foo => NaN = 00000000^
bar => NaN = 00000000 
      ======== 
      00000000 = 0 

foo => NaN = 00000000^
     3 = 00000011 
      ======== 
      00000011 = 3 

這似乎是成立的。 [1,2]^7 = 7[1,2,3]^9 = 9

+3

XOR與foo&bar有什麼關係? – hungryMind

+0

@hungryMind:'+ [1,2]'是'NaN','NaN^3'是'3',因爲'NaN'將在11.10節定義的ToInt32操作中轉換爲'0'的ECMAScript規範。 – pimvdb

+0

這就是他期待我的想法。任何人都可以輕鬆地找到XOR的細節,但是陣列和數字之間的運算符是他關心的問題。謝謝澄清 – hungryMind

1

其所謂的位運算符之一,它對待它們的操作數爲32個比特(零和一),而不是作爲十進制,十六進制或八進制numbers.Bitwise XOR(一個^ B的序列)在每個位的位置返回一個,其中兩個操作數的對應位都不是1。

編輯:

a b a XOR b 
0 0 0 
0 1 1 
1 0 1 
1 1 0 

9 (base 10) = 00000000000000000000000000001001 (base 2) 
14 (base 10) = 00000000000000000000000000001110 (base 2) 
        -------------------------------- 
14^9 (base 10) = 00000000000000000000000000000111 (base 2) = 7 (base 10) 
+0

我認爲你至少應該說明你從哪裏拷貝/粘貼了這個。 – pimvdb

+0

我不介意,但你的句子看起來不漂亮。無論如何,令人驚訝的是,他們把你的書中的完全相同的例子和句子放在https://developer.mozilla.org/en/JavaScript/Reference/Operators/Bitwise_Operators :) – pimvdb

+0

@ pimvdb,對不起,在我最近的評論中這樣說但我在我的講師給出的一本書中看到過。 –