kongdezheng
级别: *
精华主题: * 篇
发帖数量: * 个
工控威望: * 点
下载积分: * 分
在线时间: (小时)
注册时间: *
最后登录: *
查看kongdezheng的 主题 / 回贴
楼主  发表于: 2010-05-18 20:33

新手请教:  浮点四则运算时怎么回事?

在仿真软件用   DEDIV  K63  K10  D0

运算结果D0的数据为6.3  此时D1的数据为16585

我想知道D1的数据是怎么得到的? 编程手册上面没有浮点解释呀

请前辈师傅们帮忙解答一下   万分感激

谢谢
carrful
级别: 略有小成
精华主题: 0
发帖数量: 556 个
工控威望: 379 点
下载积分: 1124 分
在线时间: 131(小时)
注册时间: 2007-05-24
最后登录: 2024-02-18
查看carrful的 主题 / 回贴
1楼  发表于: 2010-05-18 20:49
浮点数是占用32位的
三菱
sjm213
有小知识,无大学问。
级别: 论坛版主

精华主题: 7 篇
发帖数量: 5168 个
工控威望: 7391 点
下载积分: 156774 分
在线时间: 3123(小时)
注册时间: 2007-11-21
最后登录: 2024-05-11
查看sjm213的 主题 / 回贴
2楼  发表于: 2010-05-18 23:56
在楼上的基础上提醒你一下:
首先要看看浮点数在PLC是如何保存的;将浮点数拆解成10进制数,然后看看是否能够得到你看到的这个结果~
kongdezheng
级别: *
精华主题: * 篇
发帖数量: * 个
工控威望: * 点
下载积分: * 分
在线时间: (小时)
注册时间: *
最后登录: *
查看kongdezheng的 主题 / 回贴
3楼  发表于: 2010-05-20 19:50
前辈  还是不明白  请明教
kongdezheng
级别: *
精华主题: * 篇
发帖数量: * 个
工控威望: * 点
下载积分: * 分
在线时间: (小时)
注册时间: *
最后登录: *
查看kongdezheng的 主题 / 回贴
4楼  发表于: 2010-05-20 19:53
我想知道的是D1里面的16585是怎么算出来的    谢谢
sjm213
有小知识,无大学问。
级别: 论坛版主

精华主题: 7 篇
发帖数量: 5168 个
工控威望: 7391 点
下载积分: 156774 分
在线时间: 3123(小时)
注册时间: 2007-11-21
最后登录: 2024-05-11
查看sjm213的 主题 / 回贴
5楼  发表于: 2010-05-21 15:04
浮点的运算比较麻烦,你可以“百度”或者“谷歌”一下。
它的格式是:【符号位】(1位)+【指数位】(8位)+【尾数位】(23位)共计组成32位的浮点数。
符号位用0、1表示正负;
指数位是将十进制转化为二进制后,再用科学法表示(将小数点移位到首位为1处),看指数值为多少,再加上127得到指数位的数。
尾数位则是将二进制的首个1去掉之后的数值。
对于K6.3:
符号位为0(正数);
转化为二进制为110.01001100110011001100……即1.1001001100110011001……×22
那么:指数位就是2+127=129转为2进制为10000001;尾数位就是1001001100110011001……
所以它的浮点数在CPU中存储为:0100 0000 1100 1001 1001 1001 1001 1001
三菱的数据寄存器储存32位数据是按照【D1 D0】这样的结构来保存的,也就是D1存储前16位,D0存储后16位;
所以D1中的数据是0100 0000 1100 1001 -------------------现在把它转为10进制,就得到了16585。