计算机组成原理左规,计算机组成原理

真值 :

通常将数值数据在计算机内部编码表示的数称为机器数,而机器数真正的值(即原来带有正负号的数)称为机器数的真值。

机器数(Computer word):

通常将数值数据在计算机内部编码表示的数称为机器数。

数值数据(numerical data):

数值数据是指有确定的值的数据。数值数据在数轴上能找到其对应的点,可以比较其大小。确定一个数值数据的值有三个要素:进位计数制、定/浮点表示和数的编码表示。也就是说,给定一个数字序列,如果不说明这个数字序列是几进制数、小数点的位置在哪里、采用什么编码方式,那么这个数字序列的值是无法确定的。也就是说,同一个数字序列可能有不同的值。在计算机中数值数据有无符号数和有符号数两种。

非数值数据(non-numerical data):

数值数据是指在数轴上没有确定的值的数据。像逻辑数据、西文字符、汉字字符等都是非数值数据。

基数(radix,base):

进位计数制(或称数字系统)的“底数”或“基”。例如,二进制数的基数是“2”,十进制数的基数为“10”,十六进制的基数为“16”。

无符号数(Unsigned integer):

当一个编码的所有二进位都用来表示数值时,该编码表示的就是无符号数。可以看成是一种正整数。常用无符号数来进行地址运算。

有符号数(Signed number):

在计算机内部对正、负号进行编码的数。有符号数又分为定点数和浮点数。定点数有定点整数和定点小数两种。现实世界中的整数在计算机内部由定点整数表示。现实世界中的实数在计算机内部由浮点数表示。

定点数(Fixed-point number):

定点数是计算机中小数点固定在最左边或最右边的有符号数,有定点整数和定点小数两种。定点整数的小数点总是约定在数的最右边,主要用来表示现实世界中的整数和浮点数中的指数。定点小数的小数点总是约定在数的最左边,主要用来表示浮点数中的尾数。

定点数的编码方式有原码、反码、补码和移码。整数常用补码来表示;浮点数的尾数一般用原码小数来表示;浮点数的指数一般用移码来表示。

原码(Signed magnitude):

一种对定点整数或定点小数进行二进制编码的编码方案。它的编码规则是:正号“+ ”用符号位“0”表示,负号“-” 用符号位“1”表示,数值部分不变。这种编码简单,但计算机处理不方便,50年代以后,就不用它来表示整数。但现代计算机中,一般用它来表示浮点数的尾数,如:IEEE754标准。

反码(One’s complement):

一种对定点整数或定点小数进行二进制编码的编码方案。由于计算机处理反码没有补码方便,反码已经不被再用了。

补码(Two’s complement):

一种对定点整数或定点小数进行二进制编码的编码方案。其编码规则如下:正号“+ ”用符号位“0”表示,负号“-” 用符号位“1”表示,正数的数值部分不变,负数的数值部分是各位取反,末位加1。这种编码较原码复杂,但由于它是一种模运算系统,计算机处理很方便,50年代以后,整数就都用它来表示。

变形补码(Four’s complement):

变型补码是一种双符号位补码。早期计算机用双符号位来检测定点整数是否发生溢出。采用双符号位的补码相当于在原来的数位上增加了一位。所以也称为4-补码。采用“变形补码”进行溢出检测时的判断规则为:“当结果的两个符号位不同时,发生溢出”。有时用双符号位来保存运算时进到高位的数值部分。

浮点数(Floating-point number ):

浮点数是计算机中可以指定小数点在不同位置的有符号数。任意一个浮点数F可写成:F=M x 2E 的形式。这样,一个浮点数就可以有两个定点数表示,M称为浮点数的尾数,用一个定点小数来表示;E称为浮点数的指数或阶码,用一个定点整数来表示。

尾数(mantissa, significand):

任意一个浮点数F 可写成:F=M x 2E 的形式,因而由两部分组成。这里,M称为浮点数的尾数,用一个定点小数来表示。

阶码(exponent):

任意一个浮点数F 可写成:F=M x 2E 的形式,因而由两部分组成。这里,E称为浮点数的指数或阶码,用一个定点整数来表示。

