gpt4 book ai didi

javascript - 意外的右移运算符行为

转载 作者:行者123 更新时间:2023-11-28 18:37:55 24 4
gpt4 key购买 nike

请查看以下 Node.js REPL 输出:

> n=10
10
> console.log(n.toString(2)); //ok ?
1010
undefined
> m=n>>1
5
> console.log(m.toString(2)); //cool :)
101

这正在按预期工作。现在看看这个:

> n=Number.MAX_VALUE
1.7976931348623157e+308
> m=n>>1
0
> n.toString(16) // to read easier
'fffffffffffff800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000'
> m.toString(16) // to read easier
'0'

这里刚刚发生了什么?我不应该右移

fffffffffffff800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000

按 1 位数字给我

7ffffffffffffc00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 00000000000

我怎么得到零?

此外,我注意到这不仅仅是 V8/Node 问题。我在 Firebug 中得到了相同的结果。

最佳答案

Javascript 的位级运算仅适用于 32 位有符号值(或在零扩展 >>> 运算符的情况下为无符号值)。在位操作发生之前,高于 32 位的任何内容都将设置为零。

关于javascript - 意外的右移运算符行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36706302/

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