定点运算

定点运算:

  • 移位
  • 加、减

一、移位

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)

https://www.jianshu.com/p/6ce9cad8b467

 

【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次
  • 所上商要通过左移操作才能移到商寄存器中

 

  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值