【计算机组成原理】[第三章][自用]

1 移位运算

1.1 移位运算——逻辑运算

(1)注意,对象是:无符号数。

  • 应用举例:

1.2 移位运算——算术运算

(1)注意,对象是:有符号数

  1. 正数:总结:
  2. 负数:
  3. 总结:可以看到,虽然补码左移补数规则原码,但是丢失规则则是同反码;而补码右移补数规则同反码,但是丢失规则则是同原码。
  • 习题:

(2)补码的另外一种算术移位方法:

(3)

(4)算术移位的应用:

        可以看出,机器内部的乘法运算可以转换成加法和算术移位操作,所以不用设计专门的乘法器,从而降低硬件成本。

(5)C语言中的移位运算:

        有符号数右移进行算术右移,无符号数右移进行逻辑右移。

        不管有没有符号,左移则是逻辑左移。       

        注意,这里的算术右移也是会移动符号位的。

  • 练习:

1.3 移位运算——循环运算

(1)不带CF标志位的移位过程中,CF就是存储每次移出的位,新的会覆盖老的,CF虽然存储,但是并没有起到辅助移位的作用,所以在这里说的是不带CF。

  1. 不带CF标志位的循环右移:
  2. 不带CF标志位的循环左移:
  3. 带CF标志位的循环右移:
  4. 带CF标志位的循环左移:

(2)应用:

(3)C语言实现:

2 定点数的加减法

2.1 补码的加减法

(1)         -[B]补 = [-B]补。注意,这里的-[B]补并不是说直接改变[B]补的符号位!!!这里的-[B]补要算的话还是要换成[B]原码,求真值,然后取反。或者是计算[-B]的补码。补码就是为了在计算机中将减法变为加法。而对于知道[B]补的情况下,要求[-B]补,只需要全部位按位取反,末位加1即可。(因为[-B]补+[B]补=0,对[B]补取反的值+[B]补得到的是全部位为1的值,那么末位再+1,就可以得到结果0,因为高位溢出了,所以只要对[B]补全部位取反,末位+1就可以得到[-B]补)。

  • 例题:   

2.2 补码的加减法运算的溢出检测

(1)溢出: 

(2)溢出检测方法:

  1.  法1:
  • 23
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值