规格化浮点数
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
规格化浮点数
第一章第四节浮点数的表示方法
一、浮点数表示
一个数的浮点形式(设基数是2)可写成:
N = (+ -)M 2E
其中:M代表尾数,E代表阶码。
计算机中浮点数只用尾数和阶码表示,其形式如下:
为了最大限度提高精度,尾数采用规格化形式,既1/2≤M<1。
采用二进制表示时,若尾数大于零,则规格化数应该是01XXXX的形式;若尾数小于零,则规格化数应为10XXXX 的形式。
二、实例
【例1】设X=0.0110×23 ,用补码、浮点数形式表示阶码为Xj=011,尾数为00110,这时由于X尾数不符合01XXXX的形式,因此不是规格化数,必须先进行规格化处理。
方法:若尾数小于1/2,把尾数左移一位(不包括符号位),观察结果是否满足规格化条件,满足则在把阶码减1即可,否则继续左移和调整阶码;若尾数大于1,则把尾数右移一位(不包括符号位),观察结果是否满足规格化条件,满足则在把阶码加1即可,否则继续右移和调整阶码。
上例中,00110左移一位为01100,符合规则化标准,此时阶码减1,为010即得到浮点表示形式。
一个浮点数a由两个数m和e来表示:a = m × b^e。
在任意一个这样的系统中,我们选择一个基数b(记数系统的基)和精度p(即使用多少位来存储)。
m(即尾数)是形如±d.ddd...ddd的p位数(每一位是一个介于0到b-1之间的整数,包括0和b-1)。
如果m的第一位是非0整数,m称作规格化的。
有一些描述使用一个单独的符号位(s 代表+或者-)来表示正负,这样m必须是正的
在浮点表示方法中,小数点的位置是浮动的,阶码可取不同的数值。
为了便于计算机中小数点的表示,规定将浮点数写成规格化的形式,即尾数的绝对值大于等
于0.1并且小于1,从而唯一规定了小数点的位置。
尾数的长度将影响数的精度,其符号将决定数的符号。
浮点数的阶码相当于数学中的指数,其大小将决定数的表示范围。
例题1:
表示-13/128这个数的二进制规格化数(阶用移码,尾数用补码)?
-13/128=(-1/128)+(-1/32)+(-1/16)=2^-4+2^-5+2^-7
=-(0.0000001+0.00001+0.0001)
=-(0.0001101)
规格化后为:
-0.11001*2^(-3)=-0.11001*2^(-11)
即阶码=-11
尾码=-0.1101
设阶码为4位,尾码为10位,阶符与数符各取1位,则:
阶码移码= 1 0011原=1 1100反=1 1101补=0 1101移
尾码补码= 1 1101000000 原= 1 0010111111反=1 0011000000补
如果规格化数格式为: 符号阶码数符,尾数,则结果应为:
0 1101 1 001100 0000
例题2:
十进制数7.5表示成二进制浮点规格化数是多少?
要求是:阶符1位,阶码2位,数符1位,尾数4位。
解答:
7.5化成二进制是111.1=0.1111*2^3
阶码是3即11,为正数,故阶符为0
7.5为正数,数符为0
尾数为0.1111 用1111表示
拼接后为0 11 0 1111
即01101111
例题3:
十进制数-27/64表示成规格化浮点数是?
解答:
-27/64:
尾符:这是负数,为1
27/64写成二进制位0.011011=0.110110*2^-1,规格化要求尾数表示为0.1xxx 的形式
阶符:为负数 1
阶码:-001的补码是111
尾码: 用原码表示比较简单:110110
如果按照“阶符阶码尾符尾码”表示,则应该表示为:1 111 1 110110。