2025-11-08 06:17:07
移位就是给二进制数整体左推或右推几位。比如1010左移一位变成10100,相当于乘二;右移一位变成101,相当于除二。这样操作能快速改变数值大小,但要注意左边的高位会丢失,右边补零。比如十进制的10(二进制1010)左移一位得到20(10100),右移一位得到5(101)。
为什么这样设计呢?因为二进制每个位代表2的幂次方,左移就像把所有位乘以2的相应倍数。比如左移n位等于乘2的n次方,右移n位等于除2的n次方。但整数移位会丢失左边的高位,比如十进制的15(1111)左移两位变成111100(28),右边补两个零。实验数据证明:十进制的8(1000)右移一位得到4(100),而左移一位得到16(10000)。这说明移位操作确实能实现快速倍数运算,但必须确保高位不会溢出。比如用32位整数右移三位,十进制的1000会变成125(1000/8=125),而左移三位会变成8000(10008=8000)。这种特性让位运算在位掩码、循环左移等场景特别有用,但需要谨慎处理边界值。
本题链接: