数据与文字的表示方法.ppt

上传人:牧羊曲112 文档编号:6296170 上传时间:2023-10-14 格式:PPT 页数:216 大小:1.16MB
返回 下载 相关 举报
数据与文字的表示方法.ppt_第1页
第1页 / 共216页
数据与文字的表示方法.ppt_第2页
第2页 / 共216页
数据与文字的表示方法.ppt_第3页
第3页 / 共216页
数据与文字的表示方法.ppt_第4页
第4页 / 共216页
数据与文字的表示方法.ppt_第5页
第5页 / 共216页
点击查看更多>>
资源描述

《数据与文字的表示方法.ppt》由会员分享,可在线阅读,更多相关《数据与文字的表示方法.ppt(216页珍藏版)》请在三一办公上搜索。

1、21数据与文字的表示方法,2.1.1 数据格式 选择计算机数的表示方式时,需考虑以下几个因素:(1)要表示的数的类型(小数,整数,实数和复数).(2)可能遇到的数值范围;(3)数值精确度;(4)数据存储和处理所需要的硬件代价。,计算机中常用的数据表示格式:两种 定点格式,浮点格式。定点格式:数值范围有限,处理硬件比较简单。浮点格式:数值范围很大,处理硬件比较复杂。1.定点数的表示方法 定点格式:约定机器中所有数据的小数点位置固定不变的。小数点就不再使用记号“”来表示。小数点位置固定在哪一位都可以,通常将数据表示成纯小数或纯整数。,例如:,用一个n+1位字来表示一个定点数X,其中一位x0用来表示

2、数的符号,其余位数代表它的量值。符号位 x0 放在最左位置,数值0和1分别代表正号和负号。对于任意定点数 x=x0 x1x2xn-1xn,在定点机中可表示为如下形式:x0.x 1 x2 xn-1 xn.符号 量值(尾数),如果数表示的是纯小数,小数点位于x0和x1之间。当x 1 x2 xn各位均为时,数的绝对值最小,min;当各位均为时,的绝对值最大,max=0.111.111故数的表示范围:0|x|1-n=0.111111 纯小数(2.1)如数C表示的是纯整数,小数点位于最低位CN 的右边此时数X的表示范围:0|x|-1=111111 纯整数(2.2)目前计算机中多采用定点纯整数表示,将定点

3、表示的运算简称为整数运算。,2浮点数的表示方法 电子的质量(910-28克)和太阳的质量(21033克)相差甚远,在定点计算机中无法直接来表示这个数值范围。要使它们送入定点计算机进行某种运算,必须对它们分别取不同的比例因子,使其数值部分绝对值小于是1.910-28=0.910-27 21033=0.21034 这里的比例因子10-27 和1034要分别存放在机器.某个存单元中,便于以后对计算结果按这个比例增大。要占用一定的存储空间和运算时间。,计算机中还可以这样来表示数据:把一个数的有效数字和数的范围在计算机的一个存储单元中分别予以表示。这种把数的范围和精度分别表示的方法,相当于数的小数点位置

4、随比例因子的不同而在一定范围内可以自由浮动,所以称为浮点表示法。任意一个十进制数N 写成:N=10EM(23),在计算机中一个任意进制数N可以写成:N=Rem=R士e*士m(24)m 称为浮点数的尾数,是一个纯小数。e是比例因子的指数,称为浮点的指数.是一个整数。比例因子的基数R对二进计数制的机器是一个常数,一般规定 R为2,8和16。在机器中表示一个浮点数时:一是要给出尾数,用定点小数形式表示。尾数部分给出有效数字,决定了浮点数的表示精度。二是要给出指数,用整数形式表示,常称为阶码.阶码指明小数点在数据中的位置,决定了浮点数的表示范围。浮点数也要有符号位。,E 12 M 阶符 阶码 数符 尾

5、数,一个机器浮点数应当由阶码和尾数及其符号位组成:,为便于软件移植,按照IEEE754的标准,32位浮点数的标准格式为:31 30 23 22 0 S E M 32位浮点数,64位标准格式浮点数:63 62 52 51 0 S E M32位浮点数和64位浮点数,规定基数R=2 基数2是固定常数,不必用显示方式来表示它,32位的浮点数中:S是浮点数的符号位,占1位,安排在最高位,S=0表示正数,S=1表示负数。M是尾数,放在低位部分,占用23位,用小数表示,小数点放在尾数域的最前面。E 是阶码,占用8位,阶符采用隐含方式,采用移码方法来表示正负指数。移码方法对两个指数大小的比较和对阶操作都比较方