移码(excess notation,biased notation):

移码是一种用来表示浮点数阶码的编码方案。它的编码规则是:将真值加上一个偏置常数。因为在浮点数的加减运算中,要进行对阶操作,需要比较两个阶的大小。用移码表示阶码后,使得所有数的阶码都是一个正整数,比较大小时,就只要按高位到低位顺序比较就行了,因而,移码主要用来表示阶码,可以简化阶码的比较过程。

单精度浮点数(Single precision floating point):

IEEE754标准规定的32位浮点数格式表示的浮点数。阶码是8位,用移码表示,偏置常数为127,尾数用原码表示,规格化浮点数的最高位“1”隐含不表示,显式表示的尾数有23位,所以一共有24位尾数。

双精度浮点数(Double precision floating point):

IEEE754标准规定的64位浮点数格式表示的浮点数。阶码是11位,用移码表示,偏置常数为1023,尾数用原码表示,规格化浮点数的最高位“1”隐含不表示,显式表示的尾数有52位,所以一共有53位尾数。

对阶(align exponent):

浮点数加/减运算时,在尾数相加/减之前所进行的操作称为对阶。对阶时,需要比较两个阶的大小。阶小的那个数的尾数右移,阶码增量。右移一次,阶码加1,直到两数的阶码相等为止。

溢出(Overflow):

溢出是指一个数比给定的格式所能表示的最大值还要大,或比最小值还要小的现象。因为无符号数、有符号定点数和有符号浮点数的位数是有限的,所以,都有可能发生溢出,但判断溢出的具体方法不同。

下溢(Underflow):

在浮点数运算中,当一个浮点数的指数比最小允许值还小,此时,浮点数发生下溢。一般机器把下溢时的值置为0。此时,不发生溢出故障。

上溢(Overflow):

在浮点数运算中,当一个浮点数的指数超过了最大允许值,此时,浮点数发生上溢(即:向∞方向溢出)。如果结果是正数,则发生正上溢(有的机器把值置为+∞);如果是负数,则发生负上溢(有的机器把值置为-∞)。这种情况为软件故障,通常要引入溢出故障处理程序来处理。

保护位(Guard bit):

为了使数据有效位在右移时最大限度地保证不丢失,一般在运算中间值后面增加若干数据位,这些位用来保存右移后的有效数据,称为保护位。增设保护位后,能保证运行的中间结果的有效位数,但最终必须将结果的保护位去掉,以得到规定格式的浮点数,此时要考虑舍入。

规格化数(Normalized number):

为了使浮点数中能尽量多地表示有效位数,一般要求运算结果用规格化数形式表示。规格化浮点数的尾数小数点后的第一位一定是个非零数。因此,对于原码编码的尾数来说,只要看尾数的第一位是否为1就行;对于补码表示的尾数,只要看符号位和尾数最高位是否相反。

左规(Left Normalize):

在浮点数运算中,当一个尾数的数值部分的高位出现0时,尾数为非规格化形式。此时,进行“左规”操作:尾数左移一位,阶码减1,直到尾数为规格化形式为止。

右规(Right Normalize) :

在浮点数运算中,当尾数最高有效位有进位时,发生尾数溢出。此时,进行“右规”操作:尾数右移一位,阶码加1,直到尾数为规格化形式为止。右规过程中,要判断是否发生溢出。此时,只要阶码不发生上溢,则浮点数不会溢出。

舍入(Rounding):

舍入是指数值数据右部的低位数据需要丢弃时,为保证丢弃后数值误差尽量小而考虑的一种操作。例如,定点整数“右移”时、浮点加/减运算中某数“对阶”时、浮点运算结果“右规”时都会涉及到舍入。

机器零(Machine “0”):

用一种专门的位序列表示“机器0”。例如,IEEE754单精度浮点数中,用“0000 0000H”表示“+0”,用“8000 0000H”表示“– 0”。当运算结果出现阶码过小时,计算机将该数近似表示为“机器0”。

BCD码(Binary Coded Decimal,BCD):

十进制数用二进制编码的形式表示称为BCD码。

逻辑数据(Logic Data):

