计算机组成原理运算方法_第1页
计算机组成原理运算方法_第2页
计算机组成原理运算方法_第3页
计算机组成原理运算方法_第4页
计算机组成原理运算方法_第5页
已阅读5页,还剩105页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

机组成原理

第0100章

运算方法2014学期1数字电路基础2模拟信号&数字信号模拟信号在时间和数值上是连续变化的比如,环境温度的变化,声波数字信号在时间和数值上是离散分布的比如,PC处理的信号计算机可处理的二值数字信号3数字电路处理数字信号的电路,是计算机的真正硬件把用户程序和系统程序的逻辑关系转变为电流的流动是计算机科学与电子工程的交叉学科4门和布尔代数数字电路是由少量几个基本元素通过多种方式组合而成的“门”是制造所有数字电路的基础需要一种数学方式来描述由门组合而成的电路的功能---布尔代数5门数字电路只能表示两个逻辑值:1和0,一般情况下:电压处于0~1V之间的信号表示0电压处于2~5V之间的信号表示1门:一种微小的电子设备,可以实现一个或多个0、1逻辑值

的运算,是数字计算机的硬件基础。6门的工作原理门属于设备层次最简单的门:晶体管(有3个极)集电极基极发射极晶体管工作原理Vin小于特定值,晶体管断开,像一个无穷大的电阻,Vout≈VccVin大于特定值,晶体管导通,使得Vout直接接地,Vout远小于Vcc7门的工作原理

Vin为0V,晶体管断开,则Vout=5V01

Vin为5V,晶体管导通,则Vout=0V10一个晶体管就像是一个逻辑值的反转器,即,输入1,输出0;输入0,输出1y=f(x)x=0,1y=1,ifx=0y=0,ifx=1数学描述8把两个晶体管组合起来:串联两个晶体管串联:2个输入(V1,V2),1个输出(Vout)要想判断V1,V2对Vout的影响,首先要判断V1,V2存在哪些组合情况:V1=0V2=0V1=1V2=0V1=1V2=1V1=0V2=1④①②③Vout=1Vout=1Vout=1Vout=0y=f(x1,x2)xi=0,1y=1,ifx1=x2=0y=1,ifx1=1,x2=0y=1,ifx1=0,x2=1y=0,ifx1=x2=1数学描述9把两个晶体管组合起来:并联两个晶体管并联:2个输入(V1,V2),1个输出(Vout)要想判断V1,V2对Vout的影响,首先要判断V1,V2存在哪些组合情况:V1=0V2=0V1=1V2=0V1=1V2=1V1=0V2=1④①②③Vout=1Vout=0Vout=0Vout=0y=f(x1,x2)xi=0,1y=1,ifx1=x2=0y=0,ifx1=1,x2=0y=0,ifx1=0,x2=1y=0,ifx1=x2=1数学描述10门的生产技术双极性晶体管TTLECL用于超高速运行的场合金属氧化物半导体MOS速度慢体积小能耗低CPU和存储器使用MOS技术11门的基础作用不同个数晶体管间不同的组合方式,构成了可以完成不同逻辑运算的门。12门的基础作用所有的数字电路最终是建立在晶体管可以作为一个快速的二进制的开关这个事实上的。输入不同的电压输入不同的二进制表达输出不同的二进制由门组成的数字电路键盘鼠标光盘数据程序输出不同的电压按集成程度分:小规模

:1~10门/片中规模

:10~100门/片大规模:100~1000门/片超大规模:1000+门/片按电路逻辑功能分:组合逻辑电路时序逻辑电路13门的基础作用按何种方式把门组合起来形成满足一定功能的电路呢?14数字逻辑基础15什么是逻辑?一种思维,关于因果关系的推理规律在已知条件为真或假的情况下,判断结论为真或假非此即彼,类似于数字电路中的0和116数字逻辑数字电路也是研究逻辑的,即,研究输入与输出的关系逻辑代数也叫“布尔代数”,“开关代数”一种数学工具,是设计和分析数字逻辑电路的基础逻辑变量只能取1或0常用的三种逻辑运算与或非17逻辑判断今天要么是周六、要么是周日,

