小奥的学习笔记

  • Home
  • Learning & Working
    • Speech Enhancement Notes
    • Programming language
    • Computer & DL
    • MOOC
  • Life
    • Life Time
    • Thinking & Comprehension
    • Volunteer
    • Plan
    • Travel
  • Footprints
  • GuestBook
  • About
    • About Me
    • 个人履历
    • 隐私策略
  1. 首页
  2. Study-notes
  3. Computer & DL
  4. Linux
  5. 正文

计算机组成原理笔记第六章(6.3~6.5)

2018年10月24日 2025点热度 0人点赞 0条评论

6.3 定点运算

一、移位运算

1.移位运算的数学意义

左移:绝对值扩大;右移:绝对值缩小。(都是数据相对于小数点移位)在计算机中,移位与加减配合,能够实现乘除运算。

2.算术移位规则

(1)符号位不变

(2)数据位规则如表3.1所示。

表3.1 移位规则

  码制 添加代码
正数 原码、补码、反码 0
负数 原码 0
补码 左移右侧添0
右移左侧添1
反码 1(代表原码里面是0)

 

例:设机器数字长为 8 位(含1位符号位),写出 A = +26时,三种机器数左、右移一位和两位后的表示形式及对应的真值,并分析结果的正确性。

解:A=+26=+11010

则原码、补码、反码均为0,0011010

移位操作 机器数 对应的真值
[A]原=[A]补=[A]反
移位前 0,0011010 +26
左移1位 0,0110100(数值最高位丢弃) +52
左移2位 0,1101000 +104
右移1位 0,0001101 +13
右移2位 0,0000110 +6

例:设机器数字长为 8 位(含1位符号位),写出 A = -26时,三种机器数左、右移一位和两位后的表示形式及对应的真值,并分析结果的正确性。

解:A=-26=-11010

则原码为1,0011010,反码为1,1100101,补码为1,1100110

原码结果如下:

移位操作 机器数 对应的真值
移位前 1,0011010 -26
左移1位 1,0110100(数值最高位丢弃) -52
左移2位 1,1101000 -104
右移1位 1,0001101 -13
右移2位 1,0000110 -6

补码结果如下:

移位操作 机器数 对应的真值
移位前 1,1100110 -26
左移1位 1,1001100(数值最高位丢弃) -52
左移2位 1,0011000 -104
右移1位 1,1110011 -13
右移2位 1,1111001 -7

反码:

移位操作 机器数 对应的真值
移位前 1,1100101 -26
左移1位 1,1001011(数值最高位丢弃) -52
左移2位 1,0010111 -104
右移1位 1,1110010 -13
右移2位 1,1111001 -6

 

3.算术移位的硬件实现

图3.1 算法移位的硬件实现

在移位过程如果1被移掉会怎样:

左移:(a)出错(b)出错(c)正确(丢掉0出错)(d)正确

右移:(a)影响精度(b) 影响精度(c) 影响精度 (d)正确

 

4.算术移位与逻辑移位的区别

算术移位:有符号数的移位(符号位不动);逻辑移位,无符号数的移位(符号位也参加移动)

逻辑左移,低位添0,高位移丢;逻辑右移,高位添0,低位移丢。

 

二、加减法运算

1.补码加减法运算的公式

如图3.2所示。

图3.2 补码加减运算公式

2.溢出的判断

(1)一位符号位判溢出

参加操作的两个数(减法时即为被减数和“求补”以后的减数)符号相同,其结果的符号与原操作数的符号不同,即为溢出。

硬件实现:最高有效位的进位(异或)符号位的进位=1,溢出。

如:

简单说一下,假如原来两个数都是正数,那么符号位是0,如果他们相加,进到符号位了一个1,符号位变成了1,但是符号位不会向上进位,所以符号位进位为0。所以符合有溢出的第1种情况。其它可以如此解释。

(2)两位符号位判溢出

3.补码加减法的硬件配置

[x]补’+[y]补’=[x+y]补’

[x-y]补’=[x]补’+[-y]补’

结果的双符号位相同,未溢出:00,xxxxx/11,xxxxx

结果的双符号位不同,溢出:10,xxxxx/01,xxxxx

最高符号位代表其真正的符号!

3.补码加减法的硬件配置

图3.3 补码加减法的硬件配置

三、乘法运算

1.原码的乘法运算

一些认识:

(1)乘法运算可以用加和移位实现;

(2)由乘数的末位决定被乘数是否与元部分积相加,然后右移1位形成新的部分积,同时乘数左移1位(末位丢弃),空出高位存放部分积的低位;

(3)被乘数只与部分积的高位相加。

(1)原码一位乘运算规则

以小数为例

2.补码的乘法运算

(1)补码一位乘法运算

以小数为例:设备乘数[x]补=x0.x1x2…xn,乘数[y]补=y0.y1y2…yn

①被乘数任意,乘数为正

与原码乘相似,但加和移位按补码规则运算。乘积符号的自然形成

②被乘数任意,乘数为负