逻辑数据用来表示命题的“真”和“假”,分别用 “1”和“0”来表示。进行逻辑运算时,按位进行。

ASCII码(American Standard Code for Information Interchange):

目前计算机中使用最广泛的西文字符集及其编码,即美国标准信息交换码(American Standard Code for Information Interchange),简称ASCII码。

逻辑移位(logical Shifte):

逻辑移位是对无符号数进行的移位,把无符号数看成一个逻辑数进行移位操作。左移时,高位移出,低位补0;右移时,低位移出,高位补0。

算术移位(arithmetic Shifte):

算术移位是对带符号数进行的,移位前后符号位不变。左移一位,数值扩大一倍,相当于乘2操作;右移一位,数值缩小一半,相当于除2操作。移位时,符号位不动,只是数值部分进行移位。对于不同的编码,其移位规则不同。① 原码左移:高位移出,末位补0。移出非零时,发生溢出。右移:高位补0,低位移出。移出时进行舍入操作。② 补码左移:高位移出,末位补0。移出非符时,发生溢出。右移:高位补符,低位移出。移出时进行舍入操作。

循环(逻辑)移位(rotating Shifte):

循环移位是一种逻辑移位,移位时把高(低)位移出的一位送到低(高)位,即:左移时,各位左移一位,并把最左边的位移到最右边;右移时,各位右移一位,并把最右边的位移到最左边。

移位器(Shifter):

具有移位功能的寄存器,称为移位寄存器。

扩展操作(extending):

在计算机内部,有时需要将一个取来的短数扩展为一个长数,此时要进行填充(扩展)处理。有“零扩展”和“符号扩展”两种。

零扩展(Zero extending):

对无符号整数进行高位补0的操作称为“零扩展”。

符号扩展(Sign extend):

对补码整数在高位直接补符的操作,称为“符号扩展”。

扩展器(Extender):

进行扩展(填充)操作的部件,称为扩展器。一般输入为n位,输出为2n位。

半加器(Half Adder):

只考虑本位两个加数而不考虑低位进位来生成本位和的一位加法器。

全加器(Full Adder,(3, 2) adder):

不仅考虑本位两个加数而且考虑低位进位来生成本位和的一位加法器。

加法器(Adder):

能进行n位加法运算的部件。

行波进位(Ripple Carry):

在进行n位加法运算时,低位向高位的进位采用像“行波”一样进行串行传递的方式,称为行波进位方式。

行波进位加法器(Ripple Carry Adder):

行波进位加法器也称为串行进位加法器,它通过n个全加器按照串行方式连起来实现。进位方式采用行波进位方式。

先行进位(Carry Lookahead):

通过引入两个进位辅助函数(进位生成和进位传递),使得加法器的各个进位之间相互独立、并行产生。这种进位方式也称为并行进位方式。

进位生成函数(Generate Carry):

n位加法器中,每一位定义一个函数:gi = Ai &Bi (“&”表示与操作)。该函数的含义是,只要函数值gi为1,不管低位有没有进位,一定能生成向高位的进位。这个函数称为进位生成函数。

进位传递函数(Propagate Carry):

n位加法器中,每一位定义一个函数:pi = Ai | Bi ( “|” 表示或操作),该函数的含义是,只要函数值pi为1,那么,低位来的进位一定能传递到高位。这个函数称为进位传递函数。

先行进位加法器(Carry Lookahead Adder):

先行进位加法器也称为并行进位加法器,它通过引入进位生成函数和进位传递函数,使得进位之间相互独立、并行产生。因而能够快速得到最终整个和数。故也称为快速加法器。

算术逻辑部件(Arithmetic Logic Unit):

用来执行各种算术和逻辑运算的部件。有两个源输入端和一个结果输出端,并具有操作控制和低位进位输入端,以及输出结果是否为0等标志输出端。

布斯算法(Booth’s Algorithm):

是一种补码乘法算法,用于带符号数的乘法运算,由Booth提出。算法的基本思想是在乘数的末位添加一个“0”,乘数中出现的连续“0”和连续“1”处不进行任何运算;出现“10”时,做减法;出现“01”时,做加法。每次只做一位乘法,因而每一步都右移一位。

  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值