但肯定是周末。学生进入了教室并且老师进入了教室,

才可以上课。小明通过了考试,

小明没及格。条件结论18逻辑操作——形式化的逻辑判断A与

B(A·B或AB)A或

B(A+B)A非

(A)当A和B均为真(1)时,结果为真(1),否则为假(0)当A和B只要一个为真(1)时,结果即为真(1)当A为真(1),结果为假(0),反之,结果为真(1)对应的C语言的表达:例子:if(a!=0&&b>0){…}if(a!=0||b>0){…}if(!a){…}19逻辑运算——抛开变量对的实践意义如果A=1,B=0,C=1,那么,A或

B或

C=?如果A=1,B=0,C=1,那么,A与

B与

C=?结合律: A+(B+C)=(A+B)+C10优先级: ()非与或,A·B+C相当于((A)·B)+C20布尔代数

如何描述布尔代数?一一对应21布尔代数的真值表n个变量的布尔函数的输入最多可以?有种可能因此,可以使用一个2n行的表格描述布尔函数的映射关系2n两个输入变量的或函数X=A+B有22=4个可能输入两个输入变量的与函数X=AB有22

=4个可能输入0101110022布尔代数与真值表:一个稍复杂的例子布尔函数:X=(A+B)C00000101001110010111011123不只是代数:与运算ABF000010100111实际的开关电路与逻辑真值表与门电路符号&ABFABF逻辑运算物理电路转换24不只是代数:或运算ABF000011101111≥1ABFABF或逻辑真值表或门电路符号实际的开关电路逻辑运算物理电路转换25不只是代数:非运算AF0110AF1AF非门电路符号非逻辑真值表实际的开关电路逻辑运算物理电路转换26其他的逻辑运算ABABABA+B与非门或非门计算机的逻辑电路以与非门和或非门为基础!ABX001011101110ABX001010100110ABX000011101110ABAB+AB异或门先与再非先或再非“同”为0,”不同”为127例子:一个复合的逻辑运算与或非运算:F=AB+CDABFCDA=1B=0C=1D=0F=?AB=0CD=0AB+CD=0F=1A=1B=1C=0D=1F=?AB=1CD=0AB+CD=1F=028Quiz指出变量A,B和C取何值时,F=1.F(A,B,C)=AB+BC+AC0.只要函数右边三项有一个为1,F=1即成立如果AB=1,要求A和B同时为1即可,C可为0或1.2.类似的,B和C都为1也能保证F=13.如果AC=1,F=1也成立,此时,A要为0,C为1,B可为0或1.29一个复合的逻辑运算与一个集成门电路的功能是相同的,那么,在逻辑运算原理的基础上,用门电路构造的数字电路如何实现计算机中所需的功能呢?30基本的数字逻辑部件31如何构造可以实现更复杂逻辑运算的电路?非门与非门或非门32组合逻辑电路vs.时序逻辑电路许多应用中,需要有多个输入信号和多个输出信号,并且,输出信号由当前的输入信号唯一确定,这样的数字电路叫做组合逻辑电路。输出信号不仅与输入信号有关,还与电路原来的状态有关,这样的数字电路叫做时序逻辑电路。复用器,译码器,加法器,ALU触发器33比较器ABX异或门ABX000101011110A与B相同,则输出0,否则,输出1一个异或门取反之后,就构成了一个1位比较器,即可以比较两个二进制位是否相等。344位比较器(1)比较0010和100110010010ABA0B0A3B3F=0A0

异或

B0=1A1

异或

B1=1A2

异或

B2=0A3

异或

B3=1

1或非

1或非

0或非

1=0异或门或非门(2)比较1100和110035如何构造8位比较器?36多路复用器多路复用器有2n个输入,1个输出,用来选择将哪个信号输出。应用场景:比如,对数据进行并行到串行的转换。输入信号控制信号输出信号37译码器输入一个n

位二进制数,根据该二进制数的值,选出2n个输出信号中的一个.译码器常用在存储芯片的选择上。三-八译码器:输入三个控制信号,使八个可能输出信号中仅有一个为138译码器译码器真值表译码器数字逻辑电路39计算=状态的改变=输入/输出映射比较2个二进制位比较4个二进制位

