二进制位移运算分为左移和右移两种类型,具体规则如下:
一、左移运算(`<<`)
将二进制数整体向左移动指定位数,右边空缺部分用0填充。 例如:`00000100 << 2` 结果为 `00010000`(十进制8)。
数学意义
左移n位相当于原数乘以2的n次方。例如:`a << b = a * 2^b`。
二、右移运算(`>>`)
带符号右移(算术右移)
- 正数:高位补0,低位直接丢弃。例如:`00000101 >> 1` 结果为 `00000010`(十进制2)。 - 负数:高位补1,低位直接丢弃(实现逻辑右移)。例如:`10011010 >> 1` 结果为 `1101101`(保持符号位不变)。
无符号右移
所有位右移,高位补0,适用于无符号数。例如:`01001100 >> 2` 结果为 `00000110`(十进制6)。
三、注意事项
符号位影响: 左移时符号位不变,右移时符号位根据数值正负决定补0或补1。- 溢出风险