6、便,阶码域值大者其指数值也大。采用这种方式时,将浮点数的指数真值e变成阶码E 时,应将指数 e加上一个固定的偏移值127(01111111),E=e+127。,一个规格化的32位浮点数X的真值可表示为:x=(1)S(1M)2E-127 e=E127(2.5)尾数域表示的值是1.M 规格化的浮点数的尾数域最左位(最高有效位)总是1,故这位经常不存储,认为隐藏在小数点的左边.例:8位二进制补码与移码之间的关系为:X移=128+X补 0.1M 2E=(1M)2-1 2E+128=(1M)2E+128-1=(1M)2E+127,对于尾数,当取绝对值且已经规格化后,其形式一定为0.1M2M3M4Mn,显

7、然仅存储M2M3M4Mn可以节约存储位。0.1M2M3M4Mn=1.M2M3M4Mn 2 1,阶码真值和移码关系的说明(对于8位阶码)由补码和真值的关系知:E移码=E补码+27=E补码+128,(-1)s(1.M)2 e+128 2-1=(-1)s(1.M)2 e+127,对754-32标准尾数的说明,64位浮点数中符号位1位,阶码域11位,尾数域52位,指数偏移值是1023 规格化的64位浮点数X的真值为:x=(1)S(1M)2E-1023 e=E1023(2.6),若不对浮点数的表示作出明确规定,同一个浮点数的表示就不是惟一的。例如:05可以表示成005101,5010-2等。当尾数的值不

8、为0时,其绝对值应05尾数域的最高有效位应为1要修改阶码同时左右移小数点的办法使其变成这一要求的表示形式,这称为浮点数的规格化表示。,当一个浮点数的尾数为0,不论其阶码为何值,或者当阶码的值遇到比它能表示的最小值还小时,不管其尾数为何值,计算机都把该浮点数看成零值,称为机器零。,假设:机器中的数由8位二进制数表示(包括符号位)定点机中这8位全部用来表示有效数字(包括符号)在浮点机中若阶符阶码占3位,数符尾数占5位。只考虑正数值,定点机小数表示的数的范围:0.00000000到0.11111111 相当于十进制数的0到127/128 浮点数所能表示的数的范围:2-1100001到21101111

9、 相当于十进制数的 1/128 到 75 显然,都用8位,浮点机能表示的数的范围比定点机大得多。,一台计算机中采用定点表示还是浮点表示,要根据计算机的使用条件来确定。一般在高档微机以上的计算机中同时采用定点、浮点表示,由使用者进行选择。单片机中多采用定点表示。,【例1】若浮点数X 的二进制存储格式为(41360000)16 求其32位浮点数的十进制值。解:将16进制数展开后,得二制数格式为:0100 0001 0011 0110 0000 0000 0000 0000 S 阶码(8位)M尾数(23位)指数e=阶码127=1000001001111111=00000011=(3)10包括隐藏位1

10、的尾数1M=1011 0110 0000 0000 0000 0000=1011011于是有 x=(1)S1M2 e=+(1011011)2 3=+1011011=(11375)10,【例2】将十进制数20.59375转换成32位浮点数的二进制格式来存储。解:首先分别将整数和分数部分转换成二进制数:2059375=1010010011然后移动小数点,使其在第1,2位之间 1010010011=101001001124 e=4于是:S=0,E=4+127=131,M=010010011得到32位浮点数的二进制存储格式为:0100 0001 1010 0100 1100 0000 0000 000

11、0=(41A4 C000)16,3十进制数串的表示方法 大多数通用性较强的计算机都能直接处理十进制形式表示的数据。十进制数串在计算机内有两种表示形式:(1)字符串形式:一个字节存放一个十进制的数位或符号位.(2)压缩的十进制数串形式:一个字节存放两个十进制的数位。每个数位占半个字节(4个二进制位),用压缩的十进制数串表示一个数,要占用主存连续的多个字节。其值可用二-十编码(BCD码)或数字符的ASCII码的低 4位表示。符号位占半个字节并放在最低数字位之后,用12(C)表示正号,用13(D)表示负号规定数位加符号位之和必须为偶数当和不为偶数时,应在最高数字位之前补一个0。,例如:,1 2 3

12、C 0001 0010 0011 1100 0 1 2 D 0000 0001 0010 1101,(123),(12),每一个小框内给出一个数值位或符号位编码值(用十六进制形式给出).符号位在数字位之后。要指明一个压缩的十进制数串,要给出它在主存中的首地址和数字位个数.(不含符号位),又称位长,位长为0的数其值为0。十进制数串表示法的优点:位长可变,许多机器中规定该长度从 0到31,有的甚至更长。,4自定义数据表示 在传统的计算机体系结构中,用指令本身来说明操作数据的类型。定点法表示操作数是纯小数或纯整数;浮点加法表示操作数是浮点数;十进制加法表示操作数是BCD 数。由于操作数据类型不同,要

