gpt4 book ai didi

javascript - 为什么两个相同值的按位与产生不同的值?

转载 作者:行者123 更新时间:2023-11-29 16:48:21 24 4
gpt4 key购买 nike

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

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

结果是-2be22480,但我期待的是0xd41ddb80

这种行为的原因可能是什么?

最佳答案

来自 MDN

The operands of all bitwise operators are converted to signed 32-bit integers in two's complement format.

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

console.log(0xd41ddb80)


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

-736240768 的 base-16 等效项是 -2be22480,这就是您所看到的。

对于任何大于或等于 0x80000000 的数字,您都可以观察到类似的行为。

关于javascript - 为什么两个相同值的按位与产生不同的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38356644/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com