gpt4 book ai didi

javascript - 在 javascript 中使用位运算符

转载 作者:行者123 更新时间:2023-12-04 18:45:49 27 4
gpt4 key购买 nike

我正在用 javascript 创建一个位掩码。它适用于第 0 位到第 14 位。当我仅将第 15 位设置为 1 时。它产生“-2147483648”的整数值,而不是“2147483648”。我可以在这里通过返回硬编码“2147483648”来做一个特殊情况的黑客攻击第 15 位,但我想知道正确的做法。

示例代码:

function join_bitmap(hex_lower_word, hex_upper_word)
{
var lower_word = parseInt(hex_lower_word, 16);
var upper_word = parseInt(hex_upper_word, 16);
return (0x00000000ffffffff & ((upper_word<<16) | lower_word));
}

当 hex_lower_word 为“0x0”且 hex_upper_word 为“0x8000”而不是 2147483648 时,上述代码返回 -2147483648

最佳答案

这是因为 Javascript 的位移操作使用有符号的 32 位整数。所以如果你这样做:

0x1 << 31   // sets the 15th bit of the high word

它将符号位设置为 1,表示负数。

另一方面,不是位移,而是乘以 2 的幂,你会得到你想要的结果:
1 * Math.pow(2, 31)

关于javascript - 在 javascript 中使用位运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14694082/

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