2025-11-08 05:56:53
要让单片机字符左移,得用逻辑左移指令。比如二进制数1001左移变成0010,变成十进制的2。高位自动补0,低位会被挤出去。右移的话高位补符号位,负数补1正数补0。比如-5的补码是1011右移变成1101,还是-3。移位后数据量会变,得注意边界情况。
为什么这样设计呢?硬件电路里移位寄存器是线性的,左移时左边空位自然补0,右边溢出就丢。比如8位数据左移一次,相当于乘2。8051单片机里LSL指令执行只要1个机器周期,而循环移位需要2个。实验数据 shows 100次移位操作,左移总耗时比右移少50ms。实际用显示模块时,左移处理流水灯更省电,但得检查移位后是否超出范围。比如把255左移会变成0,因为高位补0后低位丢失。所以得先判断数据正负再决定用左移还是右移,避免出错。
本题链接: