【发布时间】:2018-05-31 13:56:09
【问题描述】:
在float的情况下,IEEE-754 32位单精度格式用于在计算机硬件中存储数字。
这里最高有效位即第 31 位用于表示符号。它是 0 或 1
- 0 表示正数。
- 1 表示负数。
接下来的 8 位,即从第 30 位到第 23 位用于表示指数。它的偏差为 127。
接下来的 23 位,即从第 22 位到第 0 位用于表示尾数。
例如,我们有数字 (35.6)10。
- 对应的二进制数为(100011.1001 1001 1001 ...)2
- 通过标准化我们得到的数字 (1.00011.1001 1001 1001 ... x 25)2
- 我们去掉前导1,把小数点右边的部分放在尾数位中。
- 所以,我们在尾数处输入 00011 1001 1001 1001...
- 将指数 5 添加到偏差 127 我们得到 132
- (132)10的二进制是(10000100)2
- 我们将 10000100 放在指数位置
- 由于 (35.6)10 是正数,我们将 0 放在符号位的位置
因此 (35.6)10 的硬件级表示为
双数使用 IEEE-754 64 位双精度格式表示。
这里是最高有效位,即第 63 位用于表示符号。它是 0 或 1。
接下来的 11 位,即从第 62 位到第 52 位用于表示指数。它的偏差为 1023。
接下来的 52 位,即从第 51 位到第 0 位用于表示尾数。
类似地,十进制数据类型或定点数如何存储在计算机硬件中?
【问题讨论】:
标签: decimal hardware ieee-754 fixed-point