定点运算:
- 移位
- 加、减
- 乘
- 除
一、移位
1.算数移位规则
【不同码制机器数移位后的空位添补规则】
【Example】
2.算数移位和逻辑移位
(1)算数移位:有符号数的移位
(2)逻辑移位:无符号数的移位
二、加法 、减法
1.补码加法、减法运算基本公式
- 可以把符号位和数位同等处理。
- 无论操作数正负,在做补码加减法时,只需将符号位和数值部分一起参加运算,并且将符号位产生的进位自然丢掉即可。
(1)加法:
(2)减法:
(3)Example
TIPS:在求【-X】补码时 ——>
【1】除符号位外,各位取反加一
【2】从右向左扫描,遇到1之前照写,遇到1之后取反
2.溢出概念与检测方法
(1)溢出
- 正溢:两个正数相加,结果大于机器字长所能表示的最大正数。
- 负溢:两个负数相加,结果小于机器字长所能表示的最小负数。
(2)两种检测方法
【1】双符号位法 ——> “变形补码”
- 用变形补码做加法时,两位符号位一同参加运算。
- 可使补码所能表示的数的范围扩大一倍。
- 采用此方案时,寄存器或主存中的操作数只需保存一位符号位即可。因为任何正确的数其两个符号位的值总是相同的。
判断规则:
——根据溢出逻辑表达式,“异或运算 ”。
- “00”:正数
- “11”:负数
- “01”、“10”:溢出
- 无论是否发生溢出,最高位——代表真正的符号
【2】单符号位法
(异或)
- 符号位无进位、最高有效位有进位:正溢
- 符号位有进位、最高有效位无进位:负溢
3.基本的二进制加法/减法器
(1)一位全加器概述
- 半加器:加数和被加数为输入,和数与进位数为输出的装置。
- 全加器:加数、被加数、低位进位为输入,和数、高位进位为输出的装置。高位进位需要等到低位的进位传到才能进行。
【各种逻辑门符号 】
一位全加器(FA)
- 本质:能够计算低位进位的二进制加法电路
- 目的:实现多种算术运算和逻辑运算
1位全加器真值表 ——>
按照真值表写出FA逻辑方程 ——>
依照FA逻辑方程连接逻辑电路图 ——>
(2)行波进位的补码加法/减法器——解读
若干个1位FA全加器串连 ——> N位行波进位加法/减法器
#行波进位:串行进位,高位运算要等待低位的传到才能执行,区别于并行进位和超前进位。
#先行进位加法器:各级的进位彼此是独立产生,只与输入数据A,B和C_in有关,这样就可以减小进位产生的延时。
#超前进位加法器:使各位的进位直接由加数和被加数来决定,而不需要依赖低位进位。 增加了一个逻辑电路,大大减小了进位产生的延时。
PS:加法器的优化——超前进位加法器(Carry-Lookahead Adder,CLA)
【1】M为方式控制输入线,控制进行加法或减法运算
M=0 ,加
M=1,减
【2】电路采用单符号位法的溢出检测逻辑
【3】N位行波进位加法器的延迟时间ta的计算
位数越多,延迟时间越长。
Q:为什么一套加法器就可以实现加法、减法运算?
A:
表面上,M位的设置可以实现加减法一体运算
本质上,补码的理论支持:
- 将减法运算转换成加法运算
- 消除原码中0有两个状态的情形
- 可以实现将符号位当做数值位参与运算
三、乘法
串行方法:
串行加法器的优劣分析:
- 定义:各条机器指令按顺序串行执行
- 特点:执行完一条指命后再执行下一条
- 由于这种工作方式比较简单,容易设计和实现,所以早期的计算机和一些微处理机采用了这种方式。
- 不需要很多器件,硬件结构简单
- 速度太慢
- 由于乘法操作大约要占全部运算的三分之一,故采用“高速乘法部件”是非常重要的
1.原码并行乘法
“加法—移位” (太慢)
(1)原码一位乘运算
【1】运算规则:乘积的符号位由原码符号位异或运算结果决定; 乘积的数值部分由两数绝对值相乘。
【2】运算过程中的右移操作——逻辑右移
(2)原码两位乘运算
与原码一位乘一样,符号位的运算和数值部分是分开进行的,但原码两位乘是用两位乘数的状态来决定新的部分积如何形成,因此可提高运算速度。
人们习惯的算法对机器并不完全适用
(3)原因
【1】机器通常只有n位长,两个n位的数相乘,乘积可能为2n位。
【2】只有两个操作数相加的加法器,难以胜任将n个位积一次相加起来的运算。
2.不带符号的阵列乘法器
阵列乘法器的延迟时间:
Example:
3.带符号的阵列乘法器
(1)结构
- 2个算前求补器:将两个操作数A和操作数B在被不带符号的乘法阵列(核心部件)相乘以前,先变成正数。
- 算后求补器:当输入的两个操作数符号不一致时,把运算结果变成带符号的数(补码)。
(2) 运算
(3)带求补级的阵列乘法器 ——> 原码乘法
在原码乘法中,算前求补和算后求补都不需要,因为输入数据都是立即可用的。
(4)带求补级的阵列乘法器 ——> 补码乘法 ,需使用补求器
对2求补器电路(算术运算部件设计中经常用到)
一个具有使能控制的二进制对2求补,其逻辑表达式如下:
C-1=0, Ci=ai+Ci-1
ai*=ai⊕ECi-1, 0≤i≤n
- 在对2求补时,要采用按位扫描技术来执行所需要的求补操作。令A=an…a1a0是给定的(n+1)为带符号的数,要求确定它的补码形式。
- 求补方法:从数的最右端a0开始,由右向左,直到找出第一个“1”,例如ai=1, 0≤i≤n。这样,ai以左的每一个输入位都求反,即1变0,0变1。
- 最右端的起始链式输入C-1必须永远置成“0”。
- 利用符号位来作为控制信号: 当控制信号线E为“1”时,启动对2求补的操作;当控制信号线E为“0”时,输出将和输入相等。
- 上图三个元件组成一个扫描级
例如,在一个4位的对2求补器中,,如果输入数为1010,那么输出数应是0110,其中从右算起的第2位,就是所遇到的第一个“1”的位置。
用这种对2求补器来转换一个(n+1)位带符号的数,所需的总时间延迟为
tTC=n·2T+5T=(2n+5)T
其中每个扫描级需2T延迟,而5T则是由于“与”门和“异或”门引起的。
4.直接补码并行乘法
(1)补码与真值的转换公式
补码乘法因符号位参与运算,可以完成补码数的“直接”乘法,而不需要求补级。这种直接的方法排除了较慢的对2求补操作,因而大大加速了乘法过程。
根据[N]补的符号,补码数[N]补和真值N的关系可以表示成:
合并为统一形式:
(2)一般化的全加器形式
常规的一位全加器可假定它的3个输入和2个输出都是正权。这种加法器通过把正权或负权加到输入/输出端,可以归纳出四类加法单元。
0类全加器没有负权输入;1类全加器有1个负权输入和2个正权输入;依次类推。
对0类、3类全加器,有:
对1类、2类全加器,有:
(3)直接补码阵列乘法器
利用混合型全加器即可构成直接补码阵列乘法器
四、除法
1.手工除法运算方法
(1)启示:除法可通过减法实现
(2)问题:
- 除数移位次数不固定
- 需要长度为2n位的余数寄存器
- 如何判断每步是否够减
2.原码恢复余数除法
(1)机器不会心算,必须先做减法。
(2)若余数为正,够减,商上1,将余数左移一位,再与除数做减法比较;
若余数为负,不够减,商上0,加除数恢复成原来的值,将余数左移一位,再与除数做减法比较。
(3)步数不固定,控制也较为复杂。
(4)符号位不参与数值位运算
(5)除法中对余数的左移是“算数左移”
(6)商不会直接上传到商寄存器中 —— 需要通过左移操作
3.原码加/减交替除法运算方法(不恢复余数法)
Example:
- 运算过程中每执行一次加法都要上商。
- 当参加运算数据的位数确定时,运算过程中循环累加的次数随之确定。
- 如果是小数除法,要求被除数绝对值小于除数绝对值。
4.原码加/减交替除法实现逻辑
5.关于补码加减交替法除法
- 符号位与数值位一起参加运算
- 每次循环累加后所上商的值与本次加法时的最高进位位相同
- 字长位n时,执行除法需要进行的加法次数位n+1次
- 所上商要通过左移操作才能移到商寄存器中