计算机组成原理 机器数的移位运算

移位操作是将数值向左或向右移动,对于十进制来说就是实现放大十倍和缩小十倍的效果,而对于二进制就是放大两倍和缩小两倍的效果。
1.逻辑移位
对于逻辑移位,就是不考虑符号,移位的结果只是数据所有的位数进行移位。根据移位操作的目的,左移时,低位理所当然要补0,右移最高位也是补0。

2.算术移位
算术是带有符号的数据,所以我们不能直接移动所有的位数,这可能会使得符号不正确。
(1). 原码
原码就是多了一个符号位,所以符号位不变,其余数值位当做逻辑移位来处理即可。

(2). 反码
类似原码,符号位不变,其余数值位当做逻辑移位来处理,但是对于负数,补0的时候应该补1,这是因为负数的反码“0”的效果和正数的“1”产生的效果是一样的。

(3). 补码
观察补码表,不难知道,当左移移出的数据位正数为“0”、负数为“1”时(只有这时候该数值小于等于最大值/2),一定不发生溢出。因为补码是计算机储存的形式,所以在硬件实现的时候为了方便和简化,左移:假设不发生溢出,直接将数据最高有效位移入符号位,最低位补0(为什么负数最低位不是补1?如果是反码补1没错,但是补码是反码加了1,所以最低位还是补0)。右移:假设不发生溢出,符号位不变,同时用符号位补数值最高位。

3.循环移位
顾名思义,就是最高位移出到最低位,最低位移出到最高位。

你可能感兴趣的:(1.,计算机组成原理)