Javascript 运营商的目的是什么^&引用;?
可能重复:Javascript 运营商的目的是什么^&引用;?,javascript,syntax,Javascript,Syntax,可能重复: 操作员的目的是什么:^ 编辑1:你能解释一下原因吗 >>> foo ^ bar 0 ?在1^3的情况下,XOR运算符执行一些二进制操作以获得2 1 = 00000001 ^ 3 = 00000011 ======== 00000010 = 2 JavaScript将数组语法[x,y]视为NaN当您开始使用它进行数学运算时NaN被解释为0,因此foo和bar数学开始有意义,考虑到这一点: foo => NaN
操作员的目的是什么:^ 编辑1:你能解释一下原因吗
>>> foo ^ bar
0
?在
1^3
的情况下,XOR运算符执行一些二进制操作以获得2
1 = 00000001 ^
3 = 00000011
========
00000010 = 2
JavaScript将数组语法[x,y]
视为NaN
当您开始使用它进行数学运算时<当您对其执行位操作时,code>NaN被解释为0
,因此foo
和bar
数学开始有意义,考虑到这一点:
foo => NaN = 00000000 ^
bar => NaN = 00000000
========
00000000 = 0
foo => NaN = 00000000 ^
3 = 00000011
========
00000011 = 3
这似乎是正确的<代码>[1,2]^7=7,
[1,2,3]^9=9
,等等。它被称为位运算符之一,它将操作数视为32位(0和1)的序列,而不是十进制、十六进制或八进制数。位异或(a^b)在每个位位置返回一个1,其中一个操作数(而不是两个操作数)的对应位为1
编辑:
而且
9 (base 10) = 00000000000000000000000000001001 (base 2)
14 (base 10) = 00000000000000000000000000001110 (base 2)
--------------------------------
14 ^ 9 (base 10) = 00000000000000000000000000000111 (base 2) = 7 (base 10)
这是按位异或运算符..用foo和bar进行异或怎么样?@hungryMind:
+[1,2]
是NaN
,NaN^3
是3
,因为在ECMAScript规范第11.10节定义的ToInt32
操作中,NaN
将被转换为0
。我想这是他期待的答案。任何人都可以很容易地找到XOR的细节,但数组和数字之间的运算符是他关心的问题。谢谢你clarification@pimvdb:谢谢,我会更新我的例子。我想你至少应该说明你从哪里复制/粘贴的。我不介意,但是你的句子读起来不太好。无论如何,令人惊讶的是,他们把你书中完全相同的例子和句子放在:)@pimvdb上,很抱歉在我最后的评论中这样说,但我在讲师给我的一本书中看到了。
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)