13、设三种不同的指令(操作码)来加以区分。自定义数据表示:用数据本身来说明数据类型。表示形式:有两种 标志符数据表示和描述符数据表示。,要求对每一个数据都有附加标志符,格式如下:标志符 数 据标志符指明后面的数据所具有的类型,如整数,浮点数、BCD数、字符串等。标志符数据表示的优点:能简化指令系统,便于程序调试和查错.标志符数据表示的缺点:数据区域占用的存储空间增加,指令执行的速度减慢。,标志符数据表示:,描述符数据表示:主要用来描述多维结构的数据类型.如向量、矩阵、记录等。格式为:描述符标志位 特征标记 数据块长度 数据块起始地址 描述符标志位部分:指明这是一个数据描述符;特征标记部分:指明数据

14、的各种特征;长度部分:指明数组中元素个数;起始地址部分:指明数据块的首地址。,标志符与描述符表示的区别:3点(1)标志符与每个数据相连,二者合起来存放在一个存储单元,而描述符要和数据分开存放。(2)描述符表示中,先访问描述符,后访问数据,至少增加一次访存。(3)描述符是程序的一部分,而不是数据的一部分。,2.1.2数的机器码表示,1.问题?计算机中对数据进行运算操作时,符号位如何表示呢?是否也同数值位一道参加运算操作呢?如参加,会给运算操作带来什么影响呢?2.解决:把符号位和数值一起编码来表示相应的数。如原码、补码、反码、移码等。为了区别一般书写表示的数和机器中这些编码表示的数,通常将前者称为

15、真值,后者称为机器数或机器码。,1 原码表示法 定点小数的原码形式为 xox1x2 xn,原码表示的定义:x 1x0 x原=(2.7)1 x=1+|x|0 x-1式中x原 机器数,x 是真值。例如,x=+01001,x原=0.1001 x=-01001,x原=1.1001,一情况情况下,对于正数x=+0 x1x2 xn,有x原=0 x1x2 xn对于负数x=-0 x1x2xn,有x原=1x1x2 xn对于0,原码机器中往往有“+0”、“-0”之分有两种形式:+0 原=0000 0-0 原=1000 0,定点整数的原码形式为 xox1x2 xn,原码表示的定义:x 2nx0 x原=(2.8)2n

16、 x=2n+|x|0 x-2n 采用原码表示法简单易懂.最大缺点:运算复杂。因为当两数相加时,如果是同号则数值相加;如果是异号则要进行减法。,在进行减法时,要比较绝对 值的大小,然后大数减去小数,最后要给结果选择恰当的符号。为了解决这些矛盾,人们找到了补码表示法。,2补码表示法,以钟表对时为例说明补码的概念。假设:现在的标准时间为4点正,有一只表已经7点了,为了校准时间,可以采用两种方法:一是将时针退7-4=3格一是将时针向前拨12-3=9格 这两种方法都能对准到4点,减3和加9是等价的。就是说 9是(-3)对12的补码,用数学公式表示为 3=+9(mod12)mod12的意思就是12为模数,

17、这个“模”表示被丢掉的数值.上式在数学上称为同余式。,上例中73和7+9(MOD12)等价,原因就是表指针超过12时,将12自动丢掉,最后得到1612=4。同样,以12为模时-4=+8(mod12)-5=+7(mod12)从这里得到一个启示,就是负数用补码表示时,可以把减法转化为加法。这样,在计算机中实现起来就比较方便。,在定点小数机器中数最大不超过1 也就是负的小数对“1”的补码是等价的。实际上,负数的符号位还有一个“1”,要把它看成数的一部分,所以要对2求补码,也就是以 2 为模数。例如:X=-1 x补=?(mod 2)x补=-1补=2+x=2+(-1)=-1.00.00,定点小数补码形式

18、 xox1x2 xn,补码表示的定义为:x 1x0(mod 2)x补=2+x=2-|x|0 x-1(2.9)式中x补为机器数,x为真值。,例,x=+0.1011,x补=0.1011x=-0.1011,x补=10+X=10.0000 0.1011=1.0101一般情况下,对于正数 x=+xox1x2 xn x补=xox1x2 xn对于负数 x=-0 x1x2xn,x补=10.000-0 x1x2 xn(mod 2)对于0,在补码情况下:+0补=-0 补=0.0000(mod 2)注意:0的补码表示只有一种形式。,对定点整数,补码表示的定义:,x 2nx0(mod 2n+1)x补=2n+1+x=2

