登录
首页 PLC论坛 PLC论坛
回帖 发帖
正文

主题:请教--怎样根据溢出位计算出结果

点击:1145 回复:5

请教一下比如32767+4=-32765 溢出位ON 怎样根据溢出位计算出结果+32771呢。
最后修改:2010/8/25 15:45:18
10-08-25 15:40
你首先要解决16位存储空间如何存放大于32767的符号整数的问题,才能解决上述的问题。
其次,如果需要用32位来存储,那么转换为长整型数不就可以了?
Regards
10-08-25 17:03
这只是作为一种思维的延伸,想了好久也没想出来,比如,D0里面是+32767   D1里面是+4    相加后结果放D2里面,这时D2的结果必然是-32765,溢出位必然ON,然后根据溢出位把D0加D1变成长整形放D4里面,当然要是没溢出就不计算了,结果就放D2里面了。
10-08-25 17:44

引用 蝶舞 在 2010/8/25 17:44:49 发言【内容省略】

难道你在运算前,要为每个D区域都留一个空位出来,以保证能扩展为32位?
那直接用32位岂不是更好?
如果不留空位,那么扩展后导致后续数据丢失,程序混乱你又如何去避免呢?
Regards
10-08-25 20:47
谢了C侠的回答,32767+4=-32765   我的意思是能不能找到一种规律把-32765变成32771,知道一般这样的情况都用双整。
10-08-26 10:47
32771已经溢出了,超过了存储单元的存储范围,数据失真了,已经无意义了……作为程序员,你应该多考虑一下如何去确保不溢出。
Regards
10-08-26 11:18

工控新闻

更多新闻资讯