算术移位?逻辑移位?原码乘法、原码除法、补码乘法、补码除法有不同的移位方式

最近在复习计算机组成原理定点数的四则运算这一部分,书上关于四则运算的移位方式讲得相当含糊其辞,在网上搜了很多文章也讲不明白,甚至还误人子弟,因此便决定自己写篇文章来好好捋一捋,也方便以后复习查找。

一、算术移位逻辑移位有什么区别?

  1. 无符号数的移位是逻辑移位,有符号数的移位是算术移位。这句话是很广泛的一句说法,但我觉得,无符号数的移位确实一定是逻辑移位,但有符号数的移位不一定是算术移位,即有符号数在某些运算下也可能是逻辑移位。
  2. 再从二者如何移位上说一下区别。前面我说有符号数既可以算术移位也可以逻辑移位,那么这两个移位有什么操作上的区别呢?逻辑移位时,符号位是参与移位的;而算术移位时,符号位是不参与移位的。而且不论左移还是右移,逻辑移位总是在空出的位置上补0;而算术移位则需要细分:对于真值为正,不论左移还是右移,不论原反补码,都是补0;对于真值为负,原码和真值为正的情况一样,补码左移时低位补0,补码右移时高位补1,反码不论左移还是右移都是补1。

二、不同码制的乘除各是什么移位?

  1. 原码一位乘法逻辑右移。这个很好理解,还记得原码一位乘时符号位是单独计算的,也就是说我们计算数值位的时候就相当于在计算无符号数,自然也就是逻辑移位。
  2. 原码两位乘法逻辑右移。与原码一位乘相同。
  3. 补码一位乘法算术右移。补码一位乘时符号位和数值位是一起参与运算的,因此算术右移也不奇怪。
  4. 原码加减交替除法逻辑左移。其实和原码乘法差不多。
  5. 补码加减交替除法逻辑左移。这里可能有些奇怪,补码除法时符号位没有单独运算,为什么还是逻辑移位。我也解释不了,但是我试过用算术移位,但是算出的结果是错的,大家有好的解释的话可能给我留言。
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值