数据格式——浮点数

浮点数的表示及标准

 

/*由小数点的位置可见阶码为小数,尾数为整数*/

 

             

IEEE 754 提供了个式子,任意数写成754形式,提取其中部分即可的754浮点数标准形式;反过来,已知754标准形式,将其拆分(注意去掉首位符号位留下有效位)并带入公式即可的到原始数据(真值)                                                                       

/*用于计算浮点数所对应的真值,注意尾数中隐含的1和2的指数中E(即阶码)需看作无符号数;其中,短实数又称为单精度浮点数,长实数又称为双精度浮点数。单精度浮点数和双精度浮点数的阶码采用移码,但与前面所介绍的移码不同的是:它的偏移量不是 27和 2 10,而是 27-1=127 和 2 10 -1=1023;另外,它的尾数使用原码表示,且采用隐藏位,也就是将规格化浮点数尾数的最高位的“1”省略,不予保存,认为它隐藏在尾数小数点的左边,从而使有效位数又增加了一位。由此,推导出它们的真值计算公式如表 3.3,其中 E 为阶码 EsE1……Em的加权求和的值。*/

浮点数表示标准例题

1,

 

 

 

C

2,若 X 和 Y 均是 IEEE 754 标准的单精度浮点数,

(1) 若 X 浮点数的存储形式为 41360000H,求 X 的真值。
(2) 若 Y=-135.625,求 Y 的浮点数表示。

 

浮点数格式化表示及方法(是针对尾数的)

 /*为了充分利用尾数的二进制数位来表示更多的有效数字,通常采用规格化形式表示浮

点数,即将尾数的绝对值限定在某个范围之内*/

  

 

/*不同的R对应不同的M范围*/

 

/*对于原码表示的尾数,当最高有效位为 0 时,必须进行左规,尾数每左移 1 位,阶码减 1,直至尾数变为×.1ׄ„×形式;对于补码表示的尾数,当符号位与最高有效位相同时,也必须左规,即尾数每左移 1 位,阶码减 1,直至把尾数中第一个不同于符号位的“0”或“1”移至最高有效位,变为 0.1ׄ„×形式或者为 1.0ׄ„×形式。

只有当在浮点数的运算过程中,尾数发生了溢出,即超出了尾数所能表示的数据范围时,才需要进行右规处理,即尾数右移 1 位,阶码加 1,由于参加运算的浮点数必须是规格的,因此,一般只需右规一次即可。在此必须明确指出的是,浮点数的溢出是由阶码是否溢出决定的,而非尾数,尾数发生溢出可以通过右规处理,只有阶码发生溢出,浮点数才被判定为溢*/

规格化表示例题

 1.

   

2, 

  3,  

4, 

 

 5,

6,

 

规格化数表示范围

在浮点数的表示范围中,有两种情况被称为机器零:

 

(1) 若浮点数的尾数为零,无论阶码为何值;

 

(2) 或者当阶码的值遇到比它能表示的最小值还要小时(阶码负溢出),无论其尾数为何值。

 

 

 

如图所示,浮点数的表示范围通常由四个点界定:最小(负)数、最大负数、最小正数、最大(正)数。其中,最大负数又称为负精度-δ ,最小正数称为正精度+δ ,它们是浮点数所能表示的最精确的值,相当于浮点数的分辨率。位于最大负数和最小正数之间的数据(除 0 外),浮点数无法表示,称为下溢。对于下溢的处理,计算机直接将其视为机器零。与定点机器数相同,当一个数据大于最大(正)数,或者小于最小(负)数时,机器也无法表示,称为上溢,上溢又称溢出

 

 

 可以先求最大正数和最小正数的值,再由对称性将有效值取反即得到负数区域

posted @ 2020-04-28 01:28  YOLO-in-the-sun  阅读(1513)  评论(0编辑  收藏  举报