javascript - 双 64 位中最小值的位模式是什么

标签 javascript floating-point ieee-754

我假设可以放入双 float 的最小正值是这个

0 0000000000 00000000000000000000000000000000000000000000000000000

科学形式是这样的:

1 x 2^{-1023}

然而,this article指出:

As mentioned above, zero is not directly representable in the straight format, due to the assumption of a leading 1 (we'd need to specify a true zero mantissa to yield a value of zero). Zero is a special value denoted with an exponent field of all zero bits, and a fraction field of all zero bits.

那么最小正值的模式是什么?

最佳答案

当指数部分全为零时,数字是次正规数非正规数,其中隐含数字是0而不是1。因此

0 00000000000 0000000000000000000000000000000000000000000000000000

为零,下一个数

0 00000000000 0000000000000000000000000000000000000000000000000001

是最小的正数,等于

0.00000000000000000000000000000000000000000000000000012×2-1022 = 2-1074 ≈ 5.0×10-324

更新:为什么指数是 -1022,而偏差是 1023?次正规的指数与第一个 binade 相同正常 float (所以 1-1023 = 1022)。这是为了使传播是连续的,即最大的次正规是

0.1111111111111111111111111111111111111111111111111112×2-1022

和下一个 float (最小法线):

1.00000000000000000000000000000000000000000000000000002×2-1022

关于javascript - 双 64 位中最小值的位模式是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39944832/

相关文章:

javascript - Flux:具有相同存储、不同状态的多个容器

java - Double.isNaN() 是如何工作的?

haskell - haskell浮点计算异常?

不使用 IEEE754 float 的 C++ 编译器/平台

javascript - 如何将外部 PHP 文件包含到 Joomla 文章中?

javascript - Node.js 中的批处理请求

C数学不尊重声明的常量

java - NaN 的总和 : How is the underlying bit pattern calculated?

iphone - iPhone 上的 double 与 float

javascript - 在聚类向量和非聚类向量上使用样式