回复:回复:IEEE浮点数的格式?与实数之间是怎样转换的?

wincomnj

  • 帖子

    8
  • 精华

    0
  • 被关注

    0

论坛等级:游民

注册时间:2004-02-03

普通 普通 如何晋级?

发布于 2004-02-04 10:12:59

0楼

以下是写给一个客户看的,今天贴出来请各位大侠斧正:
关于IEEE-754浮点数的描述
一、浮点数描述
SIEMENS S7-200里用4字节存储一个浮点数,格式遵循ANSI/IEEE-754标准(这个标准只找到一个英文版本,我看不懂)。一个浮点数用两个部分表示,尾数和2的幂,尾数代表浮点数上的实际二进制数,2的幂代表指数,指数的保存形式是一个0到255的8位值,指数的实际值是保存值(0到255)减去127,一个范围在-127到+128之间的值;尾数是一个24位值(代表大约7个十进制数),最高位MSB通常是1,是系统默认的(因此不保存);一个符号位表示浮点数是正或负。

浮点数保存的字节格式如下:
地址 +0 +1 +2 +3
内容 S EEE EEEE EMMM MMMM MMMM MMMM MMMM MMMM

这里
S 代表符号位,1是负,0是正
E 偏移127的幂,二进制为(EEEEEEEE)-(0111 1111)。
M 24位的尾数保存在23位中,只存储23位,最高位固定为1。此方法用最较少的位数实现了较高的有效位数,提高了精度。

例 浮点数-12.5作为一个二进制数保存在存储区中,这个值如下:
地址 +0 +1 +2 +3
内容1100 0001 0100 1000 0000 0000 0000 0000

注意:几个特殊数据的存储规则

正0: 所有的数据位都是0;
负0: 最高位为1,其它的数据位是0;
正/负无穷: 符号位为0/1,指数位全为1,尾数全为0;
NAN: 非法的浮点数,指数位全为0,尾数不全为0;

二、二进制转换浮点数
二进制转换成浮点数可分为5步:
1、 按照浮点数保存格式分开符号位、指数、尾数;
2、 计算实际指数:减去偏移量0111 1111(127);
3、 调整尾数:先添上省略的1和小数点,再根据指数调整小数点位置(负的指数向左移动小数点,正的指数向右移动小数点);
4、 分别计算小数点两边,然后相加;
5、 根据S位确定正负。
例 把二进制11000001 01001000 00000000 00000000转换成浮点数
1、按浮点数保存格式分开
地址 +0 +1 +2 +3
格式 SEEE EEEE EMMM MMMM MMMM MMMM MMMM MMMM
二进制 1100 0001 0100 1000 0000 0000 0000 0000
符号位是二进制1,
幂是二进制10000010,
尾数是二进制100 1000 0000 0000 0000 0000;
2、计算实际指数
(1000 0010)=(130),130-127=3即为实际指数;
3、调整尾数
添上省略的小数点和1,得到尾数值如下:1.10010000000000000000000
接着,根据指数调整尾数如下: 1100.10000000000000000000
4、计算
小数点左边1100表示
(1*2^3)+(1*2^2)+(0*2^1)+(0*2^0)=12,
小数点右边10000000000000000000表示
[1*2^(-1)]+ [0*2^(-2)]+[0*2^(-2)]...=0.5,
两值的和是12.5;
5、确定正负
符号位(S)是1 表示是一个负数;
综合可得:11000001010010000000000000000000转换成浮点数是-12.5。

三、浮点数转换二进制
浮点数转换成二进制的方法可分为4步:
1、浮点数转换成带小数点的二进制:整数部分除以2取余数,小数部分乘以2取整数;
2、规格化二进制:改变指数,使小数点前面仅有一位有效数字;
3、计算指数:加上偏移量0111 1111(127);
4、以标准二进制格式存储(把数值的符号位、阶码和尾数合在一起
就得到了该数的浮点存储形式)。

注意:尾数是带有一个隐含位的23位数,即:数“1.XXXX”的尾数是“XXXX”,前面的”1”被隐含掉。

例 把浮点数-12.5转换成二进制
1、进制转换:(12.5)=(1100.1)
2、规格化:(1100.1)=1.1001×2^3(3即二进制11)
3、计算阶码:11+01111111=1000 0010
4、数值的符号位为0,指数为:10000010,尾数为:1001 0000 0000 0000 0000 000
综合上述可得:(-12.5)的浮点形式为:1 100 0001 0 100 1000 0000 0000 0000 0000
评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-200

共有33303条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

快扫描右侧二维码晒一晒吧!

再发帖或跟帖交流2条,就能晋升VIP啦!开启更多专属权限!

  • 分享

  • 只看
    楼主

top
X 图片
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。