乘数[y]补去掉符号位,操作同①。最后加[-x]补,校正。

③Booth算法(被乘数、乘数符号任意)

如图3.4所示。

图3.4 Booth算法

④Booth算法递推公式

图3.5 Booth算法递推公式

整数乘法和小数乘法过程完全相同,可用逗号代替小数点。原码乘,符号位单独处理,补码乘,符号位自然形成。

原码乘去掉符号位运算,即为无符号数乘法。不同的乘法运算需有不同的硬件支持。

四、除法运算

1.笔算除法

心算上商,余数不动低位补“0”,然后减右移一位的除数,上商的位置不固定。

2.笔算除法与机器除法的比较

笔算除法 机器除法
商符单独处理,心算上商 符号位异或形成,|x|-|y|>0,上商1;否则上商0
余数不动,低位补0,减右移一位的除数。 余数左移一位,低位补零,减除数。
2倍字长加法器,上商位置不固定 1倍字长加法器,在寄存器最末尾上商。

 

3.原码除法

以小数为例

[x]原=x0.x1x2…xb

[y]原=y0.y1y2…yn

[x/y]原=x0⊕y0·x*/y*

式中,x*=0.x1x2…xn为x的绝对值;y*=0.y1y2…yn为y的绝对值。

商的符号位单独处理:x0⊕y0;数值部分为绝对值相除x*/y*。

约定:小数定点除法x*<y*,整数定点除法x*>y*。被除数不等于0,除数不能为0。

(1)恢复余数法

例6.24 x=-0.1011,y=-0.1101,求[x/y]原,假设机器字长为5位,其中符号位1位,数值位4位。

解:[x]原=1.1011,[y]原=1.1101,[y*]补=0.1101,[-y*]补=1.0011

①x0⊕y0=1⊕1=0

②如下表:

[table id=1 /]

 

所以x*/y*=0.1101

所以[x/y]原=0.1101

余数为正,上商1;余数为负,上商0,恢复余数。

上商5次(第一次是0),第一次上商判溢出,移4次。

(2)加减交替法

运算规则:

设余数为Ri,

上商“1”:2Ri-y*;上商“0”:2Ri+y*。仍然是余数为正,上商1;余数为负,上商0。

例6.25 x=-0.1011,y=-0.1101,求[x/y]原,假设机器字长为5位,其中符号位1位,数值位4位。

解:[x]原=1.1011,[y]原=1.1101,[x*]补=0.1011,[y*]补=0.1101,[-y*]补=1.0011。

图3.6 例6.25图解

特点:上商n+1次,第一次上商判溢出,移n次,加n+1次,用移位的次数判断除法是否结束。

(3)原码加减交替除法硬件配置

图3.7 硬件配置

6.4 浮点四则运算

一、浮点数的加减运算

我们令x=Sx·2jx,y= Sy·2jy

1.对阶

(1)求阶差。如图4.1所示。

图4.1 阶码对齐方案

(2)对阶原则

小阶向大阶看齐。

例如:x=0.1101*201,y=(-0.1010)*211,求x+y。

解:[x]补=00,01;00.1101

由于阶码不相等,所以先需要求阶差。[Δj]补=[jx]补-[jy]补=11,10。所以x要向y看齐。进行对阶:[x]补’=00,11;00.0011

然后进行尾数求和,[Sx]补’+[Sy]补=11.1001。

所以[x+y]补=00,11;11.1001。

3.规格化

(1)规格化数的定义

r=2,1/2<=|S|<1

(2)规格化数的判断

S>0 规格化形式 S<0 规格化形式
真值 0.1XX…X 真值 -0.1XX…X
原码 0.1XX…X 原码 1.1XX…X
补码 0.1XX…X 补码 1.0XX…X
反码 0.1XX…X 反码 1.0XX…X

原码:不论正数、负数,第一数位均为1;补码,符号位和第一数位不同。

特例:

  1. S=-1/2=-0.100…0,其原码为1.100…0,补码为1.100…0,所以[-1/2]补不上规格化的数。
  2. S=-1,[S]补=1.000…0,所以[-1]补是规格化的数。

(3)左规

尾数左移一位,阶码减1,直到数符和第一数位不同为止。

(4)右规

当尾数溢出(>1)时,需右规。即尾数出现01.XX…X或10.XX…X时。尾数右移1位,阶码加1。

两个整数相加就有可能造成01.XX…X这种方式的溢出。其实0是符号位,1是数值位。

 

例6.27 x=0.1101*210,y=0.1011*201。求x+y(除阶符、数符外,阶码取3位,尾数取6位)。

图4.2 例6.27解答

4.舍入

在对阶和右规过程中,可能出现尾数末位丢失,引起误差,需考虑舍入。

(1)0舍1入法;

(2)恒置“1”法。

例6.28 如图4.3所示。

图4.3 例28解答

5.溢出判断(整个浮点数的溢出)

