二进制右移操作分为两种类型:逻辑右移和算术右移,具体规则如下:
一、逻辑右移(0填充)
操作规则 将二进制数的所有位向右移动指定的位数,左侧用0填充。
示例
- 将 `00001100`(十进制12)右移2位:
```
00001100 → 00000011 → 3(十进制)
```
- 8位有符号数 `01001101`(十进制135)右移1位:
```
01001101 → 00101101 → 85(十进制)
```
二、算术右移(符号位填充)
操作规则
将二进制数的所有位向右移动指定的位数,左侧用符号位填充(正数补0,负数补1)。
示例
- 8位有符号数 `10101010`(十进制-130)右移1位:
```
10101010 → 11010010 → -65(十进制)
```
- 8位有符号数 `01001101`(十进制135)右移1位:
```
01001101 → 00101101 → 85(十进制)
```
三、应用场景
逻辑右移: 适用于无符号数或需要保持数值正性的场景,如位移操作、除以2的幂等。 算术右移
四、注意事项
数据类型:有符号数和无符号数的右移规则不同,需注意数据类型转换。
位移位数:若移位位数超过数据位数(如32位整数右移33位),结果会回绕到另一端。
通过以上规则,可灵活实现二进制右移操作,并根据需求选择合适的填充方式。