19、n+1-|x|0 x-2n(2.10),设x补=x0.x1x2xn,求证,x/2补=x0.x0 x1x2xn 证明:因为X=-x0+X i 2-i所以 X/2=-x0/2+1/2*X i 2-i=-x0+x0/2+1/2*X i 2-i=-x0+X i 2-(i+1)由于 X/2=-x0+X i 2-(i+1)根据补码与真值的关系便有:x/2补=x0.x0 x1x2xn 由此可见,如果要得到2-i X补,只要将x补连同符号位右移i位即可,结论:采用补码表示法进行减法运算比原码方便多了。不论数是正不是负,机器总是做加法,减法运算可变成加法运算。但根据补码定义,求负数的补码要用2减去|X|。为了用

20、加法代替减法,结果不得在求补码时作一次减法,这显然是不方便的。下面介绍的反码表示 可以解决负数的求补问题。,3.反码表示法,反码:就是二进制数的各位数码 0变为1,1变为0.若xi=1,反码xi=0;若xi=0,反码xi=1。数值上面的一横表示反码的意思。在计算机中用触发器寄存数码,若触发器Q端输出表示原码,则 Q 端输出就是反码。,(1)对于正数 x=+0.x1x2 xn x反=0.x1x2 xn(2)对于负数 x=-0.x1x2 xn x反=1.x1x2 xn(3)对于零,反码有“0”和“0”之分 0反0.00 0 0反1.11 1 若x的反码形式为x0.x1x2 xn,其中x0为符号位,

21、反码表示的定义:,x 0 x1 x反=(22n)-x 1x0,比较求负数的反码和补码的公式:x反=(22n)-x x补=2-x x补=x反+2n 这个公式说明,求一个负数的补码其方法是符号位置1,其余各位0变1或1变0,然后在最末位(2n位)上加1。,当1x0:,x反=(22n)-x 公式推导 假设 x=-0.x1x2 xn x=0.x1x2 xn x反=1.x1x2 xn 构造:x+x反=0.x1x2 xn+1.x1x2 xn=1.111.11=2-2-n 当1.111.11+0.00001=2 1.111.11=2-0.00001=2-2-n所以:x反=(22n)-x证毕,从上面的讨论发现

22、:(1)正数的原码、补码和反码具有相同的形式.即:x原=x反=x补=0.x1x2 xn(2)负数的原码,将符号位置1,数值部分不变得到;(3)负数的补码和反码符号位均为1。反码的数值部分通过将原码的数值各位取反获得,补码的数值部分只需在反码的末位加1便可得到。,例.以定点整数为例,用数轴形式说明原码,反码,补码表示范围和可能的数码组合情况 解:原码,反码,补码表示于下图。与原码,反码不同,在补码表示中“0”只有 一种形式,用补码表示负数时的范围可到2n。,1001,11 1,00 0,00 01,01 1,(2n1),1,0,1,(2n1),2n,10 0,原码,反码,补码,A,B,AB,A,

23、B,AB,典型门电路的逻辑符号和时间延迟(1),B,典型门电路的逻辑符号和时间延迟(2),A,B,A B,A,AB,A,D,4.移码表示法,移码通常用于表示浮点数的阶码.假定:定点整数得移码形式为xox1x2 xn移码的定义:x移2nx,2n x-2n式中x移为机器数,x为真值。若阶码数值部分为 5 位,以 x 表示真值,则 x移25x,25 x-25例如,当正数x=10101时,x移1,10101 当负数x=10101时,x移 25x 2510101 0,01011.,例.将十进制真值x(127,1,0,1,127)列表表示成二进制数及原码,反码,补码,移码值。解:二进制真值x及其诸码值列于

24、下表,其中0在X原,X反中有两种表示,由表中的数据可知,补码值和移码值差别仅在于符号位不同。,例.设机器字长16位,定点表示,尾数15位,符号一位,问:(1)定点原码整数表示时,最大正数是多少?最小负数是 多少?(2)定点原码小数表示时,最大正数是多少?最小负数是多少?解:(1)定点原码整数表示 最大正数值(2151)10(32767)10 最小负数值(2151)10(32767)10,0,111 111 111 111 111 1,1,111 111 111 111 111,(2)定点原码小数表示最大正数值(2151)10(0.11111)最小负数值(2151)10(0.111 11),15

