运算方法和运算器1old《计算机组成原理课件》.ppt
第二章 运算方法和运算器,数据与文字的表示方法定点加法、减法运算定点乘法运算定点除法运算定点运算器的组成浮点运算方法和浮点运算器,2.1 数据与文字的表示方法,计算机中的数据分两类 1.数值数据(有值)例:18-2-0.1011 23/32 数轴 0 2.非数值数据(字母,符号,汉字)例:A B C a b c!#$,.”;:电脑,数据库,数据的表示方法,定点数(表示范围小,硬件简单)浮点数(表示范围大,硬件复杂)真值与机器数数的机器码表示方法原码表示法补码表示法反码表示法移码表示法,1)定点表示法,符号,数值,纯小数:a、定点小数表示:XS.X1 X2 Xn(原码、反码、补码)b、范围:0|X|0.11111 即:0|X|1-2-n,n位,1位,由于约定在固定的位置,小数点就不再使用记号“.”来表示。,纯整数,a、定点整数表示:Xs X1 X2 Xn(原码、反码、补码)b、范围:1|X|11111 即:1|X|2n-1,目前计算机中多采用定点纯整数表示。由于有些数据用定点数不易表示,因而采用浮点表示法。,2)浮点表示法,定义:任意一个R进制都可以通过移动小数点的位置写成 X=RE M 式中:R是基数,可以取2,8,16,一旦定义则不能改变,是隐含的。M是纯小数(含数的符号),称为尾数,表示数X的全部有效数字。E是阶码,纯整数,指出小数点在该数中的位置。由于阶码可以取不同的数值,所以,小数点的位置是不确定的,这种数被称为浮点数。二进制浮点数的表示格式:X=2E M,浮点数的表示方案:,:,:,浮点数的表示方案:,:IEEE754标准(基数R2),32位浮点数:,1位,23位,8位(移码表示),64位浮点数:,1位,52位,11位(移码表示),其中阶码E采用移码方法来表示正负指数,将浮点数的指数真值e变成阶码E时,应Ee127(01111111B),尾数规格化,如不对浮点数的表示不做明确规定,同一个浮点数表示是不唯一的,比如(1.75)10可以表示1.11*20,0.11121,0.011122因此为提高精度,并保持一致性,规定:当尾数的值不为0时,尾数域的最高有效位为1,如不满足需要左右移动小数点使其满足这一要求,这称为尾数规格化,即变成1.M形式,IEEE754标准中一个规格化的32位浮点数的真值可表示为:(1)s(1.)2127 e127一个规格化的64位浮点数的真值为:(1)s(1.)21023 e1023,例1 若浮点数的二进制存储格式为(41360000)16,求其32位浮点数的十进制值。,于是有(1)s1.M2e,解:,将十六进制数展开后,可得二进制数格式为,指数e阶码127,100000100111111100000011=(3)10,包括隐藏位1的尾数1.M,1.011 0110 0000 0000 0000 0000,1.011011,(1.011011)23,1011.011,(11.375)10,例2 将十进制数数20.59375转换成32位浮点数的二进制格式来存储。,解:,首先分别将整数和分数部分转换成二进制数:,20.5937510100.10011,然后移动小数点,使其在第1,2位之间,10100.10011,1.010010011,2,4,e4,S,0,E,4,+,127,=,131,M=,010010011,最后得到32位浮点数的二进制存储格式为:,0100 0001 1010 0100 1100 0000 0000 0000,(41A4C000)16,练习:1、将20.1875转换成,32位浮点数存储?2、若浮点数的二进制存储格式为(41A18000)16,求其十进制值?作业:将十进制数数17.296875转换成位浮点数的二进制格式来存储?,3.十进制数串的表示方法 目前,大多数通用性较强的计算机都能直接处理十进制形式表示的数据。十进制数串在计算机内主要有两种表示形式:(1)字符串形式字符串形式:一个字节存放一个十进制的数位或符号位。为了指明这样一个数,需要给出该数在主存中的起始地址和位数(串的长度)。,(2)压缩的十进制数串形式压缩的十进制数串形式:一个字节存放两个十进制的数位。用压缩的十进制数串表示一个数,要占用主存连续的多个字节。每个数位占用半个字节(即4个二进制位),其值可用二十编码(BCD码)或数字符的ASCII码的低4位表示。符号位也占半个字节并放在最低数字位之后,其值选用四位编码中的六种冗余状态中的有关值,如用12(C)表示正号用13(D)表示负号。在这种表示中,规定数位加符号位之和必须为偶数,当和不为偶数时,应在最高数字位之前补一个0。例如 123 和12分别被表示成:1 2 3 C(+123)0 1 2 D(-12),数值数据定点数的表示方法,原码表示法补码表示法反码表示法移码表示法,数值数据定点数的表示法(原码),定点小数表示:Ns.N1 N2 Nn 定义:X 原=定点整数表示:Ns N1 N2 Nn定义:X 原=,X,1-X,0 X 1,-1 X 0,X,2n-X,0 X 2n,-2n X 0,数值数据定点数的表示法(原码),实例:X1=0.10110-0.10110 0.0000 X 原=0.10110 1.10110 0.0000 1.0000 实例:X1=10110-10110 0000 X 原=010110 110110 00000 10000,数值数据定点数的表示法(原码),性质:原码为符号位加数的绝对值,0正1负原码零有两个编码,+0和-0编码不同原码难以用于加减运算N+1位二进制原码所表示的范围:,小数:MAX=1-2-n,MIN=(1-2-n)整数:MAX=2n-1,MIN=(2n-1),数值数据定点数的表示法(补码),补码是在“模”和“同余”的概念下导出的。“模”是指一个计量系统的计量范围,即产生“溢出”的量。,数值数据定点数的表示法(补码),现在是北京时间3点整,而时钟却指向5点。如何调整?,5-2=3,5+10=3(12自动丢失。12就是模),数值数据定点数的表示法(补码),继续推导:5-2=5+10(MOD 12)5+(-2)=5+10(MOD 12)-2=10(MOD 12)结论:,可以说:在模为12的情况下,-2的补码就是10。一个负数用其补码代替,同样可以得到正确的运算结果。,数值数据定点数的表示法(补码),进一步结论:在计算机中,机器能表示的数据位数是一定的,其运算都是有模运算。如果是n位整数,其模为2n1。如果是n位小数,其模为2。若运算结果超出了计算机所能表示的数值范围,则只保留它的小于模的低n位的数值,超过n位的高位部分就自动舍弃了。,数值数据定点数的表示法(补码),定义:任意一个X的补码为X补,可以用该数加上其模M来表示。X补=X+M,数值数据定点数的表示法(补码),定点小数表示:Ns.N1 N2 Nn 定义:X 补=(MOD 2)定点整数表示:Ns N1 N2 Nn定义:X 补=,X,2+X,0 X 1,-1 X 0,X,2n+1+X,0 X 2n,-2n X 0,(MOD 2n+1),数值数据定点数的表示法(补码),实例:X1=0.10110-0.10110 0.0000 X 补=0.10110 1.01010 0.0000 实例:X1=10110-10110 0000 X 补=010110 101010 00000,数值数据定点数的表示法(补码),由于正数的补码就是正数本身,故着重讲解负数求补码的方法。,负数求补码,数值数据定点数的表示法(补码),(1)由定义求例:,X补=2+X,=10+(-0.1101001),=1.0010111,数值数据定点数的表示法(补码),例:X=-1101001 解:,X补=28+X,=100000000+(-1101001),=10010111,反过来,由补码求真值,只要将公式进行交换即可。,数值数据定点数的表示法(补码),(2)由原码求补码除符号位以外,其余各位求反,末位加1。例:X=-0.0101011解:,X原=1.0 1 0 1 0 1 1,X补=,1.,1,1,1,0,0,0,0,+,0.0 0 0 0 0 0 1,1.1 0 1 0 1 0 1,由补码求原码,此规则同样适用。,由原码求补码的简便原则:除符号位以外,其余各位按位取反,从最低位开始遇到的第一个1以前的各位保持不变。,例:X原=1 1 0 1 1 0 1 0 0,X补=,1 0 1 0 0 1,1 0 0,1 0 0,由-X补求X补,此规则同样适用。,数值数据定点数的表示法(补码),(3)由X补求-X补:连符号位一起各位求反,末位加1。例:X补=1.1010101解:,X补=1 1 0 1 0 1 0 1,-X补=,0,0,0,0,1,1,1,0,+,1,0 0 1 0 1 0 1 1,数值数据定点数的表示法(补码),(4)由X补求1/2X补:将X补的符号位和数值位一起向右移动一次。符号位移走后保持原来的值不变。例:,X补=,1,0,0,1,1,0,0,0,X/2补=,1,0,1,0,1,0,0,0,1,这称为“算术移位”,你会求X/4补和X/8补吗?,数值数据定点数的表示法(补码),性质:0的补码是唯一的补码便于加减运算n+1位补码所能表示的数:小数:MAX=1-2-n,MIN=1整数:MAX=2n-1,MIN=2n,数值数据定点数的表示法(反码),定点小数表示:Ns.N1 N2 Nn 定义:X 反=定点整数表示:Ns N1 N2 Nn定义:X 反=,X,(2-2-n)+X,0 X 1,-1 X 0,X,(2n+1 1)+X,0 X 2n,-2n X 0,数值数据定点数的表示法(反码),由原码求反码,如果X为正数,则X反=X原;如果X为负数,则将X原除符号位以外,每位都变反,可得到X反。实例:X=+0.10110-0.10110+0.0000 X 反=0.10110 1.01001 0.0000-0.0000反 1.11111 实例:X1=+10110-10110+0000 X 反=0 10110 101001 00000-0000反 11111,对于反码有+0和-0之分,定点数(移码)的表示法,对于n+1位数Ns N1 N2 Nn 定义:X 移=2n+X 由于移码是在原值X上加一个2n,所以也称为增码,因此,符号为1时,表示正数,符号为0时,表示负数。X=+1101010,X移=27+X=1,1101010,-2n X 2n,数值数据定点数的表示法(移码),由X补求X移:只要将X补的符号位求反,就可得到X移。性质:若X1移X2移,则有 X1X2,例3以定点整数为例,用数轴形式说明原码、反码、补码表示范围和可能的数码组合情况。,解:,思考:为什么补码表示负数时,范围可到-2n?,设n=8则:,原码:,正数:,0000 0000(+0),0111 1111(+127),共128个,负数:,1000 0000(-0),1111 1111(-127),共128个,共256个,一个字节8位(即n=8),共能表示256个数,即:-127127,反码:,正数:,0000 0000(+0),0111 1111(+127),共128个,负数:,1111 1111(-0),1000 0000(-127),共128个,共256个,一个字节8位(即n=8),共能表示256个数,即:-127127,补码:,正数:,0000 0000(+0),0111 1111(+127),共128个,负数:,1111 1111(-1),1000 0001(-127),共127个,共255个,一个字节8位(即n=8),共能表示256个数,多出1000 0000表示-128,-128补=,1000 0000,1111 1111,+1,1000 0000,例4将十进制真值(127,1,0,1,127)列表表示成二进制数及原码、反码、补码、移码值。,解:,原码、补码、反码和移码的区别,可分三个区域:,零区:a、X原、X反有+0、-0之分 b、X补+0=-0=0 c、X移 0移=1000 0000,正数:a、X原=X反=X补 b、X移从1127、数值:000 0001111 1111与原反补相同、符号:(始终)=1,与原反补相反,负数:a、原、反、补各不相同 b、X移:数值位与X补相同,符号位与X补相反均 为0 c、X反、X原 按位求反 X补=X反+1,例题,例5、设机器字长16位,定点表示,尾数15位,数符1位,问:(1)定点原码整数表示时,最大正数是多少?最小负数是多少?(2)定点原码小数表示时,最大正数是多少?最小负数是多少?例6:P27,例题,例7、把十进制(+128.75)102-10写成浮点表示的机器数,阶码、尾数分别用原码、补码表示。设阶码4位,阶符1位,尾数15位(不含符号位),数符1位。(本题可见习题册P16页第4题),三、十进制数串的表示方法目前,大多数通用性较强的计算机都能直接处理十进制形式表示的数据。十进制数串在计算机内主要有两种表示形式:1.字符串形式字符串形式:一个字节存放一个十进制的数位或符号位。为了指明这样一个数,需要给出该数在主存中的起始地址和位数(串的长度)。2.压缩的十进制数串形式,二十进制有权码8421BCD码,思考1:机器中十进制数是否能直接运算?,十进制数用二进制编码,思考2:0、1、2 9(共10个状态),需几个二进制位?,从每个二进制位是否有确定的位权区分,可把二十进制编码分为有权码和无权码两种。,(1)8421BCD码(有权码),每一位的权值从高位到低位分别为:,23,22,21,20 即:8,4,2,1,8421BCD码,1、每个十进制数用四位二进 制数表示。,3、8421码和十进制数之间直 接按位转换。,2、四位二进制数有16种状态 组合,8421码只用了前十 种,10101111六种没有 使用,是禁用码。,位权值,0 0 0 0 0,1 0 0 0 1,2 0 0 1 0,3 0 0 1 1,4 0 1 0 0,5 0 1 0 1,6 0 1 1 0,7 0 1 1 1,8 1 0 0 0,9 1 0 0 1,十进制数,8 4 2 1,例:(37.86)10=(?)8421BCD,=(0011,0111.1000,0110)8421BCD,一位十进制数,用四位二进制数表示。,例:8421BCD=(?)10,四位二进制数,可以表示一位十进制数。,=(0110,0010,1000.1001,0101)8421BCD,=(628.95)10,(2)余3码(无权码),特点:,1、比8421BCD码多出0011所以 称为余3码。,余3码=8421码+0011,2、余3码,没有确定的位权值 只能理解记忆和十进制之间 的关系。,3、余3码是一种对9的自补代码。,0011,1100,0100,1011,例1:求(47)10+(32)10=,解:,(47)BCD,=,0100,0111,+,(32)BCD,=,0011,0010,1001,0111,79,(79)10,例2:求(5)10+(8)10=,解:,(5)BCD,=,0101,+,=,1000,1101,(13)10,(8)BCD,0,9,A,F,09,6,+,110,1,1,0,0,1,0,0,0,当和大于9时,需加6修正,字符与字符串的表示方法,计算机中最重要的功能是处理信息,如:数值、文字、符号、语言和图象等。计算机内部,各种信息都必须采用数字化编码的形式被传送、存储、加工。因此掌握信息编码的概念与处理技术是至关重要的。所谓编码,就是用少量简单的基本符号,选用一定的组合规则,以表示出大量复杂多样的信息。,常用的信息分为:定点数 数值信息 浮点数 字符 非数值信息 汉字 逻辑数据,字符编码,用一定位数的二进制数“0”和“1”进行编码给出。常用的字符编码ASCII码。ASCII(American Standard Code for Information Interchange),字符编码,ASCII码是美国信息交换标准代码。(American Standard Code for Information Interchange)包括0-9十个数字,大小写英文字母及专用符号等95种可打印字符。,Computer,01000011 01101111 0110110101110000 01110101 0111010001100101 01110010,7 6 5 4 3 2 1,中文编码,汉字输入码:为进行汉字输入,将汉字 代码化。汉字机内码:在计算机内部进行汉字处理。汉字字型码:汉字输出时的编码。,中文编码,字符代码化(输入),数字码拼音码字形码,中文编码(字型码中的点阵表示),逻辑数据,逻辑型数据只有两个值:真 和 假,正好可以用二进制码的两个符号分别表示,例如 1 表示 真 则 0 表示 假不必使用另外的编码规则。对逻辑型数据可以执行逻辑的 与 或 非等基本逻辑运算。其规则如下,逻辑数据,X Y X与Y X或Y X异或Y 0 0 0 0 0 0 1 0 1 1 1 0 0 1 1 1 1 1 1 0,三、校验码,为了提高计算机的可靠性,除了采取选用更高可靠性的器件,更好的生产工艺等措施之外,还可以从数据编码上想一些办法,即采用一点冗余的线路,在原有数据位之外再增加一到几位校验位,使新得到的码字带上某种特性,之后则通过检查该码字是否仍保持有这一特性,来发现是否出现了错误,甚至于定位错误后,自动改正这一错误,这就是我们这里说的检错纠错编码技术。,校验码,三种常用的检错纠错码:奇偶检错码 用于并行数据传送中海明检错与纠错码 用于并行数据传送中循环冗余码 用于串行数据传送中,奇偶校验码,奇偶校验码:用于并行码检错原理:在 k 位数据码之外增加 1 位校验位,使 K+1 位码字中取值为 1 的位数总保持为 偶数(偶校验)或 奇数(奇校验)。例如:,偶校验,奇校验,校验位,0 0 0 1,0 0 0 1,0 1 0 1,0 1 0 1,0 1 0 1,0 0 0 1,1,0,0,1,原有数字位 两个新的码字,字,校验位,校验码,例1:数据 0010 0001 0111 0101,奇校验码,0010 0001,1,偶校验码,0010 0001,0,0111 0101,0,0111 0101,1,例2:数据:0111 0101,奇校验码,0111 0101,0,发送端,(门电路),0110 0101,0,接收端,出错,例3:数据:0111 0101,奇校验码,0111 0101,0,发送端,(门电路),0110 0111,0,接收端,正确,奇偶校验只能发现奇数个错误,且不能纠正错误!,某机字长32位,采用定长小数表示,符号位为1位,尾数为31位,则可表示的最大正整数为?最小负整数?某机字长32位,采用定点整数表示,符号位为1位,尾数为31位,则可表示的最大正整数?最小负整数?,用n+1为字长(其中1位符号位)表示定点整数时,所能表示的数值范围是?用n+1为字长(其中1位符号位)表示定点小数时,所能表示的数值范围是?,设机器字长16位,定点表示,尾数15位,数符1位,问:定点原码整数表示时,最大正数?最小负数?定点原码小数表示时,最大正数?最小负数?,机器字长32位,定点表示,尾数31位,数符1位,问:定点原码整数表示时,最大正数?最小负数?定点原码小数表示时,最大正数?最小负数?,设机器字长16位,浮点表示,阶码5位,阶符1位,问:定点原码整数表示时,最大正数?最小负数?定点原码小数表示时,最大正数?最小负数?,