Skip to content

2.2.2 定点数的移位运算

字数
415 字
阅读时间
2 分钟

常考

左移r位:×2r(无溢出时) 右移r位:÷2r(未丢失精度时)

一、逻辑移位(无符号整数)

需要将操作数视为无符号整数
  • 逻辑移位的规则
    1. 左移时,高位移出,低位补0
    2. 右移时,低位移出,高位补0
  • 判断溢出或精度丢失:
    1. 逻辑左移,若高位的1移出,则发生溢出(超出n位无符号数的表示范围,正常应该是在原真值的基础上再×R(R进制),但由于超出表示范围,将1移出后无法正常显示,所以是发生了溢出)
    2. 逻辑右移,若低位的1移出,则会丢失精度

二、算术移位(有符号整数)

将操作数视为有符号整数

TIP

由于计算机中的有符号整数都是用补码表示的,所以对于有符号整数的移位操作应采用补码算数移位方式

  • 算数移位的规则:
    1. 左移时,高位移出,低位补0
    2. 右移时,低位移出,高位补符号位
  • 判断溢出或精度丢失:
    1. 逻辑左移,若左移前后的符号位不同(符号改变),则发生溢出
    2. 逻辑右移,若低位的1移出,则会丢失精度

贡献者

The avatar of contributor named as freeway348 freeway348

文件历史

撰写