1个异或门4

个异或门+1个或非门

计算任务硬件连接方式1连接方式2连接方式3连接方式4++++设计布尔代数40二进制数运算基础41二进制计算机中所有信息都必须是二进制的,二进制是计算机唯一能理解(处理)和记得住(存储)的语言。42如何计算二进制数?0000100112345670

4项相加two

=9ten注意:二进制数的位从0开始编号43

进位计数制44按权展开十进制数789.23(基数是10)二进制数101.01(基数是2)八进制、十六进制

上述所有进制下的数按照各自的权展开求和的话,最终得到的都是十进制数值。45二进制的优点

46如何由十进制数得到二进制数?为什么需要这么做?十进制到二进制转换:两种方法组合使用对待十进制数的整数部分,使用除基取余法对待十进制数的小数部分,使用乘基取整法47如何由十进制数得到二进制数?十进制数余数20510251251263102222222210110011最高位最低位求205的二进制表达换算结果是:205ten=

two除基取余法遇到0结束48如何由十进制数得到二进制数?求0.8125的二进制表达十进制数积的整数部分0.81252x11.6250x20.6251.25010.2522x0.50x1.001最高位最低位换算结果

:0.8125ten

=0.1101two乘基取整法遇到1结束49如何由十进制数得到二进制数?(练习)求十进制数34.125的二进制表达整数和小数部分分别转换34.125ten=100010.001two50如何由八进制数得到二进制数?将八进制数37.26转换成二进制数37.26011111010110.结果:37.26

eight=

11111.01011

two每一位八进制数可以转化为三位二进制数八进制数的基数是8:0,1,2,3,4,5,6,751如何由二进制数得到八进制数?10110.0011two

=2614.110.00111000010110.0011two

=

26.14eight每三位二进制数可以转化为一位八进制数整数部分从低位向高位划分,不足三位填0补齐小数部分从高位向低位划分,不足三位填0补齐52如何由十六进制数得到二进制数?十六进制数的基数是16:0,1,2,3,4,5,6,7,8,9A,B,C,D,E,F3A.090011101000001001.3A.09sixteen

=

00111010.00001001two每一位十六进制数可以转化为四位二进制数53如何由二进制数得到十六进制数?1011110.0011two

=5D3.1110.00111010101110.0011two=5D.3sixteen

每四位二进制数可以转化为一位十六制数计算机书籍(说明书)中经常用十六进制来表示二进制,为什么?54二进制数的加法(笔算)

111two

110two+1101two与十进制加法类似,从低位到高位逐位相加。二进制位加法原理: 0+0=0, 1+0=1, 1+1=0且进位1Quiz:1011+11001=?55二进制减法(笔算)

111two

110two-001two二进制减法:0-0=0,1-0=1,1-1=0,0–1=1借位1

1101two

110two-111two110two

要减去1101two

,怎么算?56二进制乘法(笔算)

1001ten

110tenx0000100110011101

10ten

1001two

110twox0000100110011101

10two无论基数是多少,乘法(笔算)的原理是相同的:移位、加和9ten6ten54ten57二进制除法(笔算)531ten22ten244914883ten531除以22=24余310110two1101two11101100110110除以1101=1余1001Quiz1:101100two

除以1101two

等于多少?Quiz2:1001010two

除以1000two

等于多少?58机器码——数据在计算机中的表示59无论计算机用在什么领域,信息在计算机内部的表示都是一致的,即,用0和1组成的各种编码。现在是12

点小明的身高是1.70

米π

的值是3.1415926今年的GDP增长率是-1.2%机器如何区分正数和负数?计算机是如何完成加减法的?60符号数的机器码表示机器数在计算机中表示的带符号的二进制数称为机器数符号位“+”

和“-”在机器里用1位二进制来表示。通常这个符号放在二进制数的最高位,称为符号位。用0表示“+”,用1表示“-”(符号也被数字化了)。无符号数(每一位都可以表示数值)vs.有符号数符号数与真值带“+”或“-”符号的数叫真值把符号数字化的数叫机器数真值给人看,机器数给机器看真值机器数+101101011-11001110061机器数的表示无符号数有符号数每一位都可以表示数值首位除外,每一位都可以表示数值8位7

