gpt4 book ai didi

javascript - 在 javascript 中设置第 31 位是否正确?

转载 作者:搜寻专家 更新时间:2023-11-01 05:10:20 25 4
gpt4 key购买 nike

当我尝试设置 31 位时 0 | 1 << 31我得到以下结果:

console.log(0 | 1 << 31); // -2147483648

实际上是:

console.log((-2147483648).toString(2)) // -10000000000000000000000000000000

设置 31 位是否正确,或者我应该限制为 30以防止负值?

最佳答案

引用 ECMA5 按位运算符和移位运算符对 32 位整数进行运算,因此在这种情况下,最大安全整数为 2^31-1,即 2147483647。

这是一个explanation .

The << operator is defined as working on signed 32-bit integers (converted from the native Number storage of double-precision float). So 1<<31 must result in a negative number.

The only JavaScript operator that works using unsigned 32-bit integers is >>>. You can exploit this to convert a signed-integer-in-Number you've been working on with the other bitwise operators to an unsigned-integer-in-Number:

(1<<31)>>>0

关于javascript - 在 javascript 中设置第 31 位是否正确?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34896909/

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