Javascript 为什么两个相同值的按位AND产生不同的值?

Javascript 为什么两个相同值的按位AND产生不同的值?,javascript,bitwise-operators,bitwise-and,Javascript,Bitwise Operators,Bitwise And,我注意到在JS中使用按位AND运算符有一种奇怪的行为: console.log((0xd41ddb80&0xd41ddb80).toString(16))From 所有按位运算符的操作数都转换为2的补码格式的有符号32位整数 当解释为有符号32位整数时,值0xd41ddb80表示数字-736240768。在此数字上使用任何按位运算符都会将其强制为有符号32位整数: console.log(0xd41ddb80) console.log(~~0xd41ddb80) console.log(0x

我注意到在JS中使用按位AND运算符有一种奇怪的行为:

console.log((0xd41ddb80&0xd41ddb80).toString(16))
From

所有按位运算符的操作数都转换为2的补码格式的有符号32位整数

当解释为有符号32位整数时,值
0xd41ddb80
表示数字
-736240768
。在此数字上使用任何按位运算符都会将其强制为有符号32位整数:

console.log(0xd41ddb80)
console.log(~~0xd41ddb80)
console.log(0xd41ddb80和0xffffffff)
console.log(0xd41ddb80 | 0)