位符号位数值位62机器数的表示写出机器数01001two、11011two的真值+1001two9ten-1011two-11ten整数机器数也常常这样表示:110111,101163机器数的表示如何在机器码中表示一般的浮点数?-

0.1011小数点的位置-

1100+

1100+

0.1011真值

机器数11011010111110001100小数点的位置小数点的位置小数点的位置纯小数整数64机器数的表示一旦符号数字化以后,符号和数值就形成了一种新的编码,在运算过程中,符号位能否和数值部分一起参加运算?如何参加运算,符号位又如何处理?这些问题与符号位和数值位所构成的编码有关系!机器数的常用表示方式:原码补码反码移码人机器65原码x=+110110

x=-110110

数值位是6位

x=+0.1101

x=-0.1101

符号参与了运算!n=666原码一种最简单的机器数表示形式符号位为0表示正数,为1表示负数数值位就是真值的绝对值真值原码表示的机器数+10110,1011-11001,1100+0.10110.

1011-0.11001.1100整数原码(x

是真值,n

是数值部分的位数):

小数原码(x是真值,n

是数值部分的位数):

67原码对于0的两种表示求真值x=0的原码同理,对于整数表示的0设x=+0.0000x=-0.0000[+0.0000]原

=0.0000[-0.0000]原

=1.0000[+0]原

=0,0000[-0]原

=1,0000

68由原码求真值

由符号位和数值位间的符号判断给定机器码表示的是整数还是小数69原码表示的机器数间的加法

一个正数与一个负数相加的情况

(2).用绝对值大的机器数减去绝对值小的机器数,结果的符号以绝对值大的数为准(0).看两个机器数的符号,如果都是正(负),则进行加法运算,结果取正(负)本例中要做的是加法,结果却是需要做减法。能否找到一种机器数的表示方式,使得减法可以由加法来替代?机器模拟由人进行笔算的计算步骤:70补码——生活中补数的概念126931245781011126931245781011126931245781011由6点到3点有两种方式:顺时针转动9个格子,逆时针转动3个格子9+3=12如果规定顺时针方向为正、逆时针为负:9和-3对时钟来讲是一样的!71钟表中的补数时针从一个位置顺时针旋转

a

个格子等同于逆时针旋转(12-a)个格子。逆时针-363顺时针+9615126931245781011126931245781011126931245781011对于有12个刻度的钟表来说:-3可以用+9来代替

72补数一旦给定模,一个负数就可以对应到一个正数,因此,减法可以用加法来替代,这个正数称为该负数的“补数”。一个负数的绝对值与其补数之和等于模。正数的补数怎么求?补数的概念可以推广到任意模的情况,模12,模16,模2,…对于钟表:3点=15点,规定“正数的补数是其本身”生活中补数的概念为消除计算机中的减法提供了一种可能!73补码整数补码(x

是真值,n

是数值部分的位数):

小数补码(x

是真值,n

是数值部分的位数):

正数的补码等于其原码;补码对于0只有一种表示;求补码依然需要减法操作;74补码——由原码求补码

=100000=1,011010101+1=1,0110[x]补=24+1

-

1010=11111+1-

1010=11111+1-1010-1010例:x=-1010时

[x]原=1,1010,除符号位以外,每位求反:1,0101(负数)原码补码:无论是整数还是小数,原码符号位不动,数值部分求反,末位加1消除了求解补码过程中的减法操作75由补码求真值x=+0.0001由定义得:已知[x]补=0.0001,求x由定义得:x=[x]补–2=1.0001–10.0000已知[x]补=1.0001求x=-0.1111另一种方法:[x]补

[x]原

因为y

是[x]原除符号位外每位求反的结果:所以,[x]原=1.1111

真值

x

的补码的补码,即是x

的原码小数补码

76例子

77反码反码常用来作为原码求补码的中间过渡整数反码(x

是真值,n

是数值部分的位数):