25、个1,机器数的移位与舍入,一.数据的移位 移位可分为两大类:逻辑移位和算数移位。在逻辑移位中,只有数码位置的变化,无数量位置的变化。在算数移位中,应保持数据的符号位不变。1.以原码表示的正数移位规则(1)左移:符号位不变,末位补0。,符号位,1,15,补0,左移,(2)右移:符号位不变,最高有效位补0,最末位右移后舍去。,2.以原码表示的正数移位规则(1)左移:符号位不变,最末位补0。,(2)右移:符号位不变,最高有效位补1。,符号位,1,15,右移,舍去,0,3.反码表示的移位规则 根据反码和补码的关系可知,反码表示的负数,左移时末位应补1,其它移位规则与补码相同。移位后空位是补0还是补1,

26、应根据不同的码制 来决定。但它们却遵循一个规则:保持真值正确。,十进制数的二进制编码,二.舍入问题 1.原码、补码与正数反码采取“0舍1入”、负数反码采取“1舍0借”规则。2.原码与补码采取末位“恒置1”、负数反码采取采取末位“恒置0”规则。,用二进制数码来表示十进制数,称为二进制编 码的十进制数,简称BCD码。,2.1.3 字符与字符串(非数值数据)的表示方法,1字符的表示方法:ASC码,2汉字的表示方法,数字编码方法,字形编码方法,拼音编码方法,喑形结合编码方法,数据信息的校验,奇偶校验 奇偶校验,只具有发现一串二进制代码中,同时出现奇数个代码出错的能力。,8421码,奇校验位取 值,偶校

27、验位取 值,0000,0001,0010,0011,0100,0101,1,0,0,1,0,1,0,1,1,0,1,0,8421码校验位的取值,例.已知下表左边一栏有5个字节的数据,请分别用奇校验和偶校验进行编码,填在中间一栏和右边一栏,校验码最简单且应用最广泛的检错码是采用一位校验位的奇校验或偶校验。设 X(x0 x1 xn-1)是一个n位字,则奇校验位C定义为 Cx0+x1+xn-1式中+代表位加,表明只有当X中包含奇数个1时,才能使C1,即C0。同理,偶校验位C定义为 C x0+x1+xn-1表明只有当X中包含偶数个1时,才能使C0。,下面以偶校验为例来讨论在计算机中的实现。图中左半部为

28、校验位的产生电路,右半部分是校验电路。Pb1 b2 b3 b4 b5 b6 b7 b8,+,+,+,+,+,+,+,=1,=1,=1,=1,1,2,7,8,1,2,7,8,p,=1,=1,=1,P*,源部件,目的部件,偶校验逻辑示意图,2.2定点加法,减法运算,2.2.1 补码加法补码加法公式是 x补+y补=x+y补(mod2)现在分四种情况来证明。假设采用定点小数表示,因此证明的先决条件是|x|0,y0,则x+y0 相加两数都是正数,故其和也一定是正数。正数的补码和原码是一样的,根据数据补码定义可得:x补+y补=x+y=x+y补(mod2),(2)x0,y0,相加的两数一个为正,一个为负,因

29、此相加结果有正,负两种可能。根据补码定义,因为 x补x,y补2+y所以x补+y补=x+2+y=2+(x+y)当x+y 0时,2+(x+y)2,进位2必丢失,因为(x+y)0,所以 x补+y补=x+y=x+y补(mod2)当x+y 0时,2+(x+y)2,因为(x+y)0,所以 x补+y补=2+x+y=x+y补(mod2),(3)x 0,则x+y0或 x+y 0,这种情况和第2种情况一样,把x和y的位置对调即得证,(4)x 0,y 0,x+y 0 相加两数都是负数,其和也一定是负数。因为 x补x+2,y补y+2 所以 x补+y补=2+x+2+y=2+(2+x+y)又(2+x+y)一定是小于2而大

30、于1的数,进位2必丢失,所以 x补+y补=2+x+y=x+y补(mod2),例.x0.1001,y0.0101,求xy,解:x补 0.1001,y补 0.0101 x补 0.1001 y补 0.0101 x+y补 0.1110所以 xy0.1110,例.x0.1011,y0.0101,求xy,解:x补 0.1001,y补 0.0101 x补 0.1001 y补 0.0101 x+y补 1 0.1110所以 xy0.0110,总结:由以上两例看到,补码加法的特点:一.符号位要作为数的一部分一起参加算二.要在模2的意义下相加,超过2的进 位要丢掉.,2.2.2 补码减法,数用补码表示的时候,减法运

