>>> var foo = [1,2]
>>> var bar = [3,4]
>>> foo^bar
0
>>> foo^3
3
>>> 1^3
2
什么是运营商的目的:^?
编辑1:你能解释为什么
>>> foo^bar
0
?
>>> var foo = [1,2]
>>> var bar = [3,4]
>>> foo^bar
0
>>> foo^3
3
>>> 1^3
2
什么是运营商的目的:^?
编辑1:你能解释为什么
>>> foo^bar
0
?
在1^3
的情况下,XOR运算做一些二进制的东西拿到2
1 = 00000001^
3 = 00000011
========
00000010 = 2
的JavaScript看到数组语法[x,y]
为NaN
当你开始做的数学-Y的东西它。当你做就可以了位运算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
等
XOR与foo&bar有什么关系? – hungryMind
@hungryMind:'+ [1,2]'是'NaN','NaN^3'是'3',因为'NaN'将在11.10节定义的ToInt32操作中转换为'0'的ECMAScript规范。 – pimvdb
这就是他期待我的想法。任何人都可以轻松地找到XOR的细节,但是阵列和数字之间的运算符是他关心的问题。谢谢澄清 – hungryMind
其所谓的位运算符之一,它对待它们的操作数为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)
它是XOR运算 – AmGates
https://developer.mozilla.org/en/JavaScript/Reference/Operators/Bitwise_Operators#.5E_( Bitwise_XOR) –
这是按位异或运算符.. – Nikoloff