计组——理解算术移位和逻辑移位

本文介绍了算术移位和逻辑移位在计算机硬件实现中的原理和应用。算术移位针对有符号数,右移相当于除以2,左移相当于乘以2,而负数的移位规则有所不同。逻辑移位不考虑符号位,右移高位补0,左移低位补0。文章通过实例展示了移位在原码一位乘法运算和RGB色生成中的作用,并提到了循环移位在数据转换中的应用。
摘要由CSDN通过智能技术生成

算术移位

算术移位(指数码位的移动)通过改变各个数码位和小数点的相对位置,从而改变各数码位的位权。可用移位运算实现乘法、除法。

算术移位针对有符号数,在移位过程中,符号位保持不变。

对于十进制来说,小数点左移1位,即数字右移相当于除以10,右移1位即数字左移相当于乘以10

那么对于二进制来说,算术右移 1位,相当于除以2;算术左移相当于乘以2

在计算机硬件实现时,移位之后需要对空位进行添补,区分正负数来讨论:
由于正数原码补码反码相同,所以算术右移的时候高位补0,低位舍弃,若舍弃位是0,则相当于除以2,若舍弃位不是0,则会丢失精度;算术左移时,高位舍弃,若舍弃位是0,则相当于乘以2,若舍弃位不是0,则会出现严重误差。

负数原码算术移位时添补0
反码算术移位时添补1
补码左移添0,右移添1(最右边的1在变成原码时,会产生进位,所以从右往左第一个不是1的数字左边同反码,剩余同原码。所以添补规则左移时空出来右边,添补规则同原码右移时空出来左边,添补规则同反码

在这里插入图片描述
【例】计算机硬件实现-20*7
【分析】7D=111B= 2 0 + 2 1 + 2 2 2^{0}+2^{1}+2^{2} 20+21+22
即就是对-20执行(不左移、左移1位、左移2位、加法)这些操作

逻辑移位

逻辑右移:高位补0,低位舍弃;
逻辑左移:低位补0,高位舍弃;

左移时最低位补0,右移时最高位补0的移位操作;可以把逻辑移位看做是对“无符号数”的算术移位(不考虑符号位)

应用场景举例1:原码一位乘法运算
在进行乘法运算过程中,乘数(保存在MQ中)的最低位与被乘数(保存在X中)运算后的结果会更新到ACC当中,之后(ACC和MQ)会执行逻辑右移,MQ低位丢弃,ACC逻辑右移后高位补0,MQ中新的低位继续与被乘数运算,得到的结果累加到ACC中,重复以上步骤,得到最终的结果(ACC和MQ拼接起来)

应用场景举例2:逻辑移位生成RGB色
👉戳这里:逻辑移位RGB

原码一位乘法:(机器字长n+1,数值部分占n位)
符号位通过异或确定;
数值部分通过被乘数和乘数绝对值的n轮加法、移位完成
根据当前乘数汇总参与运算的位确定(ACC)加什么,若当前运算位=1,则(ACC)+[|x|];若=0,则(ACC)+0
每轮加法后ACC、MQ的内容统一逻辑右移

补充:循环移位

移出的那一位数值添补到空出的那一位

带进位位的循环移位:
移出的那一位移动到进位位,空出的那一位用进位位的数值添补

应用场景举例:大端存储和小端存储的互相转换

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值