PLC中使用移位指令是如何实现移位动作的?

2024-12-27 20:10:07
推荐回答(2个)
回答1:

左移运算将一个二进制位的操作数按指定移动的位数向左移动,移出位被丢弃,右边移出的空位一律补0。右移运算将一个二进制位的操作数按指定移动的位数向右移动,移出位被丢弃,左边移出的空位一律补0,或者补符号位,这由不同的机器而定。在使用补码作为机器数的机器中,正数的符号位为0,负数的符号位为1。

在移位运算时,byte、short和char类型移位后的结果会变成int类型,对于byte、short、char和int进行移位时,编译器未做任何优化的情况下(优化后不可预期),规定实际移动 的次数是移动次数和32的余数,也就是移位33次和移位1次得到的结果相同。

移动long型的数值时,规定实际移动的次数是移动次数和64的余数,也就是 移动66次和移动2次得到的结果相同。



扩展资料

移位指令一般格式:移位操作符(如SHR) OPR、CNT。其中OPR用除立即数外的任何寻址方式。移位次数由CNT决定,在8086中可以是1或CL,CNT为1时只移一位;如果需要移位的次数大于1时,需要先将移位次数存入CL寄存器中,而移位指令中的CNT写为CL即可。

在其他机型中可使用CL和CNT,且CNT的值除可用1外,还可以用8位立即数指定范围从1到31的移位次数。

参考资料来源:百度百科-移位指令

参考资料来源:百度百科-移位运算符

回答2:

字节移位指令一共有四个
循环右移、循环左移、右移、左移
循环移位指令(左、右)八个位是循环移动的
也就是说循环左移1位就是向左移动1位 最高位移到最低位处
循环右移1位相应的位向右移动1位最低位移到最高位
例如:11000010 》》》循环右移1位》》》01100001
11000010 》》》循环左移1位》》》10000101

右移1位:也就是说相应的位都右移1位 最低位消失 最高位补0
左移1位:也就是说相应的位都左移1位 最高位消失 最低位补0
例如:11000010》》》左移》》》》》10000100
11000010》》》右移》》》》》01100001
代号直接看西门子就是了
满意请及时加分 谢谢