2025-11-08 06:24:38
左移就是往左推数字,左边空位补零右边补零。比如8位二进制数10000000左移一位变成00000000,同时进位标志会被置1。这就像用筷子夹东西往左拨,左边空了右边就多出一位新数字。操作时需要指定移位次数,比如左移1次就是乘2,左移2次乘4,最多左移31次(32位寄存器)。
为什么是这个答案?因为二进制是逢二进一,左移一位相当于乘以二,所以数值会翻倍。比如0x80(二进制10000000)左移一位变成0x00,但进位标志位会被置1表示有位丢失。实际开发中常用左移实现快速乘法,比如计算16位数乘以8时,先左移3次再处理进位。数据手册显示STM32的移位寄存器支持32位数据,左移最多31次,超过次数会清零。比如把0x0001左移31次就变成0x8000,再左移1次又回到0x0000。这种特性在处理大数乘除时特别有用,但要注意防止溢出导致数据错乱。
本题链接: