规格化浮点数
规格化浮点数
第一章第四节浮点数的表示方法
一、浮点数表示一个数的浮点形式(设基数是2)可写成:
N =(+ -)M 2其中:
M代表尾数,E代表阶码。
计算机中浮点数只用尾数和阶码表示,其形式如下:
阶符阶码尾数符号尾数E浮点数的精度由尾数决定,数的表示范围由阶码的位数决定。
为了最大限度提高精度,尾数采用规格化形式,既1/2≤M<
1。
采用二进制表示时,若尾数大于零,则规格化数应该是01XX的形式;若尾数小于零,则规格化数应为10XX的形式。
二、实例
【例1】设X=
0.0110×23,用补码、浮点数形式表示阶码为Xj=011,尾数为00110,这时由于X尾数不符合01XX的形式,因此不是规格化数,必须先进行规格化处理。浮点数的基数什么意思
方法:
若尾数小于1/2,把尾数左移一位(不包括符号位),观察结果是否满足规格化条件,满足则在把阶码减1即可,否则继续左移和调整阶码;若尾数大于1,则把尾数右移一位(不包括符号位),观察结果是否满足规格化条件,满足则在把阶码加1即可,否则继续右移和调整阶码。
上例中,00110左移一位为01100,符合规则化标准,此时阶码减1,为010即得到浮点表示形式。
一个浮点数a由两个数m和e来表示:
a = m ×b^e。
在任意一个这样的系统中,我们选择一个基数b(记数系统的基)和精度p (即使用多少位来存储)。
m(即尾数)是形如±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.0001+
0.001+
0.0001)=-(
0.)规格化后为:
-
0.11001*2^(-3)=-
0.11001*2^(-11)即阶码=-11尾码=-
0.1101设阶码为4位,尾码为10位,阶符与数符各取1位,则:
阶码移码= 1 0011原=1 1100反=1 1101补=0 1101移尾码补码= 1 110000原= 1 001111反=1 补如果规格化数格式为:
符号阶码数符,尾数,则结果应为:
0 1101 1 001100 00例题2:
十进制数
7.5表示成二进制浮点规格化数是多少?要求是:
阶符1位,阶码2位,数符1位,尾数4位。
解答:
7.5化成二进制是
111.1=
0.11*2^3阶码是3即11,为正数,故阶符为
07.5为正数,数符为0尾数为
0.11用11表示拼接后为0110 11即01111例题3:
十进制数-27/64表示成规格化浮点数是?解答:
-27/64:
尾符:
这是负数,为127/64写成二进制位
0.011=
0.110*2^-1,规格化要求尾数表示为
0.1xxx的形式阶符:
为负数1阶码:
-001的补码是111尾码:
用原码表示比较简单:
110如果按照“阶符阶码尾符尾码”表示,则应该表示为:1 111 1 110