小数反码(x

是真值,n

是数值部分的位数):

与原码一样,反码中0也有两种表示方式(负数)反码:原码的符号位不变,数值位各位取反78反码正数的反码与其原码相同负数的反码等于其原码符号位不动且数值位每位取反

数值部分位数数值部分位数79移码当真值用补码表示时,符号位和数值位一起编码,很难从形式上看出真值的大小!

010101101011011111100001

②③④①

当真值用“移位后的机器码”表示时,很容易形式上看出真值的大小!80移码[x]移=2n+x(2n>x≥-2n)设x=+1100100[x]移=27+1100100=1,1100100[x]补=0,1100100设x=–1100100[x]移=27

1100100=0,0011100[x]补=1,0011100(正、负数)补码与移码只差一个符号位!81例子:通过移码比较两个机器数的大小

82原码、补码、反码、移码的比较最高位是符号位,其余是数值位(但机器一般不区分符号位)正数(整数或小数)的原码、补码、反码三者相同原码表示方法简单,直观,但是进行加减运算比较麻烦补码表示方法易于进行加减运算:把减转换成加负数原码的符号位不变,数值位每位取反可得到反码负数反码的末位加

1可得到补码移码和补码之差一个符号位任何一个真值,均可以表示成原码、补码、反码、移码,不同的表示方式有不同的用处!83数的定点表示和浮点表示84小数的表示在计算机中,小数点不用专门的硬件来表示,而是按照约定的方式标出!定点表示(定点数)浮点表示(浮点数)85数的定点表示Sf

S1S2

Sn…数符数值部分小数点位置Sf

S1S2

Sn…数符数值部分小数点位置或定点数:小数点固定在某一个位置上的机器数,有两种格式:纯小数纯整数86数的浮点表示浮点数:小数点的位置可以浮动的机器数

小数点位置变化了,但是,分别乘上了10的不同幂次方,所以,值不变通常,浮点数被表示成:

S

:尾数r:基数j:阶码

在计算机中,规定浮点数的尾数用纯小数来表示将尾数高位为1的浮点数称为“规格化数”87浮点数的表示形式jf

j1

j2

jm

Sf

S1S2

Sn

……j

阶码S

尾数阶符数符阶码的数值部分尾数的数值部分小数点位置Sf

代表浮点数的符号n

其位数反映浮点数的精度m

其位数反映浮点数的表示范围jf和m

共同表示小数点的实际位置88浮点数的表示:例子(用原码表示)

010110010001000110111001假设机器数用8位表示浮点数,其中低4位表示尾数,高4位表示阶码那一个是规格化数?89规格化浮点数的表示范围(原码表示)阶码

j尾数S

规格化浮点数阶码是整数形式,尾数是小数形式

最大的正数?最小的负数?90浮点数表示的溢出问题(以8位为例)01011001

11110111O.K.O.K.

00100111

O.K.规格化

不O.K.

不O.K.上溢:浮点数的阶码大于最大阶码下溢:浮点数的阶码小于最小阶码91浮点数的表示:例子

一个浮点数的机器码:尾数和阶码分别表示,然后放到机器字中

二进制真值规格化浮点数真值104

100110110100000011100011010000001110101101000000

对于负数:①反码是其原码的符号位不变,数值位各位求反;②补码是其反码的符号位不变,末位加192用移码和补码分别表示浮点数的阶码和尾码

浮点数的表示:例子

为什么常用移码来表示浮点数的阶码?93用IEEE754标准表示浮点数S

阶码(含阶符)尾数数符小数点位置短实数: 32位(1、8、23)长实数: 64位(1、11、52)临时实数: 80位(1、15、64)94定点运算:移位与加法95定点运算移位加减乘除96移位运算逻辑移位:对于无符号数的移位算术移位:对于有符号数的移位97逻辑移位10001101逻辑左移1位左边的1丢失逻辑右移1位右边的1丢失00逻辑移位的规则:空位填098算术移位对于正数,其机器数无论用原码、补码还是反码表示,移位后的空位填0不论是正数还是负数,算术移位时,其符号位要保持不动编

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论