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。
有人能解释一下这种行为吗?
答案 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
的消息框。