规格化浮点数第一章第四节浮点数的表示方法一、浮点数表示一个数的浮点形式(设基数是2)可写成:N=(+-)M2E其中:M代表尾数,E代表阶码。计算机中浮点数只用尾数和阶码表示,其形式如下:阶符阶码尾数符号尾数浮点数的精度由尾数决定,数的表示范围由阶码的位数决定。为了最大限度提高精度,尾数采用规格化形式,既1/2≤M1。采用二进制表示时,若尾数大于零,则规格化数应该是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位,则:阶码移码=10011原=11100反=11101补=01101移尾码补码=11101000000原=10010111111反=10011000000补如果规格化数格式为:符号阶码数符,尾数,则结果应为:0110110011000000例题2:十进制数7.5表示成二进制浮点规格化数是多少?要求是:阶符1位,阶码2位,数符1位,尾数4位。解答:7.5化成二进制是111.1=0.1111*2^3阶码是3即11,为正数,故阶符为07.5为正数,数符为0尾数为0.1111用1111表示拼接后为01101111即01101111例题3:十进制数-27/64表示成规格化浮点数是?解答:-27/64:尾符:这是负数,为127/64写成二进制位0.011011=0.110110*2^-1,规格化要求尾数表示为0.1xxx的形式阶符:为负数1阶码:-001的补码是111尾码:用原码表示比较简单:110110如果按照“阶符阶码尾符尾码”表示,则应该表示为:11111110110