计算机组成原理-浮点数表述范围
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
以32位的浮点数为例
浮点数有一般的格式和IEEE754的格式两种。
一般的格式符合2进制数机器码(包括定点整数和定点小数)的规定规则
IEEE表示则是为了实现上的方便,做了一些约定的格式改变。
先说说问题的描述方式:
1、一个32位的二进制数来表示的浮点数。都是由阶和尾数两部分组成。阶和尾数都带有一位符号位,分别称为阶符和数符。
2、从图例表示可以有两种方式:
(1)一种是阶和尾数分别带着符号位表示,依次为阶符(ES)、阶(E)、数符(MS)和尾数(M)
(2)另一种是把数符提前到整个浮点数的最前面,表示整个浮点数的符号位,标记为S。
这两种表示方式是一致的。前者比较直接明了地分隔成“阶”(包括阶符和阶)和“尾数”(包括数符和尾数)两部分;后者则是为了便于软件移植的格式。
比较流行的教材的新版本都倾向于使用后一种表示方式。
因此,下面开始,我们都采用后一种方式叙述。
3、从真值的表示方式来说有多种不同的情况
符号位统一都是:(-1)s
一般表示法的阶:e=E-128(完全符合机器码的移码规则)。该部分在真值中表示为2E-128,注意,E为带符号位的阶所表示的无符号数大小。比如8位阶(包含一位符号位),以移码表示,以11111111为例,E=255,而e=127,在真值中表示为2127。
IEEE表示法的阶:e=E-127(是IEEE的一个约定,不符合机器码的移码规则)。该部分在真值中表示为2E-127,注意,E为带符号位的阶所表示的无符号数大小。比如8位阶(包含一位符号位),以移码表示,以11111111为例,E=255,而e=128,在真值中表示为2128。
一般表示法的尾数:M,该部分在真值中以M表示,规划化处理是使得M 的最高位和符号位不同值,或者说用异或判断结果为1(其本质在于使得该数值的绝对值≥0.5)。
IEEE表示法的尾数:1.M,该部分在真值中以1.M表示,因为IEEE表示方式本来就是一种标准格式,所以不存在不是规格化的数。其中尾数域的小数点前约定的那个1不予存储,默认其隐藏在小数点的左边。
因此,一般表示法和IEEE表示法就可以组成四种组合真值表示。
(1)纯一般表示法(阶和尾数都是一般表示法)真值表示为:(-1)s⨯M⨯2E-128
(2)纯IEEE表示法(阶和尾数都是IEEE表示法)真值表示为:(-1)s⨯(1.M)⨯2E-127
(3)混合表示法A(阶位一般表示法,尾数都是IEEE表示法)真值表示为:(-1)s⨯(1.M)⨯2E-128,课本例9就是用了这种混合表示法。
(2) 混合表示法B(阶位IEEE表示法,尾数都是一般表示法)真值表示为:(-1)s⨯M⨯2E-127
注意:如果题目没有做明确描述。就默认其采用的是“纯一般表示法”。
弄清楚问题的描述方式后,我们来看看各种表示方法的表数范围。
分别从一般表示法的阶和尾数,IEEE的阶和尾数,4个组成部分来分析。
下面我们继续以32位浮点数为例,并不妨设符号位1位,阶码8位,用移码表示,尾数23位,用补码表示。
根据上面的分析,一般表示法的各种范围为:
(1)最大数的二进制表示:0 11111111 11111111111111111111111
(2)最小数的二进制表示:1 11111111 00000000000000000000000
(1) )(231221*27--- (2))
(1*2127-- (3)规格化最大正数:0 11111111 11111111111111111111111
)
(231221*27--- 规格化最小正数:0 00000000 10000000000000000000000
122*27--
规格化最大负数:1 00000000 01111111111111111111111
)
(231222*27---+- 规格化最小负数:1 11111111 00000000000000000000000
)
(1*2127-- 规格化数的表示的数的范围为:
)]21*2,2*2[]22*2,1*2[231212*********---------+--()()(
IEEE754的标准看课本的55页的那个图2.17(略有些错误)。
我们把它更正一下,IEEE 标准下,
尾数的范围是 -(2-232-)~-1 和1~(2-23
2-) 阶的范围是 -126~+127 或者写成227+-~127-
所以可以得出IEEE 标准下的表数范围是(除了正负无穷和零,参照下面的表格): -(2-232-)*1272-~(-1)*2272+- 和 1*2272+-~(2-232-)*1272-
类似IEEE 标准的例题见课本23页,其实就是前面提到的混合表示法A
IEEE754标准下,阶除了正常的表述范围(E=1~254,e=-126~+127), 当E 等于0或255时,在IEEE754标准中分别表示特殊的数值,即表示特殊的浮点数:
若E=0,且M=0,则表示浮点数N为0,此时尾数的隐含位是0,不是1。
若E=0,且M≠0,则表示非规格化的浮点数,N=(-1)S×2-126×(0.M),用它可以表示绝对值较小的数。
若E=255,且M=0,则表示该浮点数为无穷大,N=(-1)S×∝(±∝),表示N=a/0(a ≠0)时的值。
若E=255,且M≠0,则表示是一个“非数值”,N=NaN (Not a number),表示0/0的值。
这个表可以对照书上18页中间的那段描述