(计算机组成原理)第二章数据的表示和运算-第三节2:IEEE754标准
Posted 快乐江湖
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了(计算机组成原理)第二章数据的表示和运算-第三节2:IEEE754标准相关的知识,希望对你有一定的参考价值。
一:移码
(1)移码回顾
本节内容涉及移码,有关移码的基础内容请移步
(2)偏置值
前面我们说过:移码是在补码的基础上将符号位取反得到的
其实移码的真正定义为:移码=真值+偏置值,只不过前面的讲述中我们的偏置值取定为了
2
7
=
128
2^{7}=128
27=128,也即1000 0000。所以,假如真值为-127,也即-11111111,那么其所对应的移码就是-11111111+1000000000=0000 0001,其余数值也是这样。
所以表格中显示出的就好像是只是把符号位取反一样
其实,偏置值也是可以设置为其他值的。比如今天我们学习的浮点数当中的IEEE754标准中,就用移码表示阶码,其偏置值取 2 n − 1 − 1 2^{n-1}-1 2n−1−1,也即0111 1111(127)
这样的偏置值就导致移码会产生两个非常特殊的状态:1111 1111和0000 0000(真值-128和-127),它们都对应无符号数255;从真值-126开始,对应无符号数1,一直到无符号数254
二:IEEE 754标准
(1)IEEE 754标准格式
IEEE 754将浮点数分为短浮点数、长浮点数和临时浮点数三类,C语言遵循这个标准,因此它们分别对应float
、double
和long double
- 数符:表示了整个浮点数的正负性
- 阶码:采用移码表示,并且短浮点数的偏置值为127。所以原本8位的移码表示的真值范围为-128~127,但是127的偏置值会使真值-127和-128较为特殊,其移码是全0和全1,全0和全1在该标准具有特殊作用,所以实际上8位的阶码表示真值的范围应该是-126到127
- 尾数:注意采用原码表示。并且我们知道使用原码表示浮点需要进行规格化,也就是最高位格式应该是
1.M
,所以短浮点数这里尾数部分写的虽然是23位,但是实则是24位,一位暗含。
(2)转换方法
我们知道移码等于真值阶码+偏置值,那么自然而然阶码真值=移码-偏置值
因此IEEE 754标准中,规格化的短浮点数和长浮点数的真值分别为:
(
−
1
)
s
×
1.
M
×
2
E
−
127
(-1)^{s}×1.M×2^{E-127}
(−1)s×1.M×2E−127
(
−
1
)
s
×
1.
M
×
2
E
−
1023
(-1)^{s}×1.M×2^{E-1023}
(−1)s×1.M×2E−1023
上式中, s = 0 s=0 s=0表示正数, s = 1 s=1 s=1表示负数
c
a
s
e
:
case:
case:将十进制数-0.75转化为IEEE 754de1单精度浮点数格式表示(十进制转换为浮点数)
答:转换步骤如下
- 将十进制数转化为二进制数并规格化: ( − 0.75 ) 10 → 转 换 为 二 进 制 ( − 0.11 ) 2 → 浮 点 数 规 格 化 ( − 1.1 ) 2 × 2 − 1 (-0.75)_{10} \\xrightarrow{转换为二进制}(-0.11)_{2} \\xrightarrow{浮点数规格化}(-1.1)_{2}×2^{-1} (−0.75)10转换为二进制(−0.11)2浮点数规格化(−1.1)2×2−1
- 确定数符号:可以看出是负数,因此数符为1
- 确定尾数部分:前面说过暗含了高位为1,因此尾数部分是
.100000...
- 确定阶码真值:基数指数部分是-1,因此阶码指针是-1
- 确定偏移值:127
- 确定移码:移码=-1+ 0111 1111=0111 1110(126,注意凑够8位)
- 最终形式(红色是数符,蓝色是阶码,绿色是尾数):1 01111110 10000000000000000000000000000000
c
a
s
e
:
case:
case:IEEE 754的单精度浮点数C0 A0 00 00的值为多少
答:转换步骤如下
- 将十六进制转化为二进制(红色是数符,蓝色是阶码,绿色是尾数):1100 0000 1010 0000 0000 0000 0000 0000
- 数符为1:这是个负数
- 确定尾数部分:
.01000
,因此尾数真值为 1.0 1 2 1.01_{2} 1.012 - 确定移码:是
10000001
,可看作无符号数129 - 确定偏移值:127
- 确定阶码真值:阶码真值=移码-偏移值=1000 0001-0111 1111=(0000 0010) 2 _{2} 2= ( 2 ) 10 (2)_{10} (2)10
- 确定浮点数真值:根据公式 ( − 1 ) s × 1. M × 2 E − 127 (-1)^{s}×1.M×2^{E-127} (−1)s×1.M×2E−127,可得真值= ( − 1 ) 1 × ( 1.01 ) 2 × 2 129 − 127 = − 5.0 (-1)^{1}×(1.01)_{2}×2^{129-127}=-5.0 (−1)1×(1.01)2×2129−127=−5.0
(3)表示范围
IEEE 754单精度浮点型表示的最小绝对值和最大绝对值
- 最小绝对值:尾数全为0,阶码真值最小为-126,对应机器数为0000 0001,此时整体的真值为 ( 1.0 ) 2 × 2 − 126 (1.0)_{2}×2^{-126} (1.0)2×2−126
- 最大绝对值:尾数全为1,阶码真值最小为-127,对应机器数为1111 1110,此时整体的真值为 ( 1.111....11 ) 2 × 2 127 (1.111....11)_{2}×2^{127} (1.111....11)2×2127
当然即便这样,还是有溢出的问题的,因此前面提到的阶码全0和全1就派上用途了。
- 当阶码全为0,尾数不全为0时,表示非规格化小数,也即 ( + / − ) ( 0. × × × × ) 2 × 2 − 126 (+/-)(0.××××)_{2}×2^{-126} (+/−)(0.××××)2×2−126,阶码的隐含最高位为0
- 当阶码全为0,尾数全为0时,表示真值正负0
- 当阶码全为1,尾数全为0时,表示无穷大(正负)
- 当阶码全为1,尾数不全为0时,表示非数值NaN(Not a Number),比如0/0
以上是关于(计算机组成原理)第二章数据的表示和运算-第三节2:IEEE754标准的主要内容,如果未能解决你的问题,请参考以下文章
(计算机组成原理)第二章数据的表示和运算-第三节3:浮点数加减运算
(计算机组成原理)第二章数据的表示和运算-第一节5:本章习题
计算机组成原理 王道考研2021 第二章:数据的表示和运算 -- 本章小结常见问题和易混淆知识点