二进制右移的运算规则根据数据类型(有符号数或无符号数)不同而有所区别,具体如下:
一、基本规则
右移操作 将二进制数的所有位向右移动指定位数,右边空出的位用特定值填充,左边超出的位被丢弃。
填充规则
- 有符号数(带符号右移): 左边空出的位用原最高位(符号位)的值填充,保持符号不变。 - 无符号数(逻辑右移)
二、具体示例
有符号数右移 - 例如:`-12`(二进制`11111111111111111111111111110100`)右移2位,结果为`11111111111111111111111111111010`(即-6)。 - 正数右移:`5`(二进制`00000101`)右移1位,结果为`00000010`(即2)。
无符号数右移
- 例如:`10`(二进制`00001010`)右移2位,结果为`00000010`(即2)。 - 特殊情况:`-1`(二进制`11111111`)右移4位,结果为`00001111`(即15)。
三、注意事项
符号位处理: 有符号数右移时,符号位保持不变,确保结果仍为同符号数。- 位数限制