gpt4 book ai didi

javascript - 2的补码和IEEE754有什么关系?

转载 作者:行者123 更新时间:2023-11-29 10:57:55 25 4
gpt4 key购买 nike

我曾经认为所有的数字都以2的补码格式存储在计算机中。并且 2 的补码中没有 -0。但是在IEEE754中,+0和-0都有。我在 JavaScript 中读到,所有数字都是 IEEE754。所以现在我很困惑。更重要的是,在 JavaScript 中,~a = -a -1。以前一直以为是a数2的补码变化引起的。但是,如果 JavaScript 中的每个数字都存储为 IEEE754,我们如何将其转换为 2 的补码?

最佳答案

JavaScript 作弊:它使用 IEEE-754 基本 64 位二进制浮点格式表示数字,但将它们转换为 32 位整数以进行按位运算,然后再转换回来。

JavaScript 是 ECMAScript 的一种实现。 ECMAScript 2018 语言规范(第 9 版,2018 年 6 月)在第 12.5.8 条中指定了一元 ~ 运算符(在目录中显示为 12.5.10,但 12.5 .8 在文本中!)。相关部分是:

UnaryExpression : ~ UnaryExpression1. Let expr be the result of evaluating UnaryExpression.2. Let oldValue be ? ToInt32(? GetValue(expr)).3. Return the result of applying bitwise complement to oldValue. The result is a signed 32-bit integer.

ToInt32 操作将数字 chop 为整数(删除任何小数部分,向零舍入),然后将数字映射到区间 [−231, + 231) 模 232.

关于javascript - 2的补码和IEEE754有什么关系?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53451477/

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