31、算的公式是x-y补x补-y补=x补+-y补只要证明-y补-y补,上式即得证。证明如下:因为 x补+y补=x+y补(mod2)所以 y补=x+y补-x补(1)又 x-y补 x+(-)y补=x补+-y补所以-y补 x-y补-x补(2),(1),(2)两式相加,得:y补+-y补=x+y补-x补+x-y补-x补=x+y+x-y补-x补-x补=x+x补-x补-x补故-y补=-y补从y补求-y补的法则是:对y补包括符号位“求反且最末位加1”,得到-y补 写成运算表达式为:-y补=y补+2-n符号表示对y补做包括符号位在内的求反操作,2-n表示最末尾加1。,例.已知x10.1110,x20.1101,求x1

32、补-x1补,x2补,-x2补,解:x1补1.0010-x1补 x1补+2-4=0.11010.0001 0.1110 x2补 0.1101-x2补 x2补+2-4 1.00100.0001 1.0011,例.已知x+0.1101,y0.0110,求x-y,解:x补0.1101 y补 0.0001-y补1.1010 x补 0.1101-y补 0.1010 x-y补 1 0.0111 所以 x-y0.0111,2.2.3 溢出概念与检测方法,在定点小数机器中,数的表示范围为|x|1。在运算过程中如出现大于1的现象,称为溢出。在定点机中,正常情况下溢出是不允许的。例 x0.1011,y0.1100,

33、求xy。解:x补0.1011,y补0.1001 x补 0.1011 y补 0.1001 x+y补 1.0100两个正数相加的结果成为负数,显然是错误的.,之所以发生这样的错误,是因为运算结果产生了溢出。两个正数相加,结果大于机器所能表示的最大正数,称为上溢。两个负数相加,结果小于机器所能表示的最小负数,称为下溢。,为了判断溢出是否发生,可以采用两种检测方法。,第一种方法是采用双符号法,这称为“变形补码”或“模4补码”,可使模2补码所能表示的数的范围扩大一倍。数的变形补码定义为:x 2x 0 x补=(mod 4)4x 0 x-2或用同余式表示为:x补 4x,下式同样成立 x补+y补=x+y补(m

34、od4)为了得到两数变形补码之和等于两数和的变形补码,必须:(1)两个符号位都看作数码一样参加运算(2)两数进行以4为模的加法,最高位上产生 的进位要丢掉.,例 x0.01100,y0.1000,求xy 解:x补00.1100,y补00.1000 x补 00.1100 y补 00.1000 01.0100两个符号位出现“01”,表示已经溢出,结果大于1,例 x0.1100,y0.1000,求xy。解:x补11.0100,y补11.1000 x补 11.0100 y补 11.1000 10.1100两个符号位出现“10”,表示已经溢出,结果大于1,得出如下结论:(1)以模4补码运算,运算结果的二

35、符号位相异时,表示溢出;相同时,表示未溢出。(2)模4补码相加的结果,不论溢出与否,最高符号始 终指示正确的符号。,第二种溢出检测方法是采用单符号法。最高有效位产生进位而符号位无进位,产生上溢;最高有效位无进位而符号位有进位,产生下溢,补充:定点加、减法运算,补码加、减法运算,ADD SUB(A)(B)(A)(B)(A)(B)(A)(B)(A)(B)(A)(B)(A)(B)(A)(B),同号相加:操作数的绝对值相加,结果取被加(减)数的符号.异号相加:操作数的绝对值相减,符号位单独处理.,操作数与结果用原码表示尾数参加运算,符号单独处理,尾数直接相加,结果与操作数同号,正数取原码,负数取反码,

36、尾数相加,将结果变反,结果为负,在结果低位加1结果为正,2、算法流程,1、基本关系式 x补 y补(x+y)补(1)x补(-y)补(x-y)补(2)(1)式表示:操作码为ADD时,两数直接相加。例:设某机字长连符号位在内共 5 位 求 X补+Y补,一、补码加、减法运算基础,x=0.1010,y=0.0101x补=0.1010,y补=0.0101 0.1010+)0.0101 0.1111(x+y)补=0.1111(x+y)补=x补+y补,x=0.1010,y=0.0101 x补=1.0110,y补=1.1011 1.0110+)1.1011 1.0001(x+y)补=1.0001(x+y)补=x

