第1章 计算机系统概论(4学时)
本章的内容重点旨在搞清楚计算机的系统层次结构,包括计算机硬件的基本组成(五大部件的构成)、计算机软件的分类,以及计算机的基本工作过程。还需要了解计算机性能评价指标和相关参数。
例题1.1 什么是计算机系统?说明计算机系统的层次结构。
【解】计算机系统包括硬件和软件。从计算机系统的层次结构来看,它通常可有五个以上的层次,在每一个层次上上都能进行程序设计。由下至上可排序为:第一级微程序机器级,微指令由硬件直接执行;第二级传统机器级,用微程序解释机器指令;第三级操作系统级,一般用机器语言程序解释执行操作系统调度控制命令;第四级汇编语言机器级,这一级由汇编程序支持和执行;第五级高级语言机器级,采用高级语言编程,由各种高级语言编译程序支持和执行。上述五级中的第一级和第二级是物理机器级,由硬件直接支持执行;第三级及以上级皆由相应的程序支持执行,所以属于虚拟机。还可以有第六级、第七级等由特定的应用程序支持的更高级虚拟机。
例题1.2 什么是主机?什么是CPU?什么是存储器?简述它们的功能。 【解】主机包括运算器、控制器和存储器。其功能是在控制器的指挥下,逐条地从存储器中取出指令、分析指令,发出各种不同的命令,在运算器中完成各种算术逻辑运算,并将结果存储与存储器中。
CPU包括运算器和控制器,又称为中央处理机,它具有运算器和控制器的功能。
存储器用来存放程序和数据。
例题1.3 计算机的硬件指标有哪些? 【解】计算机的硬件指标主要有:
(1) 机器字长:CPU一次能处理数据的位数,通常与CPU的内部寄存器位数
1
有关;
(2) 存储容量:包括主存容量和辅存容量,是存放二进制信息量的总和,可用
位(bit)或字节(Byte)来衡量;
(3) 运算速度:可用MIPS(Million Instruction Per Second,每秒执行的百万条指
令数)、CPI(Cycle Per Instruction,每执行一条指令所需的时钟周期数)或FLOPS(Floating Point Operation Per Second,每秒浮点运算次数)来衡量运算速度。
例题1.4 什么是机器字长?指令字长、存储字长?
【解】机器字长指CPU一次能处理数据的位数,通常与CPU的内部寄存器位数有关。指令字长是指机器指令中二进制代码的总位数。存储字长是指存储单元中存放二进制信息的总位数。三者可以相等也可以不等,视不同机器而定。
第3章 系统总线(6学时)
总线就是一组进行互连和传输信息(指令、数据和地址)的信号线,通过本章的学习,要重点掌握:
(1) 总线的基本概念,总线的分类,以及总线的组成和性能指标(例如,各类
总线的宽度会影响哪些部件的性能等)。
(2) 总线操作规程、总线通信控制方式(同步通信方式和异步通信方式)及总线
仲裁方法(包括集中仲裁方式和分布仲裁方式)。
(3) 对总线的标准(正式标准和工业标准)有所了解,总线标准主要规定总线的
机械结构规范、功能结构规范和电气规范。
例题3.1 为了减轻总线负载且避免多个部件同时使用总线,总线上的部件应具备什么特点?
【解】以CPU片内总线为例,在每个需要将信息送至总线的寄存器输出端接
2
三态门,由三态门的控制端控制什么时刻由哪个寄存器输出。当输出端无效时,寄存器和总线之间呈高阻状态。如下图所示:
3
例题3.2 什么是总线的负载能力?
【解】总线的负载能力即驱动能力,通常是当指总线街上负载(功能设备,如CPU、存储器、设备接口等)后,总线输入输出的逻辑电平是否能保持在正常的额定范围内。例如,PC总线中的输出信号在输出低电平时,要吸收电流,这时的负载能力即指当它吸收的电流超过规定值时,仍能保持额定的逻辑低电平。总线输出高电平时,要输出电流,这使得负载能力即指当它向负载输出的电流超过规定值时,仍能保持额定的逻辑高电平。
例题3.3 某总线在一个总线周期中可并行传送8个字节数据。假设一个总线周期等于一个时钟周期,总线的时钟周期频率为66MHz,求总线的带宽。并分析哪些因素影响总线的带宽。
【解】总线带宽是指单位时间内总线上可传输数据的位数,通常用每秒钟传送信息的字节数来衡量,单位可用字节/秒(Bps)表示。
设总线的时钟频率为f,则总线的时钟周期T=1/f,根据在一个总线周期(即一个时钟周期)内并行传输8B,得总线带宽为:
8B/T=8 B×f=8B×66×106Hz=528M Bps (1M=220)
影响总线带宽的因素有:总线传输频率、总线宽度、传输距离以及数据传输形式(并行、串行)等
例题3.4 设一个32位微处理器配有16位的外部数据总线,时钟频率为50MHz,若总线传输的最短周期为4个时钟周期,试问处理器的最大数据传输率是多少?若想提高一倍数据传输率,可采用什么措施? 【解】根据题目给定的数据,该总线的最短传输周期为:
4
T=4/(50MHz)=4×20×10s=80×10s
对于外部总线为16位的处理器,最大数据传输率为: 2B/T=2B/(80×10-9s)=25×106 Bps
若想提高一倍数据传输率,可采用以下两种措施:
(1)外部数据总线宽度改为32位,CPU的时钟频率仍为50MHz,则数据传输率
为:4B/T=4B/(80×10-9s)=50×106 Bps
(2)时钟频率加倍至100MHz,外部数据总线宽度仍为16位,则数据总线的传
输周期为:T'=4/(1OOMHz)=40×10-9s
数据传输率为:2B/T'=2B/(40×10-9s)=50×106 Bps
例题3.5 在高档PC机中,流行使用三总线(系统总线、PCI总线、ISA总线)结构。说明这三种总线的连接关系,并举例说明每组总线上所连接的部件。 【解】高档PC机中,系统总线主要连接CPU与存储器;PCI总线主要连接多媒体卡、高速局域网适配器、高性能图形显示卡等高速部件;ISA总线连接传统低速设备,如针式打印机等。系统总线和PCI总线通过PCI桥路相连,PCI总线又通过标准总线控制器与ISA总线相连。 下图是Pentium4的总线结构:
5
-9-9
Pentium4处理器Pentium4接口分4层:第1层北桥;第2层南桥;第3层AGP控制器、PCI控制器及并行端口控制器(LPC Super);第4层设备接口。400MHz内存北桥AGP显控制器卡266Mb/sPCIPCI33MHz视频声卡光盘SCSI控制器网卡硬盘南桥LANUSB控制器IDE键盘SuperLPC串口并口鼠标软驱ISA插槽ISA 8MHz6
第6章 计算机的运算方法
本章重点掌握的内容如下:
(1)掌握十进制、二进制、八进制、十六进制数据的表示及其相互转换的方法。 (2)掌握真值(实际的数值)和机器数(计算机中表示的数值)之间的关系,特别是负数的各种机器表示:原码、反码、补码等,要搞清楚它们之间的关联与区别。 (3)在计算机中对数据进行计算,分为定点表示和浮点表示。在定点数的表示和运算方面,要掌握定点数的表示(无符号数的表示,有符号数的表示)和定点数的运算,包括定点数的位移运算、补码定点数的加/减运算、溢出概念和判别方法。在浮点数的表示和运算方面,要掌握浮点数的表示(浮点数的表示范围和IEEE754标准)和浮点数的加/减运算。
(4)要掌握串行加法器和并行加法器、算术逻辑单元ALU的功能和结构。 重点内容归纳如下: (1)计算机中数的表示
? 无符号数和有符号数
在计算机中参与运算的数可以是无符号数,例如操作数的地址。地址作为无符号整数,可以存放在相应的存储电路(存储单元或寄存器)中。计算机中表示的无符号数每一位都代表一个数值。
当计算机中参与运算的数是有符号数时,符号的正、负可用数字“0”和“1”表示,并将其置于存放单元的最左位(最高位)上,即,有符号数在计算机中的表示是最高位为符号位,“0”表示“+”,“1”表示“-”。其后是数值位。这种符号“数字化”的数叫做机器数,而带“+”或“-”符号的数叫做真值。
机器数有原码、补码、反码和移码四种,它们有如下特点: ①
当真值为正时,原码、补码、反码表示的形式相同,即符号位为“0”,数值部分与真值相同;当真值为负时,原码、补码、反码表示的形式不相同,其符号位都是“1”,但数值部分存在这样的关系:补码
7
是原码的“每位求反末位加1”,反码是原码的“每位求反”。
②
对于同一个真值,补码和移码只差一个符号位:移码“1”表示“+” “0”表示“-”。
③
用不同的机器数表示“±0”时,其形式是不同的,即
[+0]原≠[-0]原,[+0]补=[-0]补,[+0]反≠[-0]反,[+0]移=[-0]移
④
原码、补码和反码既可以表示小数,也可以表示整数。为了便于区分,本书特约定:用小数点“.”将符号位和数值位隔开的机器数一律为小数;用逗号“,” 将符号位和数值位隔开的机器数一律为整数。当机器字长确定后,补码比原码和反码能多表示一个负数。
⑤
移码只能表示整数,用它表示浮点数的阶码时,能方便地判断阶码的大小。
? 数的定点表示和浮点表示 ① 定点表示
小数点固定在某一位置的数为定点数,定点数在机器中的表示形式如下图所示:
小数点位置 小数点位置
当小数点位于数符Sf和第一数值位S1之间时,机器内的数为纯小数;当小数点位于数值位S1 S2 ? Sn之后时,机器内的数为纯整数。采用定点数的及其叫定点机。不同的机器数在小数定点机中或整数定点机中数的表示范围是不同的,假设数值部分的位数为n,则三种机器数的表示范围如下表所示:
小数定点机 整数定点机 原码 -(1-2-n)~(1-2-n) -(2n -1)~(2n -1) 补码 -1~(1-2-n) -2n~(2n -1) 反码 -(1-2-n)~(1-2-n) -(2n -1)~(2n -1) Sf S1 S2 ? Sn Sf S1 S2 ? Sn
8
② 浮点表示
小数点的位置可以浮动的数为浮点数,浮点数在机器中的表示形式如下图所示:
jf j1 j2 ? jm Sf S1 S2 ? Sn 阶符 阶码值 数符 尾数的数值
浮点数由阶码j和尾数S两部分组成。阶码是整数,可正可负,一般用表示 定点整数的移码表示。阶符和阶码的位数m合起来反映了浮点数的表示范围及小数点的实际位置;尾数是小数,可用表示定点小数的原码或补码表示。尾数也是可正可负,其位数n反映了浮点数的精度;尾数的符号代表浮点数的正负,即数符Sf。
③ IEEE754标准
IEEE754单精度(single-precision)浮点数格式
IEEE754单精度浮点数由3部分组成:符号(sign)、阶码(exponent)和尾数(fraction)。格式为32位:
31 30 ? 23 22 ? 0 s e f 其中s为1位符号位,0为正,1为负;e为8位阶码,用移码表示,移码值为127;f为23位尾数,小数点前面的“1”隐藏掉了。 规格化(normalized)的数值可以表示为:V=(-1)s ?2e-127 ?1.f
IEEE754双精度(single-precision)浮点数格式
IEEE754双精度浮点数也由3部分组成:1位符号位s、11位阶码e和52位尾数f。移码值为1023。
格式为64位: 62 62 ? 52 51 ? 0 s e f 9
(2)定点运算
? 移位运算
包括算术移位和逻辑移位。算术移位时,最高符号位不变;逻辑移位时,最高位可变。
当真值为正数,三种机器数算术左移时,最高数值位丢“1”,结果溢出; 算术右移时,最低数值位丢“1”,影响精度。
当真值为负数:
原码算术左移时,最高数值位丢“1”,结果溢出,算术右移时,最低数值位 丢“1”,影响精度。
补码算术左移时,最高数值位丢“0”,结果溢出,算术右移时,最低数值位 丢“1”,影响精度。
反码算术左移时,最高数值位丢“0”,结果溢出,算术右移时,最低数值位 丢“0”,影响精度。
逻辑左移时,低位补“0”,高位移丢;逻辑右移时,高位补“0”,地位移丢。
? 加法与减法运算 补码加减运算规则
加法:
整数[A]补+[B] 补=[A+B] 补 (mod 2n+1) n为整数的位数 小数[A]补+[B] 补=[A+B] 补 (mod 2) 减法:
整数[A]补+[-B] 补=[A-B] 补 (mod 2n+1) n为整数的位数 小数[A]补+[-B] 补=[A-B] 补 (mod 2)
可见,计算机中补码加减运算一律用加法器实现。对于减法,只需将减
数(已是补码)包括符号位在内“每位取反”,然后直接送入加法器,并使加法器的进位输入端有效即可。
溢出判断
定点加减运算出现溢出时,运算结果是错误的。有三种方法判断溢出。 ① 采用一位符号位判断溢出:两个操作数的符号相同,结果符号与操作数
10
的符号不同,则结果溢出。
② 采用双符号位判断溢出:运算结果的两位符号位相同,表示没有溢出; 运算结果的两位符号位不同,表示溢出,此时的最高符号位代表真正的符号。
③ 采用一位符号位,并结合数值位的进位判断溢出:如果符号位的进位与 最高数值位的进位不同则表示结果溢出。
补码定点加减运算硬件配置 补码加减运算硬件配置如下图所示: 溢出 判断 图中GA为加法标记,GB为减法标记,V为溢出标记,寄存器A存放被加数或被减数及结果的补码,寄存器X存放加数或减数的补码。做减法时,由“求补控逻辑”将X每位取反送至加法器,并使加法器的最低位进位输入为1,以达到减数求补(加机器负数)的目的。
? 原码乘法
原码乘法的特点是乘积的符号和数值部分(绝对值)的运算分开进行。由于每 次可根据一位乘数或两位乘数来判断部分积如何加被乘数,故原码乘法又有一位乘和两位乘之分,但我们只要求学生了解原码一位乘法运算规则。
原码一位乘法规则:两个原码数相乘,其乘积的符号为相乘两数的异或值,数值则为两数绝对值之积。
假设[X]原=X0X1X2?Xn ,[Y]原=Y0Y1Y2?Yn
则[X·Y]原=[X]原×[Y]原=(X0⊕Y0)|(X0X1X2?Xn)×(Y0Y1Y2?Yn) 符号“|”表示把符号位和数值邻接起来。
11
V 0 A n GA GB 加法器(n+1位) 求补控制 逻辑 0 X n 原码一位乘法实现流程图:
实现原码一位乘法的基本硬件配置框图如下所示:
图中寄存器均为n+1位,乘法开始后,首先通过异或运算(图中未画出)求出乘积的符号,存于S中,接着将被乘数和乘数变为绝对值,然后开始做加和移位操作。乘法结束时,部分积的高位在A中,低位在Q中。计数器C用于控制移位的次数,判断乘法是否结束,GM为乘法标记,移位和加控制逻辑受Q寄存器的末位Qn控制。
结束 Y A0←(X0)⊕(Q0) (C)=0?C←(C)-1 N (A)、(Q)右移一位 Y A←(A)+(X) Qn=1? A←0 X←被乘数 Q←乘数 C←n(n为乘数的数值位数) N 开始 12
0 X n 计数器C S GM 控制门 右移 0 A n 0 Q Qn 加法器(n+1位) 移位和加控制逻辑 原码一位乘法的基本硬件配置框图
? 定点原码一位除法
有恢复余数法和加减交替法两种方法,在计算机中常用的是加减交替法,因为它的操作步骤少,而且也不复杂。
两个原码数相除,其商的符号为两数符号的异或值,数值则为两数绝对值相除后的结果。
加减交替法的规则如下:
当余数为正时,商上1,求下一位商的办法,是余数左移一位,再减去除数;当余数为负时,商上0,求下一位商的办法,是余数左移一位,再加上除数。此方法不用恢复余数,所以又叫不恢复余数法。但若最后一次上商为0,而又需得到正确余数,则在这最后一次仍需恢复余数。共上商n+1次(n为除数的位数) ,第1次商可判溢出,移位n次。
注意:
(1) 商的符号为相除二数的符号的异或。
(2) 小数除法的商必须是小数,整数除法的商必须为整数,因此,小数除法的被除数和除数均为小数,且被除数的绝对值小于除数的绝对值;而整数除法的
13
被除数和除数均为整数,且被除数的绝对值大于除数的绝对值,并且要求被除数取双倍字长(2n位),其中高n位必须小于除数(n位)。当被除数和除数字长相同时,可以通过指令将被除数扩展为双倍字长。
原码除法的硬件配置如下图所示: 0 A n 0 Q Qn 左移 移位和加减控制逻辑 减 0 X n 计数器C 控制门 加 加法器(n+1位) GD S V 原码加减交替除法运算的基本硬件配置
图中寄存器均为n+1位,除法开始时,对于小数除法,A寄存器存放被除数的原码,X寄存器存放除数的原码,Q寄存器为0,计数器C用于控制移位的次数。除法开始后,首先通过异或运算(图中未画出)求出商的符号,存于S中,接着将被除数和除数变为绝对值,然后开始上第一次商,并用其判断是否溢出。若溢出,置溢出标记V;若未溢出,则继续做加(减)和移位及上商操作(上商电路图中未画出),直到上商全部结束为止。GD为除法标记,移位和加减控制逻辑受Q寄存器的末位商Qn控制。
对于整数除法,A、Q寄存器存放被除数的原码,其它同小数除法。 运算过程中,放被除数和商的寄存器同时移位,并将商寄存器中的最高位移到被除数寄存器的最低位中。最终除法结束时,商在Q寄存器中,余数在A寄存器中。
14
(3)浮点运算
浮点数在计算机中是由一对定点数阶码和尾数组成,设基值为2,两浮点数为:
x=Sx×2jx y=Sy×2jy
浮点运算的特点是:阶码和尾数运算分开进行。 ? 浮点加减运算
浮点加减运算一律采用补码。 ① 对阶
先求阶差,然后以小阶向大阶看齐的原则,将阶码小的尾数右移1位,阶码加1,直到两数阶码相等为止。 ② 尾数求和差
将对阶后的尾数按定点补码加减运算过则运算。 ③ 规格化
以双符号位为例:
左归:尾数左移1位,和的阶码(大阶)减1,直至尾数为
00.1xx ? x或11.0xx ? x
右归:当尾数求和结果的两位符号位不同时(即10.xx ? x或01.xx ?
x),尾数溢出,但浮点数并未溢出,此时可通过右移1位尾数,和的阶码(大阶)加1的方法调整。
④ 溢出判断
以双符号位为例,当和的阶码的符号位出现“01”时,表示上溢,进入
溢出中断处理;当和的阶码的符号位出现“10”时,表示下溢,按机器零处理。
⑤ 舍入
在对阶和右归的过程中,可能会将尾数低位丢掉,引起误差,影响精度,可 用“0”舍“1”入法或恒置“1”法原则舍入。
? 浮点乘除运算
浮点乘除运算的阶码采用补码,尾数采用补码或原码。
15
① 阶码运算
浮点乘除法的阶码运算分别按照定点加(乘法)减(除法)法完成。 ② 尾数运算
浮点乘除法的尾数运算分别按照定点乘除运算规则完成。 ③ 规格化
浮点乘除运算结果需要规格化,规格化原则同浮点数加减运算。
? 浮点运算器的硬件配置
浮点运算器比定点运算器复杂,主要由两个定点运算部件组成,一个是
阶码运算部件,完成阶码的对阶、加减运算;另一个是尾数运算部件,用来完成尾数加减乘除运算以及规格化处理。此外,还要有结果溢出判断电路等。
(4)并行加法器和进位链
运算器可由寄存器和全加器组成。随着操作数的位数的增加,电路中进位的速度对运算时间的影响也增大。为了提高运算速度,除了采用高速芯片和改进算法(如将两位乘法代替一位乘法等)外,普遍采用先行进位的方法,即高位的进位不必等待由低位的进位传递产生,而是与低位的进位同时产生。如果把传递进位的电路称作进位链,那么实现先行进位的进位链通常采用单重分组进位链和双重分组进位链两种。
单重分组进位链是将n位加法器分成若干小组,小组内的进位同时产生,小组间的进位串行传递,故这种进位又称为“组内并行,组间串行”。
双重分组进位链是将n位全加器分成几个大组,大组内又包含若干小组,每个大组内所包含的各小组的最高位进位是同时产生的,小组内的其它进位也是同时产生的,大组与大组之间采用串行进位。故这种进位链又有“组(小组)内并行,组(小组)间并行”之称。
16
例题精选:
例1 设机器字长为16位(其中一位为符号位),对于整数,当期分别代表无符号数、原码、补码和反码时,分别写出其对应的十进制数范围及机器数形式(用十六进制表示)。
【解】16位机器数对应的真值范围及机器数形式如下表所示:
机器数 无符号数 原码 补码 反码
例2 设浮点数字长16位,其中阶码4位(含1位阶符),尾数12位(含1位数符),将(51/128)十转换成二进制规格化浮点数及机器数(其中阶码采用移码,基址为2,尾数采用补码),并回答此浮点格式的规格化数表示范围。
【解】
(51/128)十=0.0110011=2-1×0.1100110
阶码采用移码,尾数采用补码的机器数为:0,111;0.11001100000。 按题目给定的浮点格式的规格化数表示范围是: 最大正数为:2×(1-2) 最小正数为:2×2=2 最大负数为:-2×(2+2) 最小负数为:2×(-1)= -2
例3 设浮点数字长为16位,其中阶码8位(含1位阶符),尾数8位(含1位数符),阶码采用移码表示,基址为2,尾数采用补码表示,计算:
(1)机器数为81D0H的十进制数值; (2)此浮点格式的规格化表示范围。
17
7
7
-8
-1
-11
-8
-1
-9
7
-11
十进制数范围 0~65535 -32767~+32767 -32768~+32767 -32767~+32767 机器数形式 0000H~FFFFH FFFFH~7FFFH 8000H~7FFFH 8000H~7FFFH 【解】
(1)81D0H=1000 0001 1101 0000,
十进制数为:21×(-0.011)二=(-0.375)十 (2)按题目给定的浮点格式的规格化数表示范围是:
最大正数为:2×(1-2) 最小正数为:2
-128127
-7
×2-1=2-129 ×(2-1+2-7)
127
最大负数为:-2
-128
最小负数为:2×(-1)= -2
127
例4 给定下列十六进制数,若将此数分别视为无符号数、原码、补码、反码和移码表示,写出其对应的十进制整数值(有符号数的符号位占一位)。
00H,05H,7FH,80H,85H,FEH,FFH 【解】对应的十进制整数值如下表所示: 十六进制数 无符号数 00 05 7FH 80H 85H FEH FFH
例5 设浮点数字长为32位,欲表示±6×10的十进制数,在保证数的最大精度条件下,除阶符、数符各取1位外,阶码和尾数各取几位?按这样分配,该浮点数溢出的条件是什么?
【解】因为阶码决定数据的大小范围,而216=65536,能覆盖±6×10。所以阶码的绝对值应为16,故阶码至少需要5位(不含阶符)二进制位;尾数(不含数
4
原码 +0 +5 +127 -0 -5 -126 -127 补码 ±0 +5 +127 -128 -123 -2 -1 反码 +0 +5 127 -127 -122 -1 -0 移码 -128 -123 -1 ±0 +5 +126 +127 0 5 127 128 133 254 255 4
18
符)为:32-5-1-1=25位。25位二进制位足以保证±6×10的精度了。
按这样的分配,当阶码大于+31时,该浮点数溢出,进入溢出中断处理。
例6 什么是机器零?浮点数采用什么机器数形式时,可用全“0”表示机器零?
【解】当一个浮点数的尾数为0时,不论其阶码为何值,或者当一个浮点数的阶码等于或小于它所能表示的最小数时,不论其尾数为何值,机器都把该浮点数当机器零处理。可见,如果浮点数的阶码用移码表示,则最小阶码的移码即为全0,而的浮点数的尾数用补码表示,则当其为全0时即表示尾数的真值为0。此时的机器零可用全0表示。
例7 如何判断定点和浮点补码加减运算是否溢出。 【解】对于定点补码加减运算溢出判断有三种方法:
(1)采用一位符号位。参加操作的两个数符号相同,其结果的符号与原操作数的符号不同,即为溢出。——很少用此法
(2)根据数据位的进位。采用一位符号位运算,当符号位的进位与最高数值位的进位异或结果为“1”时,即为溢出。
(3)采用双符号位。运算结果的两个符号位不同即溢出,此时最高符号位代表真正的符号。
对于浮点补码加减运算要根据运算结果的阶码来判断是否溢出。当阶码
大于最大正数阶码时,为溢出,此时需要中断处理;当阶码小于最小负数阶码时,按机器零处理。
例8 简述算术移位和逻辑移位的区别,举例说明。
【解】算术移位时,符号位(最高位)不变,左移时最高数值位移丢,右移时最低数值位移丢,移位时出现的空位根据不同机器数的移位规则填补空位的代码(0或1)。逻辑移位时,没有符号位,左移时最高位移丢,低位补0,右移时最低位移丢,高位补0。
例如:10101110逻辑右移一位的01010111,逻辑左移一位得:01011100。
19
4
若将其视为补码,则算术左移一位得:11011100,算术右移一位的:11010111。 可见两种移位结果不同。
例9 已知十进制数x=-41,y=+101,设机器数字长8位(含1位符号位),计算[x+y]补和[x-y]补,并给出相应的Z(零标志)、V(溢出标志)和C(进位标志)。
【解】x=(-41)10=(-0101001)2,y=(+101)10=(+1100101)2 采用双符号位计算:
[x+y]补=[x]补+[y]补=11,1010111+00,1100101=00,0111100,没有溢出 [x+y]补=0,0111100,根据计算结果,得:Z=0,V=0,C=1
[x-y]补=[x]补+[-y]补=11,1010111+11,0011011=10,110010,溢出,中断处理 Z=0,V=1,C=1
例10 已知二进制数x=0.1010,y=-0.0110,用原码一位乘法计算[x×y]原,并还原成真值。
【解】[x]原=0.1010,[y]原=1.0110
(1)用异或计算乘积符号位:x0⊕y0=0⊕1=1
(2)数值部分乘积计算如下:A=0.0000, X=0.1010, Q=0110
A Q Qn
0.0000 0 1 1 0 Qn=0 n=4 A、Q联合右移一位:0.0000 0 0 1 1 Qn=1 n=3
+X:0.1010
0.1010
A、Q联合右移一位:0.0101 0 0 0 1 Qn=1 n=2
+X:0.1010
0.1111
A、Q联合右移一位:0.0111 1 0 0 0 Qn=0 n=1 A、Q联合右移一位:0.0011 1 1 0 0 n=0,计算结束 [x×y]原= x0⊕y0∣00111100=1.00111100, x×y=-0.001111
20
例11 设浮点数x=2010×0.110101, y=2100×(-0.101010),若阶码取3位,尾数取6位(均不包括符号位),按补码运算步骤计算x+y。 【解】[x]补=0,010;0.110101 [y]补=0,100;1.010110 ① 对阶
求阶差:
[jx-jy]补=[jx]补+[-jy]补=0,010+[-0,100] 补=0,010+1,100=1,110 阶差为负,说明jx小于jy,按照小阶向大阶看齐原则,右移x的尾数2位,并使x的阶码加2,使之与y的阶码相等。调整后的x用x’表示如下:
[x’]补=0,100;0.001101 01 保留移出微,以待舍入处理。 ② 尾数求和:采用双符号尾数运算,以方便溢出判断。
00.001101+11.010110=11.100011 ③ 规格化
尾数求和结果没有溢出,无需右归,但是尾数求和的结果不符合补码规格化形式:0.1xx ? x及1.0xx? x。所以需要左归:
左归一位,阶码(大阶)减1,得:[x’+y]补=0,011;1.000110 ④ 溢出判断:阶码没有溢出,故浮点数没有溢出。
⑤ 舍入处理:对阶时移出的位01,按0舍1入法,应该舍去。 故 [x+y]补=0,011;1.000110
x+y=-0.11101×2011=(-29/32)×2=-29/4
例12 画出并行补码定点加减运算器框图(设机器数采用2位符号位),并描述其信息加工过程。
【解】机器数采用2位符号位的并行补码定点加减运算器框图如下图所示:
3
21
V 0 A n+1 GA GB 溢出 判断 加法器(n+2位) 求补控制 逻辑 0 X n+1 并行补码定点加减运信息加工过程可描述为:
GA·(A加X)+ GS·(A加X加1)→A
溢出判断过程可描述为:A0⊕A1→V
例13 影响加减运算速度的关键问题是什么?可采取哪些改进措施?举例说明。
【解】影响加减运算速度的关键是进位问题。可采用快速进位链来提高仅为速度。通常采用先行进位,即高位进位可以和低位进位同时产生。具体有两种方案:
① 单重分组进位链,即将n位全加器分成若干小组,小组内进位同时产生,小组间采用串行进位。
② 多重分组进位链,即将n位全加器分成几个大组,每个大组又分成若干小组。大组内每个小组的最高位进位同时产生,小组内的其它进位也是同时产生,而大组之间采用串行进位。
22