number=eval("2" +"2*3^2") ,number为啥是64

初学者问一个问题,number=eval("2" +"2*3^2") ,number为啥是64

number=eval("2" +"2*3^2") 
也就是
number=eval("22*3^2") 
也就是
66 xor 2
1000010
xor
0000010
=
1000000
也就是64
^是xor不是乘方(相同为0,不同为1)


experation = "2"+"2*3^2"
experation = '22*3^2'
number = eval(experation)
number = 64

没毛病,注意括号里面是字符串拼接,变成了

22* 3 ^ 2,

^ 符号运算符为按位异或,

66 ^ 2

100 0010 ^ 00 0010

结果为:
100 0000 = 64;