回复:为什么一个32位的双整型值除以100相当于左移16位

Zane

版主 西门子1847工业学习平台

  • 帖子

    21057
  • 精华

    399
  • 被关注

    1484

论坛等级:至圣

注册时间:2003-06-06

钻石 钻石 如何晋级?

发布于 2014-04-15 00:25:24

15楼

L "DB303_CONFIG_MISURE_ASSI".ASSE_X.NUM_SISTEMA_MISURA_X; //DB303.DBW14 (BCD)
BTD ;
L 100;
/I ;
T "DB080_CNFG".NUM_SISTEMA_MISURA_X; //DB80.DBW12

程序中装载到累加器中的是一个字,这里可以是3位BCD带符号,也可以是4位BCD,前者使用转换指令应该是BTI,后者使用转换指令应该是BTD,显然程序作者把它作为4位BCD数来使用了。接下来就是正整数除法,运算结果,余数存累加器1的高位,商存累加器1的低位,程序中取商送到DB80.DBW12。这很正常啊!
但楼主的仿真程序,除法运算的最后结果却送到了一个双字单元里,当然这也没问题,手册上的例子就是这样的,有点常识的人都该知道,只要被除数小于除数的正整数除法,都会是这个结果,累加器高位是运算结果的余数即被除数,低位是商就是0。
请问,楼主这左移16位的结论及推广从何而来?!
试想,如果一个初入行的网友,认真地读了此贴后,会产生什么后果?他会是什么想法?会不会开骂啊?
既然楼主敢写,那我也敢批,不看则罢,看了必批,作为版主也好,作为网友也好,我就不能表达我对此贴的观点吗?即使做反面教材,也是批了以后才能做反面教材啊,若无人批,那就是我来批。

这就是我的态度,我对事不对人,楼主可以继续喝您的咖啡。
Zane 注册自动化系统工程师 Always save before download
评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-300/400

共有54618条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

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

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

  • 分享

  • 只看
    楼主

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