计算机组成原数的表示与运算

上传人:文*** 文档编号:68859339 上传时间:2022-04-05 格式:DOC 页数:9 大小:105.50KB
返回 下载 相关 举报
计算机组成原数的表示与运算_第1页
第1页 / 共9页
计算机组成原数的表示与运算_第2页
第2页 / 共9页
计算机组成原数的表示与运算_第3页
第3页 / 共9页
点击查看更多>>
资源描述
文档供参考,可复制、编制,期待您的好评与关注! 二、 数据的表示和运算(一) 数制与编码1. 进位计数制及其相互转换1)进位计数制进位计数制是指按照进位制的方法表示数,不同的数制均涉及两个基本概念:基数和权。 基数:进位计数制中所拥有数字的个数。权:每位数字的值等于数字乘以所在位数的相关常数,这个常数就是权。任意一个R进制数X,设整数部分为n位,小数部分为m位,则X可表示为:Xan-1rn-1 + an-2rn-2 + + a0r0 + a-1r-1 + a-2r-2 + + a-mr-m(X)r = 2)不同数制间的数据转换 (1)二、八、十六进制数转换成十进制数 利用上面讲到的公式: (N)2=Di2i 、(N)8=Di8i、 (N)16=Di16i、进行计算。(2)十进制数转换成二进制数通常要对一个数的整数部分和小数部分分别进行处理,各自得出结果后再合并。u 对整数部分,一般采用除2取余数法,其规则如下:将十进制数除以2,所得余数(0或1)即为对应二进制数最低位的值。然后对上次所得商除以2,所得余数即为二进制数次低位的值,如此进行下去,直到商等于0为止,最后得的余数是所求二进制数最高位的值。u 对小数部分,一般用乘2取整数法,其规则如下:将十进制数乘以2,所得乘积的整数部分即为对应二进制小数最高位的值,然后对所余数的小数部分部分乘以2,所得乘积的整数部分为次高位的值,如此进行下去,直到乘积的小数部分为0,或结果已满足所需精度要求为止。(3)二进制数、八进制数和十六进制数之间的转换八进制数和十六进制数是从二进制数演变而来的:由3位二进制数组成1位八进制数;由4位二进制数组成1位十六进制数。对于一个兼有整数和小数部分的数以小数点为界,小数点前后的数分别分组进行处理,不足的位数用0补足。对整数部分将0补在数的左侧,对小数部分将0补在数的右侧。这样数值不会发生差错。2. 真值和机器数真值:数据的数值通常以正(+)负(-)号后跟绝对值来表示,称之为“真值”。 机器数:在计算机中正负号也需要数字化,一般用0表示正号,1表示负号。把符号数字化的数成为机器数。3. BCD码在计算机中采用4位二进制码对每个十进制数位进行编码。4位二进制码有16种不同的组合,从中选出10种来表示十进制数位的09,用0000,0001,1001分别表示0,1,9,每个数位内部满足二进制规则,而数位之间满足十进制规则,故称这种编码为“以二进制编码的十进制(binary coded decima1,简称BCD)码”。在计算机内部实现BCD码算术运算,要对运算结果进行修正,对加法运算的修正规则是: 如果两个一位BCD码相加之和小于或等于(1001)2,即(9)10,不需要修正; 如相加之和大于或等于(1010)2,或者产生进位,要进行加6修正,如果有进位,要向高位进位。4. 字符与字符串在计算机中要对字符进行识别和处理,必须通过编码的方法,按照一定的规则将字符用一组二进制数编码表示。字符的编码方式有多种,常见的编码有ASCII码、EBCDIC码等。1)ASCII码ASCII码用7位二进制表示一个字符,总共128个字符元素,包括10个十进制数字(0-9)、52个英文字母(A-Z和a-z)、34专用符号和32控制符号。2)EBCDIC码为Extended Binary Coded Decimal Interchange Code的简称,它采用8位来表示一个字符。3)字符串的存放向量存储法:字符串存储时,字符串中的所有元素在物理上是邻接的。串表存储法:字符串的每个字符代码后面设置一个链接字,用于指出下一个字符的存储单元的地址。5. 校验码数据校验码是一种常用的带有发现某些错误或自动改错能力的数据编码方法。其实现原理,是加进一些冗余码,使合法数据编码出现某些错误时,就成为非法编码。 这样,可以通过检测编码的合法性来达到发现错误的目的。合理地安排非法编码数量和编码规则,可以提高发现错误的能力,或达到自动改正错误的目的。 码距: 码距根据任意两个合法码之间至少有几个二进制位不相同而确定的,仅有一位不同,称其码距为1。1)奇偶校验码它的实现原理,是使码距由1增加到2。若编码中有1位二进制数出错了,即由1变成0,或者由0变成1。这样出错的编码就成为非法编码,就可以知道出现了错误。在原有的编码之上再增加一位校验位,原编码n位,形成新的编码为n+1 位。增加的方法有2种: 奇校验:增加位的0或1要保证整个编码中1的个数为奇数个。 偶校验:增加位的0或1要保证整个编码中1的个数为偶数个。 2)海明校验码它的实现原理,是在数据中加入几个校验位,并把数据的每一个二进制位分配在几个奇偶校验组中。当某一位出错就会引起有关的几个校验组的值发生变化,这不但可以发现出错,还能指出是哪一位出错,为自动纠错提供了依据。 假设校验位的个数为r,则它能表示2r个信息,用其中的一个信息指出“没有错误”,其余2r-1个信息指出错误发生在哪一位。然而错误也可能发生在校验位,因此只有k=2r-1-r个信息能用于纠正被传送数据的位数,也就是说要满足关系:2r=k+r+1 3)CRC校验码CRC校验码一般是指k位信息之后拼接r位校验码。关键问题是如何从k位信息方便地得到r位校验码,以如何从位k+r信息码判断是否出错。 将带编码的k位有效信息位组表达为多项式: M(x)=Ck-1xk-1+ Ck-2xk-2 + + Cixi + C1x + C0式Ci中为0或1.若将信息位左移r位,则可表示为多项式M(x).xr。这样就可以空出r位,以便拼接r位校验位。 CRC码是用多项式M(x).xr除以生成多项式G(x)所得的余数作为校验码的。为了得到r位余数,G(x)必须是r+1位。设所得的余数表达式为R(x),商为Q(x)。将余数拼接在信息位组左移r位空出的r位上,就构成了CRC码,这个码的可用多项式表达为:M(x)xr+R(x)=Q(x)G(x)+R(x)+R(x) =Q(x)G(x)+R(x)+R(x) =Q(x)G(x)因此,所得CRC码可被G(x)表示的数码除尽。将收到的CRC码用约定的生成多项式G(x)去除,如果无错,余数应为0,有某一位出错,余数不为0. (二) 定点数的表示和运算1. 定点数的表示1)无符号数的表示 无符号数就是指正整数,机器字长的全部位数均用来表示数值的大小,相当于数的绝对值。 对于字长为n+1位的无符号数的表示范围为: 0-2n+1-12)带符号数的表示 带符号数是指在计算机中将数的符号数码化。在计算机中,一般规定二进制的最高位为符号位,最高位为“”表示该数为正,为“”表示该数为负。这种在机器中使用符号位也被数码化的数称为机器数。 根据符号位和数值位的编码方法不同,机器数分为原码、补码和反码。(1)原码表示法机器数的最高位为符号位,0表示正数,1表示负数,数值跟随其后,并以绝对值形式给出。这是与真值最接近的一种表示形式。 原码的定义: (2)补码表示法机器数的最高位为符号位,0表示正数,1表示负数,其定义如下: (3)反码表示法 机器数的最高位为符号,0表示正数,1表示负数。反码的定义: 2. 定点数的运算1)定点数的位移运算左移,绝对值扩大;右移,绝对值缩小。算术移位规则符号位不变码制添补代码正数0负数原0补右移添0左移添1反1算术移位和逻辑移位的区别:算术移位:带符号数移位;逻辑移位:无符号数移位;2)原码定点数的加/减运算;对原码表示的两个操作数进行加减运算时,计算机的实际操作是加还是减,不仅取决指令中的操作码,还取决于两个操作数的符号。而且运算结果的符号判断也较复杂。例如,加法指令指示做(A)(B)由于一操作数为负,实际操作是做减法(A)-(+B),结果符号与绝对值大的符号相同。同理,在减法指令中指示做(A)(B)实际操作做加法(A)(B),结果与被减数符号相同。由于原码加减法比较繁琐,相应地需要由复杂的硬件逻辑才能实现,因此在计算机中很少被采用。3)补码定点数的加/减运算;(1) 加法 整数 A补 + B补= A+B补(mod 2n+1)小数 A补 + B补= A+B补(mod 2)(2) 减法 整数 A补 - B补= A+(-B)补=A补 + -B补(mod 2n+1)小数 A补 - B补= A+(-B)补=A补 + -B补(mod 2)无需符号判定,连同符号位一起相加,符号位产生的进位自然丢掉4)定点数的乘/除运算(1)一位乘法原码定点一位乘法 两个原码数相乘,其乘积的符号为相乘两数的异或值,数值两数绝对值之积。设 X原=X0 X1 X2 Xn Y原=Y0 Y1 Y2 Yn XY原=X原Y原 = (X0Y0)(X1 X2 Xn)(Y1 Y2 Yn)符号表示把符号位和数值邻接起来。 定点补码一位乘法有的机器为方便加减法运算,数据以补码形式存放。乘法直接用补码进行,以减少转换次数。具体规则如下: XY补=X补(Y0 + 0. Y1 Y2 Yn )布斯法“布斯公式”:在乘数Yn后添加Yn+1=0。按照Yn+1 ,Yn相邻两位的三种情况,其运算规则如下:(1) Yn+1 ,Yn =0( Yn+1 Yn =00或11),部分积加0,右移1位;(2) Yn+1 ,Yn =1( Yn+1 Yn =10) ,部分积加X补,右移1位;(3) Yn+1 ,Yn =-1( Yn+1 Yn =01) ,部分积加X补,右移1位最后一步不移位。(2)两位乘法原码两位乘法,因此实际操作用Yi-1、Yi、C三位来控制,运算规则如下Yi-1 Yi C操作 0 0 0 0 0 1 0 1 0 0 1 1 1 0 0 1 0 1 1 1 0 1 1 1 +0, 右移2位 0C +X, 右移2位 0C +X, 右移2位 0C +2X,右移2位 0C +2X,右移2位 0C -X, 右移2位 1C -X, 右移2位 1C +0, 右移2位 1C 补码两位乘法根据前述的布斯算法,将两步合并成一步,即可推导出补码两位乘的公式。Yn-i-1 Yn-i Yn-i+1Pi+2补 0 0 0 0 0 1 0 1 0 0 1 1 1 0 0 1 0 1 1 1 0 1 1 1 +0, 右移2位 +X补, 右移2位 +X补, 右移2位 +2X补,右移2位 -2X补,右移2位 -X补, 右移2位 -X补, 右移2位 +0, 右移2位 求部分积的次数和右移操作的控制问题。 当乘数由1位符号位和以n(奇数)位数据位组成时,求部分积的次数为(1n)2,而且最后一次的右移操作只右移一位。 若数值位本身为偶数n,可采用下述两种方法之一:可在乘数的最后一位补一个0,乘数的数据位就成为奇数,而且其值不变,求部分积的次数为1+(n+l)/2,即n/21,最后一次右移操作也只右移一位。乘数增加一位符号位,使总位数仍为偶数,此时求部分积的次数为n/2+1,而且最后一次不再执行右移操作。(3)补码除法定点原码一位除法1恢复余数法被除数(余数)减去除数,如果为0或者为正值时,上商为1,不恢复余数;如果结果为负,上商为0,再将除数加到余数中,恢复余数。余数左移1位。2加减交替法当余数为正时,商上1,求下一位商的办法,余数左移一位,再减去除数;当余数为负时,商上0,求下一位商的办法,余数左移一位,再加上除数。定点补码一位除法(加减交替法)1如果被除数与除数同号,用被除数减去除数;若两数异号,被除数加上除数。如果所得余数与除数同号商上1,否则,商上0,该商为结果的符号位。2求商的数值部分。如果上次商上1,将除数左移一位后减去除数;如果上次商上0,将余数左移一位后加除数。然后判断本次操作后的余数,如果余数与除数同号商上1,如果余数与除数异号商上0。如此重复执行n-1次(设数值部分n位)。3商的最后一位一般采用恒置1的办法,并省略了最低+1的操作。此时最大的误差为2-n。5)溢出概念和判别方法当运算结果超出机器数所能表示的范围时,称为溢出。显然,两个异号数相加或两个同号数相减,其结果是不会溢出的。仅当两个同号数相加或者两个异号数相减时,才有可能发溢出的情况,一旦溢出,运算结果就不正确了,因此必须将溢出的情况检查出来。判别方法有三种:1当符号相同的两数相加时,如果结果的符号与加数(或被加数)不相同,则为溢出。2当任意符号两数相加时,如果C=Cf,运算结果正确,其中C为数值最高位的进位,Cf为符号位的进位。如果CCf ,则为溢出,所以溢出条件=CCf 。3采用双符号fs2fs1。正数的双符号位为00,负数的双符号位为11。符号位参与运算,当结果的两个符号位甲和乙不相同时,为溢出。所以溢出条件= fs2fs1 ,或者溢出条件= fs2fs1 + fs2fs1(三) 浮点数的表示和运算1. 浮点数的表示1)浮点数的表示范围;浮点数是指小数点位置可浮动的数据,通常以下式表示: N=MRE其中,N为浮点数,M为尾数,E为阶码,R称为“阶的基数(底)”,而且R为一常数,一般为2、8或16。在一台计算机中,所有数据的R都是相同的,于是不需要在每个数据中表示出来。因此,浮点数的机内表示一般采用以下形式:浮点数的机内表示一般采用以下形式:MsEM 1位 n+1位 m位Ms是尾数的符号位,设置在最高位上。E为阶码,有n+1位,一般为整数,其中有一位符号位,设置在E的最高位上,用来表正阶或负阶。M为尾数,有m位,由Ms和M组成一个定点小数。Ms=0,表示正号,Ms=1,表示负。为了保证数据精度属数通常用规格化形式表示:当R2,且尾数值不为0时,其绝对值大于或等于(0.5)10。对非规格化浮点数,通过将尾数左移或右移,并修改阶码值使之满足规格化要求。2)IEEE754标准根据IEEE 754国际标准,常用的浮点数有两种格式:(1)单精度浮点数(32位),阶码8位,尾数24位(内含:位符号位)。(2)双精度浮点数(64位),阶码11位,尾数53位(内含:位符号位)。单精度格式32位,阶码为8位,尾数为23位。另有一位符号位S,处在最高位。由于IEEE754标准约定在小数点左部有一位隐含位,从而实际有效位数为24位。这样使得尾数的有效值变为1.M 。例如,最小为x1.00,,最大为x1.11。规格化表示。故小数点左边的位横为1,可省去。 阶码部分采用移码表示,移码值127,1到254经移码为-126到+127。S(1位) E(8位) M(23位) N(共32位) 符号位 0 0 0 符号位 0 不等于0 (-1)S2-126(0.M) 为非规格化数 符号位 1到254之间 - (-1)S2E-127(1.M) 为规格化数 符号位 255不等于0 NaN(非数值) 符号位 2550 无穷大 0 有了精确的表示,无穷大也明确表示。对于绝对值较小的数,可以采用非规格化数表示,减少下溢精度损失。非规格化数的隐含位是0,不是1。2. 浮点数的加/减运算加减法执行下述五步完成运算:1)“对阶”操作比较两浮点数阶码的大小,求出其差E,保留其大值E,E=max(Ex, Ey)。当E0时,将阶码小的尾数右移E位,并将其阶码加上E,使两数的阶码值相等。2)尾数加减运算 执行对阶之后,两尾数进行加减操作。3)规格化操作 规格化的目的是使得尾数部分的绝对值尽可能以最大值的形式出现。4)舍入 在执行右规或者对阶时,尾数的低位会被移掉,使数值的精度受到影响,常用“0”舍“1”入法。当移掉的部分最高位为1时,在尾数的末尾加1,如果加1后又使得尾数溢出,则要再进行一次右规。5)检查阶码是否溢出 阶码溢出表示浮点数溢出。在规格化和舍入时都可能发生溢出,若阶码正常,加/减运算正常结束。若阶码下溢,则设置机器运算结果为机器零,若上溢,则设置溢出标志。(四) 算术逻辑单元ALU1. 串行加法器和并行加法器1)串行进位加法器并行加法器可以同时对数据的各位进行相加,一般用n个全加器来实现2个操作数的各位同时向加。其操作数的各位是同时提供的,由于进位是逐位形成,低位运算所产生的进位会影响高位的运算结果。串行进位(也称波形进位)加法器,逻辑电路比较简单,但是最高位的加法运算,一定要等到所有低位的加法完成之后才能进行,低位的进位要逐步的传递到高位,逐级产生进位,因此运算速度比较慢。串行进位加法器2)并行进位加法器为了提高运算速度,减少延迟时间,可以采用并行进位法,也叫提前进位或先行进位。全加器中,输入Ai 、Bi、Ci-1,输出:Si = Ai Bi Ci-1+Ai Bi Ci-1+Ai Bi Ci-1+Ai Bi Ci-1Ci = Ai Bi Ci-1+Ai Bi Ci-1+Ai Bi Ci-1+Ai Bi Ci-1 = Ai Bi + (Ai+Bi)Ci-1进位产生函数:Gi = Ai Bi进位传递函数:Pi = Ai+BiCi = Gi + Pi Ci-1C4 = G4 + P4G3 + P4P3G2 + P4P3P2G1 + P4P3P2P1C0并行进位加法器的运算速度很快,形成最高进位输出的延迟时间很短,但是以增加硬件逻辑线路为代价。对于长字长的加法器,往往将加法器分成若干组,在组内采用并行进位,组间则采用串行进位或并行进位,由此形成多种进位结构。(1)单级先行进位单级先行进位方式将n位字长分为若干组,每组内采用并行进位方式,组与组之间册采用串行进位方式。(2)多级先行进位多级先行进位在组内和组间都采用先行进位方式。16位单级先行进位加法器2. 算术逻辑单元ALU的功能和机构ALU部件是运算器中的主要组成部分,又称为多功能函数发生器,主要用于完成各种算术运算和逻辑运算。ALU的算术运算部件包含加法器、减法器、乘法器、除法器、增量器(+1)、减量器(-1)、BCD码运算器等组件。ALU的主要工作是根据CPU的指令要求执行各种指定的运算,如加法、减法、乘法、除法、比较、逻辑移位等操作。通用寄存器组是一组存取速度最快的存储器,用于保存参加运算的操作数和中间结果。访问寄存器无需高速缓存,也不需要运行总线周期,因此指令的执行速度很快。几乎所有的指令都要将寄存器指定为一个操作数,有些指令还要求将操作数存放在专用的寄存器中。专用寄存器通常用于表示CPU所处于某种系统状态,ALU中有两个重要的状态寄存器:指令指针寄存器IP(即程序计数器PC)和标志寄存器FLAGS。9 / 9
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 管理文书 > 各类标准


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!