我想将Go代码更改为Javascript代码,但是关于结果的一个错误是Go和Javascript不同。 我想将javascript的结果更改为与Go的结果相同(0xFFFFFFFF ^ 97)
我尝试对其进行调试,并且我发现Go中的0xFFFFFFFF ^ 97是4294967198,而在javascript中是-98。
在Go中:
number1 := 0xFFFFFFFF
number2 := 97
fmt.Print(number1 ^ number2) // 4294967198
在Java语言中:
var number1 = 0xFFFFFFFF
var number2 = 97
console.log(number1 ^ number2) // -98
0xFFFFFFFF ^ 97在Go和Javascript中是不同的结果
答案 0 :(得分:4)
在JavaScript中,按位操作(^
是按位XOR)将带符号的数字转换为32位整数,然后返回为双精度。因此,在执行XOR操作后,该数字将转换回其默认类型-IEEE-754双精度二进制数字-然后给出结果。
number -> 32-bit signed integer -> bitwise operation -> IEEE-754 double-precision binary number
GoLang使用无符号整数(GoLang spec),或者使用icza指出的int64
数字。