37、补+y补,1,x=0.1011,y=-0.1010 x补=0.1011,y补=1.0110 0.1011+)1.0110 0.0001(x+y)补=0.0001(x+y)补=x补+y补,1,x=-0.1010,y=0.0101x补=1.0110,y补=0.0101 1.0110+)0.0101 1.1011(x+y)补=1.1011(x+y)补=x补+y补,(x-y)补=x补+(-y)补(2),式(2)表示:操作码为SUB时,将减数补码(y补)连同减号一起变补后,与被减数(x补)相加.,x=4=+0100,y=-5=-0101 x补=00100,y补=11011,(-y)补=00101 001

38、00+)00101 01001(x-y)补=1001补=01001(x-y)补=x补+(-y)补,例:设某机字长连同符号在内共5位,求 x补-y补,x=-4=-0100,y=5=+0101 x补=11100,y补=00101,(-y)补=11011 11100+)11011 10111(x-y)补=(-1001)补=10111(x-y)补=x补+(-y)补,1,操作数用补码表示,符号位参与运算,x补+y补,x补+(-y)补,结果为补码表示,符号位指示结果正负,2、算法流程,1、什么是溢出,某机器字长连符号共n+1位,用补码表示,其定点整数补码的表示范围为-2n-2n-1,如果运算结果超过这个范

39、围就为溢出。,2、如何判断溢出,设:操作数A有4位尾数,1位符号位SA,补码表示。操作数B有4位尾数,1位符号位SB,补码表示。运算结果的符号位为Sf 尾数最高位进位为C,符号位进位Cf,二、溢出判断,、硬件判断逻辑一(用Cf与C的关系判断)溢出=Cf C,.硬件判断逻辑二(操作数的符号与结果符号的关系)溢出=SASBSf+SASBSf,3、变形补码判溢出,设:第一符号位和第二符号位分别是Sf 1、Sf 2,00 结果为正,无溢出 溢出=Sf 1 Sf 2 01 结果为正溢 10 结果负溢 11 结果为负,无溢出,2.2.4 基本的二进制加法/减法器,一位全加器真值表,补码加、减法的逻辑实现,

40、P=0:加法P=1:减法V:溢出指示,行波进位的补码加法,M0加M1减,由真值表可以得到,SiAi+Bi+CiCi1 Ai Bi+Bi Ci+Ci Ai,全加器,2.2.5 十进制加法器,一位BCD加法器单元,一位BCD加法器单元,一位BCD加法器单元,Cn-1,Cn,C2,C1,C0,Sn-1,S1,S0,4,4,4,4,4,4,Xn-1,Yn-1,X0,X1,Y1,Y0,N位数字的行波进位BCD加法器,0.11010.1011,1101,1101,0000,+)1101,0.10001111,上符号位:1.10001111,2.3 定点乘法运算,2)手算算法的演变:每次用一位乘数所对应的部

41、分积与原部分积相加,并右移,寄存器R0:部分积累加和,乘积的高位,寄存器R1:被乘数,寄存器R2:乘数,乘积的低位 Pf=Xf Yf,P=XY,改进:1.一次性求和变为累加。2.每次左移一位改为右移一位。3.乘积是操作数字长的两倍。,原码一位乘法的运算方法:1.乘法开始前令部分积的初值P0=0 2.对乘数末位yn进行判断:yn=1+X yn=0+0 3.位积加上部分积=新的部分积 4.相加的结果右移一位就可得新的部分 积,直到最后积为2n停止。,2.算法流程,yn=1?,i=n?,00.0000 yf.1011 P0=0+00.1101 y4=1,+x 00.1101 00.0110 1 yf

42、.101 右移一位,得P1+00.1101 y3=1,+x 01.0011 00.1001 11 yf.10 右移一位,得P2+00.0000 y2=0,+0 00.1001 00.0100 111 yf.1 右移一位,得P3+00.1101 y1=1,+x 01.0001 00.1000 1111 yf 右移一位得P4=|x|y|,例1 x=0.1101,y=-0.1011,求x原 y原,部分积 乘数 判断位 说明,可见:(1)n位数参加运算要做n次相加和移位操 作,在计算机中可利用计数器予以控制。(2)用相加和移位操作实现了乘法运算。,由于 所以,二、原码一位乘法的逻辑实现,原码一位乘法逻

43、辑结构图,控制信号,启动:使计数器及R0清0,F置1。,T:乘法时序脉冲。,运算过程:T1到来,R0,R1中的数据右移一位形成P1,计数器加1,如此重复直到i=n。F置零。乘积的高n位在R0中,低n位在R1中。,2.3.2 补码一位乘法,算法分析,结论:当乘数Y0时,不管被乘数X的符号如何,都可以直接将X补乘以Y,得到的就是(XY)的补码的表达式。,2).被乘数X的符号任意,乘数Y为负,都以补码表示,结论:当乘数Y0时,用Y补的尾数(0.y1 y2 yn)与X补直接相乘,结果加上(-X)补进行修正,结果即为(XY)补,一、补码一位乘法算法归纳(设部分积累加和为A补),00.0000 1.001

