IEEE存储浮点数标准

  电气和电子工程师协会(IEEE)已定义了几种存储浮点数的标准。这里简述其中两种最长用的--单精度和双精度。

介绍单精度、双精度之前,需要介绍余码系统。

余码系统

  尾数可以作为无符号数存储。指数(即显示多少位小数点应该左移或右移的幂次)是有符号的数。尽管这可以用二进制补码表示法来存储,但一种被称为余码系统的新的表示法取而代之。在该余码系统中,正的和负的整数都可以作为无符号数存储。为了表示正的或负的整数,一个正整数(称为一个偏移量)加到每个数字中,将它们统一移到非负的一边。这个偏移量的值是2m-1-1,m是内存单元存储指数的大小。

例题:

  我们可以用4位存储单元在数字系统中表示16个整数。使用一个单元作为0,分开其他15个可以在-7~8范围表示的整数,如下图示。在该范围增加7个单位到每个整数中,可以统一把所有整数向后移,使其均为整数而无需改变这些整数的相对位置。如图,新系统称为余7,或者偏移量为7的偏移表示法。

余码1.jpg

 好的,铺垫到此为止。

余码.jpg

  单精度格式采用总共32位来存储一个浮点表示法的实数。符号占用1位(0为正,1为负),指数占用8位(使用偏移量127),尾数使用23位(无符号数)。该标准有时称为余127码(Excess_127),因为偏移量是127。

  双精度格式采用总共64位来存储一个浮点表示法的实数。符号占用1位(0为正,1为负),指数占用11位(使用偏移量1023),尾数使用52位。该标准有时称为余1023码(Excess_1023),因为偏移量是1023。

IEEE.jpg

  对照上图,使用以下步骤,一个实数可以存储为IEEE标准浮点数格式:

(1)在S中存储符号(0或1);

(2)将数字转化为二进制;

(3)规范化(为了使表示法的固定部分统一,科学计数法(用于十进制)和浮点表示法(用于二进制)都在小数点左边使用了唯一的非零数码,这称为规范化);

(4)找到E和M的值;

(5)连接S、E、M。

例题:

  写出十进制数5.75的余127码(单精度)表示法。

解:

(1)符号为正,所以S=0;

(2)十进制转换为二进制:5.75=(101.11)2

(3)规范化:5.75=(101.11)2=(1.0111)2×22

(4)E=2+127=129=(10000001)2,M=(0111)2;

(5)存储在计算机中的数字为

01000000101110000000000000000000


猜你喜欢

转载自blog.csdn.net/weixin_42061048/article/details/80171437