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

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

各种码的作用:

模运算的性质:

-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版:基础消息收发功能体验
本实验场景介绍消息队列RocketMQ版的基础消息收发功能,涵盖实例创建、Topic、Group资源创建以及消息收发体验等基础功能模块。
消息队列 MNS 入门课程
1、消息队列MNS简介 本节课介绍消息队列的MNS的基础概念 2、消息队列MNS特性 本节课介绍消息队列的MNS的主要特性 3、MNS的最佳实践及场景应用 本节课介绍消息队列的MNS的最佳实践及场景应用案例 4、手把手系列:消息队列MNS实操讲 本节课介绍消息队列的MNS的实际操作演示 5、动手实验:基于MNS,0基础轻松构建 Web Client 本节课带您一起基于MNS,0基础轻松构建 Web Client
相关文章
|
11月前
【408计算机组成原理】—原码的乘法运算(九)
【408计算机组成原理】—原码的乘法运算(九)
|
11月前
【408计算机组成原理】—移位运算(七)
【408计算机组成原理】—移位运算(七)
|
1月前
|
存储
计算机中补码的意义
补码在计算机中用于表示有符号数,解决了符号位参与运算的问题,简化了硬件设计,同时能够表示更多的数值,提高了计算效率和精度。
60 12
|
1月前
|
存储 C语言
计算机是怎么存储整数的,原码、反码、补码又是个啥?
计算机是怎么存储整数的,原码、反码、补码又是个啥?
114 4
|
5月前
计算机中的数字表示:正码、反码和补码
计算机中的数字表示:正码、反码和补码
236 3
反码与补码的概念及其在计算机中的应用
反码与补码的概念及其在计算机中的应用
|
5月前
|
程序员
程序员必知:原码、反码、补码和移码详解
程序员必知:原码、反码、补码和移码详解
92 0
【软考学习2】数据表示——原码 反码 补码 移码
【软考学习2】数据表示——原码 反码 补码 移码
136 0
|
机器学习/深度学习 存储
进制及进制转换详解。原码、反码、移码,补码区别介绍。(通俗易懂)
Ⅰ.进制转换详解。Ⅱ.原码、反码、移码,补码区别介绍。(通俗易懂)
370 0
进制及进制转换详解。原码、反码、移码,补码区别介绍。(通俗易懂)
408计算机组成原理学习笔记——浮点数的表示和运算
408计算机组成原理学习笔记——浮点数的表示和运算
1029 1
408计算机组成原理学习笔记——浮点数的表示和运算