2025-11-08 23:43:06
移位指令主要是让数据往左或往右挪位置,比如把数字00101往左挪三位就变成101000。欧姆龙PLC里常用D0 D1,3这种格式,D0是源数据,D1是目标寄存器,3是移位次数。比如D0里存着十进制的5(二进制是00101),用D0 D1,3左移后D1就会变成十进制的40(二进制是101000)。要是往右挪的话,比如D0 D1,-3,00101右移三位就变成00001,也就是十进制的1。
为什么是这个答案呢?因为移位操作本质是乘除2的幂次方,左移一位等于乘2,左移三位就是乘8。拿D0=5(二进制00101)做例子,左移三位后变成101000,也就是40。但要注意位数不够会溢出,比如D0只有5位二进制,左移三位后变成101000(6位),如果PLC寄存器是5位就会报错。右移的话刚好相反,比如D0=40(101000)右移三位变成00101(5),正好是40÷8=5。实际用的时候得看寄存器位数,移位三次最多不能超过寄存器总位数,否则高位会丢失。比如8位寄存器移位三次,原数据10100001左移三次变成00001000,也就是8,而原数据如果是00000101右移三次就会变成00000000,因为三位都是0。所以移位指令既能让数据快速乘除,又能调整数据位对齐,但得注意位数匹配,否则会出错。
本题链接: