二进制移位是指对二进制数进行水平方向的位移操作,通过改变位的位置来快速调整数值。移位运算符分为左移(`<<`)和右移(`>>`)两种类型,具体规则如下:
一、左移运算(`<<`)
操作规则:将二进制数整体向左移动指定位数,右侧空出的位置用0填充,高位丢弃。
示例:`00000100 << 2` 结果为 `00010000`(十进制8),相当于原数乘以2的移位次数次方。
特点:符号位保持不变(有符号数),移位32次后结果与移位1次相同。
二、右移运算(`>>`)
无符号右移(`>>`):将二进制数整体向右移动指定位数,左侧空出的位置用0填充,高位丢弃。
带符号右移(`>>`):保留符号位,左侧空出的位置用原符号位填充(正数补0,负数补1)。
示例:`00010000 >> 2` 结果为 `00000010`(十进制2),无符号右移;`10000000 >> 2` 结果为 `11111111`(十进制-8),带符号右移。
三、注意事项
数据类型转换:
`byte`、`short`、`char`类型移位后结果自动提升为`int`类型。
移位次数优化:
实际移动次数取移位次数与32的余数(如移位33次等同于移位1次)。
移位运算在程序设计中常用于快速乘除(如左移n位相当于乘以2^n)、位掩码操作、数据压缩等场景。