移位运算(计算机组成原理15)
移位运算
视频链接地址:
https://www.bilibili.com/video/BV1BE411D7ii?from=search&seid=6420326887479343502
计算机组成原理 系列文章目录
前言
在本篇中,你将掌握
- 三种移位运算的方法:算数移位+逻辑移位+循环移位
对于定点数其表示有两种:无符号数和有符号数,其中有符号数又有原码、反码、补码、移码四种,本篇将学习四种码的运算。
在计算机中,使用移位便可实现 乘除法 = 移位 + 加法
1 移位运算
1.1 算数移位
算数移位,理解好位权和负数特殊的移位补位就可以掌握
1.1.1 原码的算数移位
对于原码的算数移位:
符号位不变,数值位右移,如上图。高位补0,低位舍弃,若舍弃的位=0,则相当于 ÷ 2;若舍弃的位=1,则会丢失精度,如
2
−
1
2^{-1}
2−1
符号位不变,数值位左移,同理。低位补0,高位舍弃,若舍弃的位=0,则相当于 × 2;若舍弃的位=1,则会出现严重误差(舍弃了最高位的1)
1.1.2 反码的算数移位
反码的算数移位,如上图,注意:
正数的反码 = 原码,移位同原码
负数的反码 = 原码数值位取反,负数反码移位运算规则为
右移:高位补1,低位舍弃
左移:低位补1,高位舍弃
1.1.3 补码的算数移位
正数的补码 = 原码,移位同原码
负数的补码 = 原码数值位取反+1,负数补码移位运算规则为
右移:同反码,高位补1,低位舍弃
左移:同原码,低位补0,高位舍弃
1.1.4 算数移位小结
- 正数的原码 = 补码 = 反码,补位都用0补
- 负数的反码 = 原码数值位取反,补码 = 原码数值位取反+1
负数反码,补位补1
负数补码,左移补0,右移补1
1.2 逻辑移位
逻辑右移:高位补0,低位舍弃。
逻辑左移:低位补0,高位舍弃。
1.3 循环移位
循环移位,二进制数在移位过程中不丢弃,像是一个队列一样头变尾或尾变头,循环移位很适合把一个数据的高低字节调换(中文字节的大端存储:高字节+低字节,小端存储:低字节+高字节)
2 小结
本篇重点,算数移位的具体实现步骤(三种码的补位规则)
本文地址:https://blog.csdn.net/qq_44574333/article/details/109008125