409计算机组成原理学习笔记——运算方法和运算电路(二)

简介: 409计算机组成原理学习笔记——运算方法和运算电路(二)

2.并行进位加法器

128497660a6041c497d5d3056c7e92fe.png

串行进位的并行加法器是逐级传递C,但第 i 个加法器输出的C可以通过电路的方式直接送到第 n - (i + 1)个加法器,如此就可以在输出C的时候直接越级传给后面的加法器,而不需要一级一级传递cc23996890ea4839a3318317a23473ef.png

3.补码加减运算器

3.1.加法器原理c6963989219047fc9a4aff1f89a98002.png

设AB为4bit

cin输入的进位:和AB的第1位(最低位)相加,生成结果的最低位

cout输出的进位:AB的第4位(最高位)和第三位的进位相加生成的进位,后输出到下一个加法器

3.2.补码加/减运算方法dc3124181cd849e186e08c4e24922b3c.png

3.3.补码加减运算器电路图ecf57e62c2d7414a94f6e7b0194b4304.png

1.若进行的是X + Y,则X直接输入,Y经过多路选择器的0输入,sub的输入为0→cin为0

2.若进行的是X - Y,则X直接输入,Y经过多路选择器的1输入,此时,Y的数据需要经过非门(按位取反)sub的输入为1(末位+1)→cin为1

5aea4ee4000644f5912f2aef95002078.png3.此电路也可以适用于无符号整数,但判断溢出的方式不同

4.标志位的生成

加法器在输出时,还会输出OF、SF、ZF和CF:设有n个bit

1.OF、SF仅对有符号数有意义,CF仅对无符号数有意义,ZF都有意义

2.有符号数溢出:OF = 1;无符号数溢出:CF = 1(发生借位/进位)

OF(Overflow)溢出:最高位(n + 1位)的进位和次高位(第n 位)的进位进行异或

SF(Sign)符号:输出结果的最高位(第n位) ,用途:判断正负

ZF(Zero)零:结果为0,则为1;结果非0,则为0

CF(Carry)进位/借位:最高位(n + 1位)的进位和sub(1为减法,0为加法)进行异或

222a56540b5e46bf9bef5a9ef2421164.png

5.定点数的移位运算

5.1.算术移位

1.算术移位可以等价实现乘法(左移)和除法(右移)

2.原码的算术移位:

①符号位保持不变,仅对数值位进行移位

②右移1位:高位补0,低位舍弃。若舍弃0,则等价于除以2;若舍弃1,则丢失精度

③左移1位:低位补0,高位丢弃。若丢弃0,则等价于乘以2;若舍弃1,则严重误差

3.反码的算术移位:

①若为正数:因为反码正数和原码相同,因此,算术移位操作相同

②若为负数(补0改为补1):

A.右移:高位补1,低位舍弃

B.左移:低位补1,高位舍弃

4.补码的算术移位:

①若为正数:因为反码正数和原码相同,因此,算术移位操作相同

②若为负数:从左往右数,第一个1的左边和反码相同,第一个1的和其右边和原码相同

A.右移:高位补1,低位舍弃(同反码)

B.左移:低位补0,高位舍弃(同原码)

5.小结:

976a9fa41d5544d6bfb039d65e78df84.png

5.2. 逻辑移位(补0)

1.逻辑移位将操作数视为无符号数

2.逻辑左移,高位丢弃,低位补0;逻辑右移,低位丢弃,高位补0

5.3.循环移位b25f2aeeef0c43b1941cda213d9fc34c.png

6.原码的乘法运算

1.原理:符号位使用异或单独处理(不参与运算),数值位取绝对值进行乘法运算

2.操作过程:

①取乘数和被乘数符号位进行异或

②加法:若当前位为1,ACC加上被乘数;若当前位为0,ACC加0(通过ALU加法电路完成)

逻辑右移:ALU的最低位成为MQ的最高位,MQ的最低位直接丢弃(错位)

③若n bit的乘法,则进行n - 1轮的加法和移位(重复n - 1轮②③),最终得到结果的绝对值

替换符号位为①中异或的结果

3.初始化:通用寄存器X存放被乘数,MQ存放乘数,ACC归零

取符号位进行异或得到结果的符号位为1

df85d6c6af2346cda2b37e316b216b91.png

①当前位为1,ACC加被乘数:(ACC)+(X)→ACC。00000 + 01101 = 011015e68d47b5d784fb3b6856308ff38ce08.png②进行错位:逻辑右移1位(高位补0),ACC的最低位移到MQ的最高位,MQ最低位丢弃faa050c51d82418e8e29647c20cd8fcd.png

③当前位为1,ACC加被乘数:(ACC)+(X)→ACC。00110 + 01101 = 10011e32f1c3f362d4b5c81423d7259416078.png

④进行错位:逻辑右移1位(高位补0),ACC的最低位移到MQ的最高位,MQ最低位丢弃cb5e2297ecdb4fac9753ee0cc1a475e1.png

⑤当前位为0,ACC加0:(ACC)+(X)→ACC。01001 + 00000 = 01001

2ac8078bc5f8416099b325a550782102.png

⑥进行错位:逻辑右移1位(高位补0),ACC的最低位移到MQ的最高位,MQ最低位丢弃d9ffc1b7a8fc48189659c30d52d0de8e.png

⑦当前位为1,ACC加被乘数:(ACC)+(X)→ACC。00100 + 01101 = 1000153386578a2914ae59e9f6db81cacd1d3.png

⑧进行错位:逻辑右移1位(高位补0),ACC的最低位移到MQ的最高位,MQ最低位丢弃7b70b47adebe46d2829cc81bb5d08fe8.png

⑨数值为为4,需要进行4次加法和移位,现在进行完毕,也就完成了乘法运算;定点小数的小数点隐含在符号位后,因此,乘法的绝对值的结果为0.1000 1111,替换异或得到的符号位,得到最后的结果1.1000 1111

















相关实践学习
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
相关文章
|
5月前
【408计算机组成原理】—原码的乘法运算(九)
【408计算机组成原理】—原码的乘法运算(九)
|
9月前
|
算法
计算机组成原理(微课版) -- 第三章 -- 运算方法与运算器
计算机组成原理(微课版) -- 第三章 -- 运算方法与运算器
|
4天前
计算机里加法器的工作原理
计算机里加法器的工作原理
22 0
|
存储
计算机的运算方法
计算机的运算方法
181 0
|
存储 人工智能 BI
计算机组成原理<四>——数据的表示和运算(下)(三)
计算机组成原理<四>——数据的表示和运算(下)
计算机组成原理<四>——数据的表示和运算(下)(三)
计算机组成原理<三>——数据的表示和运算(上)
计算机组成原理<三>——数据的表示和运算(上)
计算机组成原理<三>——数据的表示和运算(上)
【计算机组成原理】定点加减法运算
一、补码加减法的运算方法 1. 补码加法 2. 补码减法 二、溢出及检测 1. 溢出的概念 2. 溢出的检测
177 0
【计算机组成原理】定点加减法运算
408计算机组成原理学习笔记——运算方法和运算电路(一)
408计算机组成原理学习笔记——运算方法和运算电路
229 1
408计算机组成原理学习笔记——运算方法和运算电路(一)
http://www.vxiaotou.com