【计算机组成原理】(四)原码补码的加减乘除

简介: 各种码的作用:模运算的性质:

各种码的作用:

模运算的性质:

-3=(-1)*12+9

9=0*12+9

21=1*12+9

33=2*12+9

-15=(-2)*12+9

我们发现等号右边都是+9,相当于等号的左边的数除去12的余数都是9

那我们就说这几个等好左边的数,在mod12的情况下,是等价的

我们发现-3和9互为补数,两者绝对值之和=模

加减运算:

有符号数相加,当+14与-14相加,计算机怎么算呢?

+14+(-14)=0

任何运算结果在mod2的8次方后,都只会保留最低的八位

00001110(+14)

10001110(-14)

将-14取补码然后与+14相加再mod2的8次方,这样就说将减法变为加法来运算

移位运算:

算数移位

原码的算数移位——符号位不变,仅对数值进行移位

右移:高位补0,低位舍弃,舍弃的位数=0,相当于/2,如果舍弃的位不等于0,则会丢失精度

左移:低位补0,高位舍弃。舍弃的位数=0,相当于*2,如果不是0,则会出现有严重误差

补码的算数移位:

逻辑移位:

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

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

循环移位:

定点数的乘法运算:

原码一位乘法:

原码的一位乘法:符号位和数值位是分开算的

假设数值位为n位,符号位为1位,所以一共为n+1位的数值

原码的一位乘法是通过运算器来完成的

一位乘法的运算规则:
  1. 将被乘数和乘数取绝对值参加运算,看作无符号数,符号位通过两个数的符号位异或得到(x^y)
  2. 乘数(ACC)的每一位y[i]乘于被乘数(X)得到x[i]*y[i],将该结果与前面所得的结果想加后的值就是部分积(部分积是乘法过程的中间结果,初始化为0)
  3. 从参数的最低位y[n]开始判断:

当y[n]=1,则部分积加上被乘数|x|,然后右移一位(这指的右移是ACC和MQ一起右移,此时ACC的最低位会变成MQ的最高位)

当y[n]=0,则部分积+0,然后右移一位。

示例讲解:

例:设x=-0.1101,y=0.1011.采用一位乘法求x*y

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-r7MeMm2n-1684543579506)(https://typoraph.oss-cn-shenzhen.aliyuncs.com/%E5%8A%A8%E7%94%BB.gif)]

补充知识点:

异或:相同为0,相异为1

补码的一位乘法:

注意

  • 补码的一位乘法需要在MQ上加一个位置(辅助位)
  • ACC和X也因此多加了一位在前面(多加的位为符号位,即:双符号位,而MQ为单符号位)

因此每个都有n+2位

  • 下面说的MQ中的最低位其实是MQ的倒数第二位,因为最后一位是辅助位
一位乘法的运算规则:

补码一位乘法:进行 n轮加法、移位,最后再多来一次加法

每次加法可能+0、+[x]补、[-x]补

每次移位是“补码的算数右移,符号位参与运算

根据当前MQ中的最低位辅助位 来确定加什么

辅助位- MQ中最低位=1时,ACC+[X]补

辅助位-MQ中最低位 =0时,ACC+0

辅助位-MQ中最低位 =-1时,ACC+[-X]补

问题

设x=-0.1101,y=0.1011,设用Booth算法求x*y?

这是进行了n次,还要再进行一次,ACC等于11.0111

【xy】补=1.01110001 所以【x *y】等于-0.10001111

定点数的除法运算:

我们这里主要介绍的是补码的除法运算

这里需要符号位和数值位一起参加运算

规则如下:

  • 除数和被除数、商、余数都用补码表示
  • 当除数和被除数同号时,则减去除数,如果异号,则加上除数
  • 当余数与除数同号,则商上1,余数左移一位减去除数,如果异号,则商0,余数左移一位加上除数
  • 最后的时候需要商的末位恒置为1


相关实践学习
RocketMQ一站式入门使用
从源码编译、部署broker、部署namesrv,使用java客户端首发消息等一站式入门RocketMQ。
消息队列 MNS 入门课程
1、消息队列MNS简介 本节课介绍消息队列的MNS的基础概念 2、消息队列MNS特性 本节课介绍消息队列的MNS的主要特性 3、MNS的最佳实践及场景应用 本节课介绍消息队列的MNS的最佳实践及场景应用案例 4、手把手系列:消息队列MNS实操讲 本节课介绍消息队列的MNS的实际操作演示 5、动手实验:基于MNS,0基础轻松构建 Web Client 本节课带您一起基于MNS,0基础轻松构建 Web Client
相关文章
|
4月前
【408计算机组成原理】—原码的乘法运算(九)
【408计算机组成原理】—原码的乘法运算(九)
|
4月前
【408计算机组成原理】—移位运算(七)
【408计算机组成原理】—移位运算(七)
|
9月前
【软考学习2】数据表示——原码 反码 补码 移码
【软考学习2】数据表示——原码 反码 补码 移码
|
4月前
【408计算机组成原理】—原码、反码、补码、移码(六)
【408计算机组成原理】—原码、反码、补码、移码(六)
|
6月前
计算机基础中什么是原码,反码,补码和移码?各自有什么用途?
计算机基础中什么是原码,反码,补码和移码?各自有什么用途?
205 1
【计算机组成原理】原码 反码 补码 移码
一、原码、反码、补码、移码的概念 1. 真值 2. 机器数 1. 原码 2. 反码 3. 补码 4. 移码 二、原码、反码、补码、移码的转换 1. 原码转反码 2. 原码转补码 3. 原码转移码 三、总结
413 0
【计算机组成原理】原码 反码 补码 移码
【计算机组成原理】定点加减法运算
一、补码加减法的运算方法 1. 补码加法 2. 补码减法 二、溢出及检测 1. 溢出的概念 2. 溢出的检测
171 0
【计算机组成原理】定点加减法运算
|
存储
【计算机组成原理】定点数和浮点数
一、概念 1. 定点数 1. 定点小数 2. 定点整数 3. 定点数表示的范围 2. 浮点数 1. 浮点数的表示形式 2. 浮点数的表示范围 3. 浮点数的规格化 二、重点 1. 将十进制数转换为浮点数 2. 将浮点数转换为十进制数
284 0
【计算机组成原理】定点数和浮点数
|
程序员
为什么计算机中的负数要用补码表示?
为什么计算机中的负数要用补码表示
94 0
计算机原码反码补码
又把原码、反码、补码忘了,这里再来分析一下
计算机原码反码补码