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

主题:在FX1N中怎么将 32 或 64 位数值转换成 16 位?

点击:1996 回复:9

如指令 MUL D0 D1 D2
此时结果等于 D3 D2,  假设 D0 D1乘积小于 32767  , 此时是不是可以直接写
ADD D2 K100 D4    假如 D0 D1 乘积是 5000,  D4 中会是 5100吗?
有没有可以将32位或64位程序转换成 16的方法?
16-04-01 17:01
除了浮点,应该是可以这样转的.
16-04-01 17:08
可以的,小于16位的数据就是存在D2里
16-04-01 17:12
为安全着想作求余或除1运算比较好点
最后修改:2016/4/1 18:14:33
16-04-01 18:14
除1后结果占的寄存器更多了,  DIV D0 D1 D2   假如 D0 是16位, 那么结果存 D2 ,D3     如果是 DDIV D0 D2 D4   那么结
果存入 D4 D5 D6 D7 ,我是要将32或64位的转换成16 或 32位的.
16-04-01 21:14

引用 ymxu 在 2016/4/1 17:01:27 发言【内容省略】

如果是-5000呢?
因此需要判断数据的符号位,并将符号位填入16位数据的最高位。
Good Luck~
16-04-01 21:50
呵呵;目前还不支持64位;
至于32位,如果你能确认数值在16位的范畴内,那么就取低16位用;
16-04-01 22:05
三菱的只要积算结果不大于16位,你直接用数据寄存器低16位就行,因为高16位是零
16-04-01 23:20
mul本身就是16位指令,如果d2的积大于32767(绝对值)就得用DMUL.
16-04-02 08:42
不用转直接用低16位就行了
16-04-02 10:37

工控新闻

更多新闻资讯