^在javascript中的行为

时间:2014-06-02 11:36:37

标签: javascript

alert(15^2) - 行为alert(15-2),提醒13
alert(15^10) - 行为alert(15-10),提醒5

如果第二个数字较小,它会从第一个数字中减去第二个数字 但如果第二个数字较大,例如

alert(15^16),它将它们相加,行为为alert(15+16)并提醒31

alert(15^3^4)表现为alert(15-3-4),因此会提醒8。

虽然

alert(15^3^2)表现为alert(15-3+2),因此会提醒14。

有人能解释一下这种行为吗?

2 个答案:

答案 0 :(得分:7)

它被称为异或。对于每个数字的每个位,如果两者都不同,则输出1。

1 XOR 0 = 1
0 XOR 1 = 1
1 XOR 1 = 0
0 XOR 0 = 0

所以当你正在进行操作15^2时:

1111 XOR
0010
----
1101

这看起来像是减法,但仅针对那些特殊情况。

与多次案例一样,例如15^3^4 = (15^3)^4,因此您首先计算15^3,然后计算结果为4:

1111 XOR (15)
0011     (3)
----
1100     (12)

然后:

1100 XOR (12)
0100     (4)
----
1000     (8)

因此,15^3^4 = 8

答案 1 :(得分:1)

这是你正在做的按位异或操作,而不是权力。

根据MDN:

  

在每个位的位置返回一个,其中任一个但不是两个操作数的相应位都是1。

在javascript中,您可以使用Math.pow进行数学运算。

所以

alert(Math.pow(15, 2))

显示值为225的消息框。