【问题标题】:What is the purpose of the operator "^"? [duplicate]运算符“^”的目的是什么? [复制]
【发布时间】:2011-12-11 18:16:51
【问题描述】:

可能重复:
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

?

【问题讨论】:

标签: javascript syntax


【解决方案1】:

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

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

当您开始使用它进行数学运算时,JavaScript 会将数组语法 [x,y] 视为 NaNNaN 被解释为 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

【讨论】:

  • 用 foo & bar 进行异或运算怎么样?
  • @hungryMind: +[1,2]NaNNaN ^ 33,因为NaN 将在11.10 节中定义的ToInt32 操作中转换为0 ECMAScript 规范。
  • 我想这就是他所期待的答案。任何人都可以很容易地找到 XOR 的细节,但数组和数字之间的运算符是他关心的。感谢您的澄清
  • @pimvdb:谢谢你,我会更新我的例子。
【解决方案2】:

它被称为位运算符之一,它将它们的操作数视为32位(零和一)的序列,而不是十进制,十六进制或八进制数。按位异或(a ^ 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)

【讨论】:

  • 我认为您至少应该说明从哪里复制/粘贴此内容。
  • 我不介意,但你的句子读起来并不漂亮。不管怎样,令人惊讶的是,他们在developer.mozilla.org/en/JavaScript/Reference/Operators/… 上放了你书中完全相同的例子和句子:)
  • @pimvdb,很抱歉在我上次的评论中这么说,但我在讲师给我的一本书中看到过。
【解决方案3】:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-02
    • 2017-06-09
    • 2021-03-28
    • 2014-01-15
    • 2021-11-26
    • 2016-08-28
    相关资源
    最近更新 更多