运营商“^”的目的是什么?

时间:2011-10-20 12:25:53

标签: javascript syntax

  

可能重复:
  What does the ^ operator do?

>>> var foo = [1,2]
>>> var bar = [3,4]
>>> foo ^ bar
0
>>> foo ^ 3
3
>>> 1^3
2

运营商的目的是什么:^?

编辑1:你能解释原因吗

>>> foo ^ bar
0

3 个答案:

答案 0 :(得分:6)

1^3的情况下,XOR运算符执行一些二进制操作以获得2。

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

当您开始使用数学运算时,JavaScript会将数组语法[x,y]视为NaN。当您对其进行按位操作时,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

答案 1 :(得分:3)

答案 2 :(得分:1)

它被称为Bitwise运算符之一,它将它们的操作数视为32位(零和1)的序列,而不是十进制,十六进制或八进制数.Bitwise XOR(a ^ b)每位返回一个两个操作数的相应位而不是两个操作数的位置。

编辑:

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)