44、 10 yn+1=0+00.1011 ynyn+1=10,加-x补 00.1011 00.0101 1 100 11 右移一位,得P1+00.0000 ynyn+1=11,加0 00.0101 00.0010 11 10 01 右移一位,得P2+11.0101 ynyn+1=01,加x补 11.0111 11.1011 111 1 00 右移一位,得P3+00.0000 ynyn+1=00,加0 11.1011 11.1101 1111 10 右移一位,得P4+00.1011 yn+1=10,加-x补 00.1000 1111 最后一步不移位,部分积 乘数ynyn+1 说明,故得 XY补=0.

45、10001111,例2 x补=1.0101,y补=1.0011,求x y 解-x补=0.1011,算法:,00.0000 1.001 10 yn+1=0+00.1011 ynyn+1=10,加-x补 00.1011 00.0101 1 100 11 右移一位,得P1+00.0000 ynyn+1=11,加0 00.0101 00.0010 11 10 01 右移一位,得P2+11.0101 ynyn+1=01,加x补 11.0111 11.1011 111 1 00 右移一位,得P3+00.0000 ynyn+1=00,加0 11.1011 11.1101 1111 10 右移一位,得P4+0

46、0.1011 ynyn+1=10,加-x补 00.1000 1111 最后一步不移位,部分积 乘数ynyn+1 说明,yn yn+1=?,i=n+1?,pi补不变,结束,补码一位乘法算法流程图,二、补码一位乘法的逻辑实现,2.3.3 原码两位乘法,1、原码两位乘原理,2.算法,判断值yiyi+1CJ操作,3.实例与运算规则,例:X原=1.111111,Y原=0.111001,求(xy)原,设初值:A=000.000000 B=|X|=000.111111 C=|Y|=00.111001-B=111.000001 2B=001.111110,CJ=0,步数 条件 操作 AC CnCn+1CJ,C

47、nCn+1CJ 000.000000 00.1110 0 1 0,000.111111,010.001101,111.100100,000.111000,运算规则:,1)、操作数用绝对值参加运算,符号位单独处理,2)、被乘数B和部分积A取三位符号位,3)、乘数C取两符号位,参加移位,处理最后欠帐,4)、乘数凑足偶数位,5)、CJ初值为0,不移位,6)、作 步累加移位操作,若需增加一步,则该步不移位,只做还帐处理,000.000000 00.1110 010 C的初值为0+000.111111 加x,C不变 000.111111 000.001111 11 0011 100 右移两位+001.1

48、11110 加2x,C不变 010.001101 000.100011 0111 00 110 右移两位+111.000001 减x,1 C 111.100100 111.111001 000111 001 右移两位+000.111111 加x 完成校正,不移位 000.111000 000111,例3 x原=1.111111,y原=0.111001,求x y原,部分积 乘数 C 说明,加上符号,得x y原,2.3.4 补码两位乘法,1.算法,yn-1 yn yn+1 x补的系数 操作(yn+1+yn-2yn-1),0 0 0 0 部分积右移两位,0 0 1 1 部分积加x补右移两位,0 1

49、0 1 部分积加x补右移两位,0 1 1 2 部分积加2x补右移两位,1 0 0-2 部分积加2-x补右移两位,1 0 1-1 部分积加-x补右移两位,1 1 0-1 部分积加-x补右移两位,1 1 1 0 部分积右移两位,例4 x补=0.0110011,y补=1.1001110,求x.y 解-x补=1.1001101,部分积 乘数 yn+1 说明,000.0000000 1.10011 100 附加位yn+1初置为0+111.0011010 yn-1ynyn+1=100,加2-x补 111.0011010 111.1100110 10 110 011 右移两位 111.1111001 101

50、0 11 001 yn-1ynyn+1=111,右移两位+000.0110011 yn-1ynyn+1=001,加x补 000.0101100 000.0001011 001010 110 右移两位+111.1001101 yn-1ynyn+1=110,加-x补 111.101100 111.1101100 0001010 最后一步右移一位 得到 x y补,2.4 定点除法运算,2.4.1 原码一位除法,设 被除数x原=xf.x1x2 xn,除数y原=yf.y1y2yn,则 商的符号 Qf=xf+yf 商的数值|Q|=|x|/|y|,(1)将心算比较余数与除数的大小,改为减法比较,将减 y 改

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号