111111
精灵王
精灵王
  • 注册日期2010-12-08
  • 发帖数640
  • QQ
  • 火币1103枚
  • 粉丝120
  • 关注75
  • 社区明星
阅读:7494回复:0

经典汇编语言教程:11.1.3 浮点数

楼主#
更多 发布于:2013-01-29 11:38
 
在计算机中,浮点数一般由三部分组成:数值的符号位、阶码和有效数字(以后简称为尾数)。这种浮点数是用科学记数法来表示的,即:浮点数=符号位.有效数字×2阶码
intel系列的协处理器支持3种形式的浮点数:短型浮点数(32位)、长型浮点数(64位)和临时浮点数(80位),它们分别对应单精度、双精度和扩展精度浮点数。这些浮点数的数据格式都符合IEEE-754标准,它们的具体格式如图11.3所示。

图片:11-3A.gif


图片:11-3B.gif


图片:11-3C.gif


图11.3 80x87中浮点数的三种数据格式
一、十进制数转换成浮点数的步骤
1、将十进制数转换成二进制数:整数部分用2来除,小数部分用2来乘;
2、规格化二进制数:改变阶码,使小数点前面仅有第一位有效数字;
3、计算阶码:


◆ 短型浮点数的阶码加上偏移量7FH
◆ 长型浮点数的阶码加上偏移量3FFH
◆ 扩展型浮点数的阶码加上偏移量3FFFH
4、以浮点数据格式存储。

把数值的符号位、阶码和尾数合在一起就得到了该数的浮点存储形式。
注意:尾数是带有一个隐含位的23位数,即:数“1.XXXX”的尾数是“XXXX”,前面的”1”被隐含掉,它只在扩展精度的格式中才被显式表示出来。
例11.1 把十进制数100.25转换成协处理器中的浮点数
解:

1、进制转换:(100.25)10=(1100100.01)2

2、规格化:(1100100.01)2=1.10010001×26=1.10010001×2110

3、计算阶码:110+01111111=10000101

4、数值的符号位为0,阶码为:10000101,尾数为:1001 0001 0000 0000 0000 000

综合上述可得:(100.25)10的浮点形式为:0 10000101 10010001000000000000000

下面是学习和掌握十进制数转化为浮点数的控件,它可按步骤演示整个转换过程。
几个特殊数据的存储规则:
正0: 所有的数据位都是0;
负0: 最高位为1,其它的数据位是0;
正/负无穷: 符号位为0/1,阶码位全为1,有效数字全为0;
NAN: 非法的浮点数,阶码位全为1,有效数字不全为0;

其中:NAN — Not-A-Number。

喜欢0 评分0
游客

返回顶部