admin 管理员组文章数量: 1086019
2024年2月27日发(作者:c语言常量包括)
规格化浮点数
第一章 第四节 浮点数的表示方法
一、浮点数表示
一个数的浮点形式(设基数是2)可写成:
N = (+ -)M 2
其中:M代表尾数,E代表阶码。
计算机中浮点数只用尾数和阶码表示,其形式如下:
阶符 阶码 尾数符号 尾数
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(即尾数)是形如±...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 反 =1 补
如果规格化数格式为: 符号 阶码 数符,尾数,则结果应为:
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
版权声明:本文标题:规格化浮点数 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.roclinux.cn/p/1709018934a536580.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论