计算机组成原理复习(3)

承接计算机组成原理复习(2)

5. 运算方法

先来讲一讲各种码吧;

原码、补码、反码、移码

  1. 原码
    0,xxx;0表示正数,xxx为绝对值的二进制形式;
    1,xxx;1表示负数,xxx为绝对值的二进制形式;
    注意:-1的小数形式没有原码;如-1.000没有原码表示

  2. 补码
    在这里插入图片描述
    在这里插入图片描述
    通过原码求解补码有一种简便的方式:
    a. 看正负,如果为正,则补码就是原码;如果为负,转到步骤b;
    b. 原码从右数起,到第一个1为止,这个1之前的,除了符号位以外的所有数取反;

  3. 反码

     对于负数:原码除了符号位以外,各位取反;
     对于整数:反码就是原码;
    

Tips:
y [ 补 ] → ( − y ) [ 补 ] → { 连 同 符 号 位 在 内 , 对 y [ 补 ] 每 一 位 取 反 , 末 位 加 一 } y_{[补]}\rightarrow (-y)_{[ 补]}\rightarrow \{连同符号位在内,对y_{[补]}每一位取反,末位加一\} y[](y)[]{y[]}


  1. 移码
    在这里插入图片描述
    注意:补码与移码只差一个符号位;
    由于移码恒大于等于0,且最小真值的移码为0,因此,移码可用于表示浮点数的阶码

Tips:
移码与补码对比
在这里插入图片描述


  1. 易错点小结
  • 只有补码及移码能够唯一表示0
  • 原码不能表示 -1的小数形式
  • 在码制相互转换时,首先看符号

浮点数

在这里插入图片描述

千万不要将浮点数的范围与机器表示的浮点数(或者明确指明补码表示)范围混淆

  1. 前者按照正常数学上的理解来做,例如:
    在这里插入图片描述
    注意,这里我们就拿最小负数为例,为什么是 − ( 1 − 2 − n ) -(1-2^{-n}) (12n)而不是 − 1 -1 1,这就是因为这里所谓的浮点数的范围是在人、数学层面上的,而不是计算机层面上的。
  2. 后者为计算机补码表示,其表示范围与前者存在差异,例如
    在这里插入图片描述

算术移位

在符号位不变的情况下:

  1. 先看符号,如果是正数,那么无论怎么移位,均填补0;
  2. 如果是负数,则:
  • 原码:无论左移还是右移,均填补0;
  • 补码:左移填补0,右移填补1;
  • 反码:均填补1;

加减法运算

在这里插入图片描述

  • 溢出判断
    • 单符号位判断
      在这里插入图片描述
    • 双符号位判断
      两位相同即未溢出不同即溢出,其中,最高位代表该数真正的符号

乘法运算

原码一位乘

  1. 符号单独运算,数值用绝对值计算。
  2. 右移次数为乘法运行结束标志,一般来说为乘数的位数。
  3. 例子
    在这里插入图片描述

Booth算法(补码乘法)

  1. y n + 1 − y n y_{n+1}-y_{n} yn+1yn,满足:
    在这里插入图片描述
  2. 移位次数仍然是n次,移位完毕再加则算法结束;
  3. 移位作算术移位,因为是补码运算
  4. 增加附加位 y n + 1 = 0 y_{n+1}=0 yn+1=0
  5. 硬件实现:
    在这里插入图片描述
    注意,X是被乘数寄存器,不需要移位逻辑,Q是乘数寄存器,需要补充附加位0

除法运算

推荐使用加减交替法计算,方便简单

恢复余数法

  1. 先加 [ − y ∗ ] 补 [-y^*]_{补} [y]试商,如果余数为,上商1,直接逻辑左移,继续加上 [ − y ∗ ] 补 [-y^*]_{补} [y]试商;如果余数为,先上商0,再加上 [ y ∗ ] 补 [y^*]_{补} [y]恢复余数( y ∗ y^* y代表 y y y的绝对值)
  2. 左移n次,上商n+1次;

加减交替法

  1. 如果余数为,则上商1,向左移一位,加上 [ − y ∗ ] 补 [-y^*]_{补} [y]
  2. 如果余数为,则上商0,向左移一位,加上 [ y ∗ ] 补 [y^*]_{补} [y]
  3. 一开始要用 [ − y ∗ ] 补 [-y^*]_{补} [y]试商
  4. 左移n次,上商n+1次;
  5. 硬件配置:
    在这里插入图片描述

浮点数运算

  1. 对阶
    原则: 小阶向大阶看齐;
  2. 规格化
    在这里插入图片描述
    需要记住补码、反码第一二位相反,真值和原码第二位为1即可
  3. 尾数求和
    尾数补码运算,规则和前面一致
  4. 左规和右规
    双符号位相同左规,不同右规;
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值