设机器数为补码,尾数为规格化形式,并假设阶符取2位,阶码的数值部分取7位,数符取2位,尾数取n位,则该补码在数轴上的表示为

图4.4 溢出判断

    所谓下溢,就是阶码比-128还小(阶码为10,XX…X),按机器零处理;所谓上溢,就是阶码比127还大(阶码为01,xx…x)。

6.5 算数逻辑单元

一、ALU电路

图5.1 ALU电路

    ALU是一个组合逻辑电路,是没有记忆功能的。为了对输出结果进行保存,要在Ai和Bi还有输出端有寄存器。控制端控制运算方式。例如74181,M=0做算术运算,M=1做逻辑运算。

二、快速进位链

1.并行加法器

图5.2 并行加法器

对于每一个FA,有3个输入(2个输入为加数,1个为仅为信息C)、2个输出(一个是结果Sn,一个是进位信息C)。下面对这个并行加法器做一个分析:

 

Ci生成和Ai、Bi有关系。若Ai和Bi都为1,则一定会进位,Ai或Bi有一个为1,那么Ci-1的值就会被传送给Ci。所以,di=AiBi称为本地进位;ti=Ai+Bi称为传送条件。则Ci=di+tiCi-1。

2.串行进位链(通常情况下)

进位链就是传送进位的电路。串行进位链就是进位进行串行传送。以4位全加器为例,每一位的进位表达式为如图5.3中式子所示。设与非门的级延迟时间为ty。

图5.3 串行进位链

    4位全加器产生进位的全部时间为8ty,n为全加器产生进位的全部时间为2nty。

3.并行进位链(先行进位,跳跃进位)

n位加法器的进位同时产生,以4位加法器为例如图5.4所示。

图5.4 并行进位链

(1)单重分组跳跃进位链

n位全加器分若干小组,小组中的进位同时产生,小组与小组之间采用串行进位。以n=16为例。如图5.5所示。

图5.5 单重分组跳跃进位链

 

(2)双重分组跳跃进位链

n位全加器分若干大足,大足中又包含若干小组。每个大租中小组的最高位进位同时产生。大组和大组之间采用串行进位。

图5.6 双重分组跳跃进位链

本作品采用 知识共享署名 4.0 国际许可协议 进行许可
标签: 计算机组成原理
最后更新:2018年10月24日

davidcheung

这个人很懒,什么都没留下

打赏 点赞
< 上一篇
下一篇 >

文章评论

razz evil exclaim smile redface biggrin eek confused idea lol mad twisted rolleyes wink cool arrow neutral cry mrgreen drooling persevering
取消回复

搜索
欢迎关注我的个人公众号
最新 热点 随机
最新 热点 随机
DEEPFILTERNET:一种基于深度滤波的全频带音频低复杂度语音增强框架 奥地利匈牙利九日游旅程 论文阅读之Study of the General Kalman Filter for Echo Cancellation 小奥看房之鸿荣源珈誉府 杭州往返旅途及西溪喜来登和万怡的体验报告 2022年的第一篇碎碎念
奥地利匈牙利九日游旅程论文阅读之Study of the General Kalman Filter for Echo CancellationDEEPFILTERNET:一种基于深度滤波的全频带音频低复杂度语音增强框架
已修:模拟电子技术基础【清华大学】[2015-01-27] 英语四六级写作25个加分句型 小花豆生活第16天:无题 QQ For Meizu小奥修改版发布 第二个“四周”计划[2nd Four Weeks Plan] 济南市生态环境局关于作出《济莱高铁项目前期工作筹备组新建济南至莱芜高速铁路项目环境影响报告书》审批决定的公告
标签聚合
生活 linux 高中 学习 python学习 Java 算法 leetcode Python 鸟哥的linux私房菜
最近评论
davidcheung 发布于 5 个月前(02月09日) The problem has been fixed. May I ask if you can s...
tk88 发布于 5 个月前(02月07日) Hmm is anyone else having problems with the pictur...
cuicui 发布于 9 个月前(10月20日) :wink:
niming 发布于 10 个月前(09月19日) 同级校友,能刷到太巧了
davidcheung 发布于 2 年前(08月16日) 我得找一下我之前整理的word文档看一下,如果找到了我就更新一下这篇文章。
Nolan 发布于 2 年前(07月25日) 您的笔记非常有帮助。贴图不显示了,可以更新一下吗?
davidcheung 发布于 3 年前(06月19日) 到没有看webrtc的代码。现在主要在看我们公司的代码了。。。只是偶尔看一看webrtc的东西。。。
aobai 发布于 3 年前(03月13日) gain_change_hangover_ 应该是每三个block 只能够调整一次,这样保证每帧...
匿名 发布于 5 年前(12月30日) 烫
小奥 发布于 5 年前(12月12日) webRTC里面的NS本身我记得就是在C++里面呀

COPYRIGHT © 2025 小奥的学习笔记. ALL RIGHTS RESERVED.

Theme Kratos Made By Seaton Jiang

陕ICP备19003234号-1

鲁公网安备37120202000100号