定点数与浮点数的表示方法

计算机组成原理——定点数与浮点数

计算机中常用的数据表示格式有两种,一是定点格式,二是浮点格式。一般来说,定点格式容许的数值范围有限,要求的处理硬件比较简单。而浮点格式容许的数值范围很大,要求的处理硬件比较复杂。

一、定点数的表示方法

定点格式:即约定机器中所有数据的小数点位置固定不变。 由于约定的小数点位置固定不变,小数点就不再使用 “ . ” 表示。原理上,小数点位置固定在哪一位都可以,但是通常将数据表示为纯小数纯整数
纯小数: 整数部分是零的小数(小于1的正小数)。如0.1,0.66,0.987
纯整数: 正整数。如1,32,99

假设用n+1位字来表示定点数x,为了将数据进行统一处理,符号位放在最左边,并用数值0和1分别表示正号和负号。这样,就得出了定点数表示的数据格式。
在这里插入图片描述

如果x表示的是纯小数,那么小数点位于符号位的后面,当符号和尾数都为0时,x的绝对值最小,|x|min=0;当符号和尾数都为1时,x的绝对值最大。
在这里插入图片描述
如果x表示的是纯整数,那么小数点位于最低位x0的后面。
在这里插入图片描述

二、浮点数的表示方法

浮点格式(浮点表示法):把数的范围和精度分别表示的方法,相当于数的小数点位置随比例因子的不同而在一定的范围内可以自由浮动。

其中M为浮点数的尾数,是一个纯小数。e是比例因子的指数,称为浮点数的指数,是一个整数。

在机器中表示一个浮点数时,一是要给出尾数,用定点小数形式表示。尾数部分给出有效数字的位数,因而决定了浮点数的表示精度。二是要给出指数(常称为阶码),用整数形式表示,阶码指明了小数点在数据中的位置,因而决定了浮点数的表示范围。三是给出浮点数的符号,包括阶符和数符。

早期计算机中,一个机器浮点数由阶码、尾数、及符号位组成:
在这里插入图片描述

经过改进,为了便于软件移植,按IEEE754标准,32位浮点数和64浮点数的标准格式:

在这里插入图片描述

不论是32位浮点数(单精度)还是64位浮点数(双精度),由于基数2是固定常数,对每一个浮点数都一样,所以不必用显示方式来表示它。阶符采用隐含方式,即采用移码方式来表示正负指数。移码方式对两个指数大小的比较和对阶操作都比较方便,因为阶码域越大,指数值越大。采用这种方式时,将浮点数的指数真值e变成阶码E时,应将指数e加上一个固定的偏移值127(01111111),即E=e+127。

  • 在32位的浮点数中,S是浮点数的符号位,占1位,S=0表示正数,S=1表示负数。
    E是阶码,占用8位
    M是尾数,放在低位部分,占用23位,小数点位置放在尾数域最(最高)有效位的右边。
  • 在64位的浮点数中,符号位1位,阶码域11位,尾数域52位,指数偏移值是1023

不论是32位浮点数还是64位浮点数,如果不对浮点数的表示作出明确规定,同一个浮点数的表示就不是唯一的。

例如:十进制数1.25可以表示成在这里插入图片描述
等多种形式。为了提高数据的表示精度,当尾数的值不为0时,尾数域的最高有效位应为1,这称为浮点数的规格化表示


关于规格化
(1)规格化的定义
r=2(基数为2) 0.5 <= |s| < 1
(2)规格化数的判断

  • 当 s > 0(正数)时,规格化数形式:
    真值 0.1xx…xxx
    原码 0.1xx…xxx
    补码 0.1xx…xxx
    反码 0.1xx…xxx
  • 当 s < 0(负数) 时,规格化数形式
    真值 -0.1xx…xxx
    原码 1.1xx…xxx
    补码 1.0xx…xxx
    反码 1.0xx…xxx

规格化数的规律
原码:不论正数还是负数,第一数位为1
补码:符号位和第一数位不同

如何将不是规格化的数转换成规格化数?
(1)左规
尾数左移一位,阶码减一,直到数符和第一数位不同为止
[x+y]补 = 00,11 ; 11.1001
左规之后:[x+y]补 = 00,10 ; 11.0010(00,11阶码减一,11.1001尾数左移一位)

(2)右规
当尾数溢出(大于1)时,需要右规,即尾数出现01.xx…xxx,10.xx…xxx时

  • 33
    点赞
  • 243
    收藏
    觉得还不错? 一键收藏
  • 9
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值