408答疑
一、相关概念复习
定点数的移位运算
当计算机中没有乘/除法运算电路时,可以通过加法和移位相结合的方法来实现乘/除法运算。对于任意二进制整数,左移一位,若不产生溢出,相当于乘以 2(与十进制数的左移一位相当于乘以 10 类似);右移一位,若不考虑因移出而舍去的末位尾数,相当于除以 2。
根据操作数的类型不同,移位运算可以分为逻辑移位和算术移位。
逻辑移位
逻辑移位将操作数视为无符号整数。逻辑移位的规则:左移时,高位移出,低位补 0;右移时,低位移出,高位补 0。对于无符号整数的逻辑左移,若高位的 1 移出,则发生溢出。
算术移位
算术移位需要考虑符号位的问题,即将操作数视为有符号整数。
计算机中的有符号整数都是用补码表示的,因此对于有符号整数的移位操作应采用补码算术移位方式。算术移位的规则:左移时,高位移出,低位补 0,若移出的高位不同于移位后的符号位,即左移前后的符号位不同,则发生溢出;右移时,低位移出,高位补符号位,若低位的 1 移出,则影响精度。例如,补码 1001 和 0101 左移时会发生溢出,右移时会丢失精度。
运算方法和运算电路
- 原文链接: