计算机组成原理笔记——移位运算

821 阅读2分钟

移位运是一个较为重要的知识点,本文讲解的是二进制的 算数移位、逻辑移位、循环移位主要框图如下

一、算数移位

有符号数的移位称为算数移位,在移位过程中符号位保持不变,仅对数值位进行移位

1.原码的算数移位

右移:高位补0,低位舍弃。若舍的弃位=0,相当于÷2;若舍弃的位≠0,则会丢失精度
左移:低位补0,高位舍弃。若舍的弃位=0,相当于×2;若舍弃的位≠0,则会出现严重的误差

2.反码的算数移位

正数反码———正数反码与原码相同,因此对正数反码的移位运算也和源码的相同

右移:高位补0,低位舍弃。
左移:低位补0,高位舍弃。

负数反码———负数反码数值位与原码相反,对负数反码的移位运算规律如下

右移:高位补1,低位舍弃。若舍的弃位=1,相当于÷2;若舍弃的位≠1,则会丢失精度
左移:低位补1,高位舍弃。若舍的弃位=1,相当于×2;若舍弃的位≠1,则会出现严重的误差

3.补码的算数移位

正数补码———正数补码与原码相同,因此对正数补码的移位运算也和源码的相同

右移:高位补0,低位舍弃。
左移:低位补0,高位舍弃。

负数补码———最右边的1及其右边同原码,最右边左边的1同反码

右移(同反码):高位补1,低位舍弃。 若舍的弃位=0,相当于÷2;若舍弃的位≠0,则会丢失精度
左移(同原码):低位补0,高位舍弃。若舍的弃位=1,相当于×2;若舍弃的位≠1,则会出现严重的误差

4.注意

左移相当于×2;右移相当于÷2
由于位数有限,因此有时候无法用算数位精确地等效乘除法

二、逻辑移位

逻辑移位将操作数视为无符号数

移位规则

逻辑左移:高位移出,低位添0
逻辑右移:低位移出,高位添0

注意:逻辑移位不管左移还是右移,都添0