2011-10-20 50 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,对不起,在我最近的评论中这样说但我在我的讲师给出的一本书中看到过。 –