登录
首页
PLC论坛
PLC论坛
回帖
发帖
正文
主题:请教--怎样根据溢出位计算出结果
点击:1161 回复:5
楼主
编辑
引用
管理
蝶舞
请教一下比如32767+4=-32765 溢出位ON 怎样根据溢出位计算出结果+32771呢。
最后修改:
2010/8/25 15:45:18
10-08-25 15:40
1楼
编辑
引用
管理
cvlsam
你首先要解决16位存储空间如何存放大于32767的符号整数的问题,才能解决上述的问题。
其次,如果需要用32位来存储,那么转换为长整型数不就可以了?
Regards
10-08-25 17:03
2楼
编辑
引用
管理
蝶舞
这只是作为一种思维的延伸,想了好久也没想出来,比如,D0里面是+32767 D1里面是+4 相加后结果放D2里面,这时D2的结果必然是-32765,溢出位必然ON,然后根据溢出位把D0加D1变成长整形放D4里面,当然要是没溢出就不计算了,结果就放D2里面了。
10-08-25 17:44
3楼
编辑
引用
管理
cvlsam
引用
蝶舞
在 2010/8/25 17:44:49 发言
【内容省略】
难道你在运算前,要为每个D区域都留一个空位出来,以保证能扩展为32位?
那直接用32位岂不是更好?
如果不留空位,那么扩展后导致后续数据丢失,程序混乱你又如何去避免呢?
Regards
10-08-25 20:47
4楼
编辑
引用
管理
蝶舞
谢了C侠的回答,32767+4=-32765 我的意思是能不能找到一种规律把-32765变成32771,知道一般这样的情况都用双整。
10-08-26 10:47
5楼
编辑
引用
管理
cvlsam
32771已经溢出了,超过了存储单元的存储范围,数据失真了,已经无意义了……作为程序员,你应该多考虑一下如何去确保不溢出。
Regards
10-08-26 11:18
工控新闻
施耐德电气携手AMD发布首款Helios平台参考设计,加速AI工厂部署
中国工业机器人出口首超进口,谁在推动?|华北工控
中国籍数学家首获菲尔兹奖 有望夯实工业技术创新地基
AI加速跑进千行百业:让智能创新扎根实体经济
具身智能前瞻|破题人形机器人在工厂的规模化落地
告别英文壁垒!倍福 中文版 TwinCAT 3.1.4026 下载及安装指南
不止汉化!倍福 TwinCAT 3.1.4026 五大重磅升级,全面提速智造开发
工业领域具身智能数据集2.0发布
更多新闻资讯