【问题标题】:Is Number.MAX_SAFE_INTEGER has value of (2^53 - 1) in 32-bit computer [duplicate]Number.MAX_SAFE_INTEGER 在 32 位计算机中的值为 (2^53 - 1) [重复]
【发布时间】:2021-10-28 15:46:55
【问题描述】:

MDN Web Docs 是指Number.MAX_SAFE_INTEGER 常量代表 JavaScript 中的最大安全整数,其值为 2^53 - 1

我的问题:Number.MAX_SAFE_INTEGER32 位 计算机中也有(2^53 - 1) 的值吗?

如果是,它具有相同的值,JavaScript 如何将这个数字 (2^53 - 1) 存储在 32 位中?!

【问题讨论】:

  • 是的。多字节,多指令
  • 根据语言规范,数字是 64 位双精度浮点值。在 32 位 CPU 上符合标准的 JavaScript 实现必须以某种方式处理这个问题。如何?这取决于实施者。
  • 另外,你为什么在乎?您是否遇到了一些具体问题?
  • 计算机支持双精度浮点已有几十年了,早在 64 位处理器出现之前。它们只是将它们存储在两个 32 位字中。

标签: javascript computer-science bit 32bit-64bit


【解决方案1】:

是的。所有 JavaScript Numbers 都使用 IEEE 754 binary64(A.K.A. 双精度浮点)表示。 这种格式占用 64 位空间,但大多数现代 32 位处理器本身就支持它,即使不支持,也可以在软件中实现浮点运算。

32位处理器中的“32位”指的是word大小

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-10-09
    • 2011-02-25
    • 2019-02-14
    • 1970-01-01
    • 2012-07-02
    • 1970-01-01
    相关资源
    最近更新 更多