《第2章 运算方法和运算器1(精品).ppt》由会员分享,可在线阅读,更多相关《第2章 运算方法和运算器1(精品).ppt(90页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第第2 2章章 运算方法与运算器运算方法与运算器第第2 2章章 运算方法与运算器运算方法与运算器 2.1 2.1 数据与文字的表示方法数据与文字的表示方法 2.2 2.2 定点加法、减法运算定点加法、减法运算 2.3 2.3 定点乘法运算定点乘法运算 2.4 2.4 定点除法运算定点除法运算 2.5 2.5 定点运算器的组成定点运算器的组成 2.6 2.6 浮点运算方法和浮点运算器浮点运算方法和浮点运算器2.1 数据与文字的表示方法n2.1.1 2.1.1 数据格式数据格式n2.1.2 2.1.2 数的机器码表示数的机器码表示n2.1.3 2.1.3 字符与字符串的表示方法字符与字符串的表示方
2、法n2.1.4 2.1.4 汉字的表示方法汉字的表示方法n2.1.5 2.1.5 校验码校验码2.1.1 数据格式n在选择计算机数据的表示方式时在选择计算机数据的表示方式时,需要考虑如下因需要考虑如下因素素:-要表示的数的类型要表示的数的类型(小数、整数)小数、整数)-数值范围:一种数据类型所能表示的最大值数值范围:一种数据类型所能表示的最大值和最小值。和最小值。-数值精确度:实数所能表示的有效数字位数。数值精确度:实数所能表示的有效数字位数。数值范围和数值精度均与使用多少位二进数值范围和数值精度均与使用多少位二进制位数以及编码方式有关。制位数以及编码方式有关。n计算机中常用的数据表示格式有两
3、种,一是计算机中常用的数据表示格式有两种,一是定点格式定点格式,二是,二是浮点格式浮点格式。n定点格式定点格式容许的数值范围有限,但要求的处理容许的数值范围有限,但要求的处理硬件比较简单。硬件比较简单。n浮点格式浮点格式容许的数值范围很大,但要求的处理容许的数值范围很大,但要求的处理硬件比较复杂。硬件比较复杂。2.1.1 数据格式2.1.1 数据格式(续续1 1)1.定点数的表示方法定点数的表示方法 n定点表示定点表示:约定机器中所有数据的小数点位置是固约定机器中所有数据的小数点位置是固定不变的。通常将数据表示成定不变的。通常将数据表示成纯小数纯小数或或纯整数纯整数。n定点数定点数xx0 x1
4、x2xn在定点机中表示如下在定点机中表示如下(x0表示表示符号位,符号位,0代表正号,代表正号,1代表负号代表负号)。由于约定在固定的位置,小数点就不再使用记号“.”来表示。2.1.1 数据格式(续续2 2)n纯小数纯小数的表示范围为的表示范围为(x0 x1x2xn各位均为各位均为0时最时最小;各位均为小;各位均为1时最大时最大)0|12-n(2.1)n纯整数纯整数的表示范围的表示范围0|2n1(2.2)目目前计算机中多采用定点纯整数表示,因此将定点前计算机中多采用定点纯整数表示,因此将定点数表示的运算简称为数表示的运算简称为整数运算整数运算。二进制表示形式?二进制表示形式?如何用定点数来表示
5、非常大如何用定点数来表示非常大(e.g.210+33)的数和非常小的数和非常小(e.g.910-28)的数?的数?210+33=0.21034910-28=0.910-27引入比例因子引入比例因子1034和和10-272.1.1 数据格式(续续3 3)2.浮点数的表示方法浮点数的表示方法 n浮点表示法:把一个数的有效数字和数的范围在计浮点表示法:把一个数的有效数字和数的范围在计算机的一个存储单元中分别予以表示。数的小数点算机的一个存储单元中分别予以表示。数的小数点位置随比例因子的不同而在一定范围内自由浮动。位置随比例因子的不同而在一定范围内自由浮动。n任意一个十进制数任意一个十进制数可以写成可
6、以写成10E.(2.3)n在计算机中一个任意进制数在计算机中一个任意进制数可以写成可以写成e.m(2.4)m:尾数尾数,是一个纯小数。,是一个纯小数。e:比例因子的比例因子的指数指数,称为浮点的指数,是一个整数。,称为浮点的指数,是一个整数。R:比例因子的比例因子的基数基数,对于二进计数值的机器是一个常数,对于二进计数值的机器是一个常数,一般规定一般规定为为2,8或或16。2.1.1 数据格式(续续4 4)n一个机器浮点数由一个机器浮点数由阶码阶码和和尾数尾数及其符号位组成及其符号位组成:用定点小数表示,用定点小数表示,给出有效数字的位数给出有效数字的位数决定了浮点数的表示决定了浮点数的表示精
7、度精度用整数形式表示,用整数形式表示,指明小数点在数据指明小数点在数据中的位置决定浮点中的位置决定浮点数的表示范围数的表示范围2.1.1 数据格式(续续5 5)为便于软件移植,按照为便于软件移植,按照IEEE754的标准,的标准,32位浮点数位浮点数和和64位浮点数的标准格式为位浮点数的标准格式为:阶码,:阶码,8位。阶位。阶符采用隐含方式,符采用隐含方式,即采用即采用移码方式移码方式来来表示正负指数表示正负指数:浮点数的符号:浮点数的符号位,位,1位,位,0表示正表示正数,数,1表示负数表示负数:尾数,:尾数,23位位用小数表示,小数用小数表示,小数点放在尾数域最前点放在尾数域最前面面:阶码
8、,:阶码,11位。位。阶符采用隐含方式,阶符采用隐含方式,即采用即采用移码方式移码方式来来表示正负指数表示正负指数:浮点数的符号:浮点数的符号位,位,1位,位,0表示正表示正数,数,1表示负数表示负数:尾数,:尾数,52位位用小数表示,小数用小数表示,小数点放在尾数域最前点放在尾数域最前面面2.1.1 数据格式(续续6 6)n移码阶码值大者其指数值也大。移码阶码值大者其指数值也大。指数真值指数真值e与阶码与阶码之间的关系:之间的关系:e127,或者或者e1023n一个规格化的一个规格化的32位浮点数位浮点数最高有效位应为最高有效位应为1,可以,可以隐藏,并且默认为隐藏在小数点的左边。隐藏,并且
9、默认为隐藏在小数点的左边。的真值的真值表示为:表示为:(-1)s(1.)2E-127e127(2.5)n一个规格化的一个规格化的64位浮点数位浮点数的真值为的真值为(-1)s(1.)2E-1023e1023(2.6)2.1.1 数据格式(续续7 7)n浮点数的规格化表示。浮点数的规格化表示。为提高数据的表示精度,当为提高数据的表示精度,当尾数的值不为尾数的值不为0时,其绝对值应时,其绝对值应0.5。浮点数的尾数域的最高有效位应为浮点数的尾数域的最高有效位应为1,规格化的,规格化的方法:修改阶码,同时左右移小数点的办法。方法:修改阶码,同时左右移小数点的办法。如何进行浮点数的规格化?如何进行浮点
10、数的规格化?机器零如何表示?机器零如何表示?n机器零。机器零。当浮点数的尾数为当浮点数的尾数为0,不论其阶码为何值,不论其阶码为何值,或者当阶码的值遇到比它能表示的最小值还小时,或者当阶码的值遇到比它能表示的最小值还小时,不管其尾数为何值,计算机都把该浮点数看成零值。不管其尾数为何值,计算机都把该浮点数看成零值。E=0,M=0n注意:注意:E值的范围是值的范围是0(00000000)255(11111111),但是),但是0和和255用作用作特殊用途。正常的特殊用途。正常的E值为值为1(00000001)254(11111110)之间的数。)之间的数。E对应的对应的真值真值e的范围为的范围为-
11、126+127。nE=0且且M=0,则,则X=(-1)S0,则,则表示表示x为为0nE=0且且M0,则,则X=DNRM(denormalizednumbers,非规格化数)非规格化数)nE=255且且M=0,则,则X=(-1)S,即表示即表示nE=255且且M0,则,则X=NaN(notanumber,不不是一个数),用来通知异常情况。是一个数),用来通知异常情况。n浮点数所表示的范围远比定点数大。浮点数所表示的范围远比定点数大。e.g.8bits,只考虑正值只考虑正值定点小数:定点小数:0127/128浮点数:阶符阶码浮点数:阶符阶码3位,尾符尾码位,尾符尾码5位,位,1/1287.5n一台
12、计算机中采用定点表示还是浮点表示,要根一台计算机中采用定点表示还是浮点表示,要根据计算机的使用条件来确定。一般在高档微机以上的据计算机的使用条件来确定。一般在高档微机以上的计算机中同时采用定点、浮点表示,由使用者进行选计算机中同时采用定点、浮点表示,由使用者进行选择,而单片机中多采用定点表示。择,而单片机中多采用定点表示。2.1.1 数据格式(续续8 8)于是有于是有(1)s1.M2e指数指数e阶码阶码127100000100111111100000011=(3)10包括隐藏位包括隐藏位1的尾数的尾数1.M1.011011(1.011011)231011.011(11.375)10例例1:若浮
13、点数若浮点数的二进制存储格式为的二进制存储格式为(41360000)16,求其求其32位浮点数的十进制值。位浮点数的十进制值。2.1.1 数据格式(续续9 9)将十六进制数展开后,可得二进制数格式为:将十六进制数展开后,可得二进制数格式为:01000001001101100000000000000000S阶码(8位)尾数(23位)例例2:将十进制数数将十进制数数20.59375转换成转换成32位浮点数的二进制格式来存储。位浮点数的二进制格式来存储。首先分别将整数和分数部分转换成二进制数:20.5937510100.10011然后移动小数点,使其在第1、2位之间10100.10011 1.010
14、010011 24e4S0E4+127=131M=010010011最后得到32位浮点数的二进制存储格式为:01000001101001001100000000000000(41A4C000)16练习:1.若浮点数x的二进制存储格式为(41A18000)16,求其32位浮点数的十进制值?2.将十进制数数17.296875转换成位浮点数的二进制格式来存储?2.1.1 数据格式(续续1010)3.十进制数串的表示方法十进制数串的表示方法 n目前,大多数通用性较强的计算机都能直接处理目前,大多数通用性较强的计算机都能直接处理十进制形式表示的数据。十进制数串在计算机内十进制形式表示的数据。十进制数串在
15、计算机内主要有两种表示形式:主要有两种表示形式:字符串形式字符串形式 n字符串形式字符串形式:一个字节存放一个十进制的数位:一个字节存放一个十进制的数位或符号位。为了指明这样一个数,需要给出该或符号位。为了指明这样一个数,需要给出该数在主存中的起始地址和位数数在主存中的起始地址和位数(串的长度串的长度)。2.1.1 数据格式(续续1111)压缩的十进制数串形式压缩的十进制数串形式n压缩的十进制数串形式压缩的十进制数串形式:一个字节存放两:一个字节存放两个十进制的数位。它比前一种形式节省存个十进制的数位。它比前一种形式节省存储空间,又便于直接完成十进制数的算术储空间,又便于直接完成十进制数的算术
16、运算,是广泛采用的较为理想的方法。运算,是广泛采用的较为理想的方法。n用压缩的十进制数串表示一个数,要占用主存连续的多个字节。n每个数位占用半个字节(4bits),其值可用二十编码(BCD码)或数位的ASCII码的低4位表示。符号位也占半个字节并放在最低数字位之后,其值选用四位编码中的六种冗余状态中的有关值,如用12(C)表示正号用13(D)表示负号。在这种表示中,规定数位加符号位之和必须为偶数,当和不为偶数时,应在最高数字位之前补一个0。此时,表示一个数要占用该偶数值的一半那么多个字节。2.1.1 数据格式(续续1212)n例如例如123和和12分别被表示成:分别被表示成:n压缩的十进制数串
17、,需要给出它在主存中的首地址压缩的十进制数串,需要给出它在主存中的首地址和数字位个数和数字位个数(不含符号位不含符号位),又称位长,位长为,又称位长,位长为0的的数其值为数其值为0。十进制数串表示法的优点是位长可变,。十进制数串表示法的优点是位长可变,许多机器中规定该长度从许多机器中规定该长度从0到到31,有的甚至更长。,有的甚至更长。123 C012D(123)(12)二二-十进制数据表示十进制数据表示用四位二进制代码的不同组合来表示一个十用四位二进制代码的不同组合来表示一个十进制数码的编码方法,称为二进制数码的编码方法,称为二-十进制编码,十进制编码,也也称称BCD码码(BinaryCod
18、edDecimal)。表示的状态的个数与二进制位数的关系:表示的状态的个数与二进制位数的关系:2n=Nlog22n=log2N所以所以 n=log2NN代表不同的状态个数,代表不同的状态个数,n n表示二进制代码的位数表示二进制代码的位数.十进制 符号 有权码 无权码 8421242184-2-1余3码 格雷码1格雷码20123456789000000010010001101000101011001111000100100000001001000110100101111001101111011110000011101100101010010111010100110001111001101000
19、1010110011110001001101010111100000000010011001001101110101010001100010000000100011000101010101100110001100110002.1.1 数据格式(续续1313)自定义数据表示自定义数据表示 n在传统的计算机体系结构中,用在传统的计算机体系结构中,用指令本身来说指令本身来说明操作数据的类型。明操作数据的类型。如定点加法表示操作数是如定点加法表示操作数是纯小数或纯整数;浮点加法表示操作数是浮点纯小数或纯整数;浮点加法表示操作数是浮点数;十进制加法表示操作数是数;十进制加法表示操作数是BCD数。由于操数
20、。由于操作数据类型不同,要设三种不同的指令作数据类型不同,要设三种不同的指令(操作操作码码)来加以区分。来加以区分。2.1.1 数据格式(续续1414)n自定义数据表示用数据本身来说明数据类型。自定义数据表示用数据本身来说明数据类型。表示形式有两种,即表示形式有两种,即标志符数据表示标志符数据表示和和描述描述符数据表示符数据表示。标志符数据表示n标志符数据表示标志符数据表示要求对每一个数据都附加标志符,要求对每一个数据都附加标志符,其格式如下:其格式如下:n其中标志符指明后面的数据所具有的类型,如整数、其中标志符指明后面的数据所具有的类型,如整数、浮点数、浮点数、BCD数、字符串等。数、字符串
21、等。n标志符数据表示的标志符数据表示的优点优点是能简化指令系统,便于程是能简化指令系统,便于程序调试和查错,缺点是数据区域占用的存储空间增序调试和查错,缺点是数据区域占用的存储空间增加,并使指令执行的速度减慢。加,并使指令执行的速度减慢。标识符标识符 数据数据 描述符数据表示 n描述符数据表示描述符数据表示主要用来描述多维结构的数据类型,主要用来描述多维结构的数据类型,如向量、矩阵、记录等。其格式为:如向量、矩阵、记录等。其格式为:描述符标志位描述符标志位特征标记特征标记数据块长度数据块长度数据块起始地址数据块起始地址 指明这是一个指明这是一个数据描述符数据描述符指明数据的指明数据的各种特征各
22、种特征指明数组中指明数组中元素个数元素个数指明数据块指明数据块的首地址的首地址n标志符与描述符表示的区别是:标志符与描述符表示的区别是:标志符与每个数据相连,二者合起来存放在标志符与每个数据相连,二者合起来存放在一个存储单元,而描述符要和数据分开存放。一个存储单元,而描述符要和数据分开存放。描述符表示中,先访问描述符,后访问数据,描述符表示中,先访问描述符,后访问数据,至少增加一次访存。至少增加一次访存。描述符是程序的一部分,而不是数据的一部描述符是程序的一部分,而不是数据的一部分。分。2.1.2 数的机器码表示n在计算机中对数据进行运算操作时,符号在计算机中对数据进行运算操作时,符号位如何表
23、示呢?是否也同数值位一道参加位如何表示呢?是否也同数值位一道参加运算操作呢?运算操作呢?n把符号位和数字位一起编码来表示相应的把符号位和数字位一起编码来表示相应的数的各种表示方法,如原码、补码、反码、数的各种表示方法,如原码、补码、反码、移码等。移码等。n真值真值、机器数机器数或或机器码机器码。2.1.2 数的机器码表示(续续1)1)1.原码表示法原码表示法 n若若定点小数定点小数的原码形式为的原码形式为x0 x1x2xn,则原码表示的定义则原码表示的定义是:是:10X原原(2.7)11|01式中式中X原原是机器数,是机器数,是真值是真值 2.1.2 数的机器码表示(续续2)2)例如,例如,+
24、0.1001,则,则X原原0.1001-0.1001,则,则X原原1.1001对于对于0,原码机器中往往有,原码机器中往往有“+0”、“-0”之分,之分,故有两种形式:故有两种形式:+0原原=0.000.0-0原原=1.000.02.1.2 数的机器码表示(续续3)3)n若若定点整数定点整数的原码形式为的原码形式为x0 x1x2xn,则原码则原码表示的定义是表示的定义是2n0 X原原(2.8)2n2n|02nn采用原码表示法简单易懂采用原码表示法简单易懂n但它的最大缺点是加法运算复杂。但它的最大缺点是加法运算复杂。n这是因为,当两数相加时,同号相加;如果是这是因为,当两数相加时,同号相加;如果
25、是异号相减。而在进行减法时还要比较绝对值的大异号相减。而在进行减法时还要比较绝对值的大小,然后大数减去小数,最后还要给结果选择符小,然后大数减去小数,最后还要给结果选择符号。号。n为了解决这些矛盾,人们找到了为了解决这些矛盾,人们找到了补码表示法补码表示法。2.1.2 数的机器码表示(续续4)4)2.补码表示法补码表示法 n先以钟表对时为例说明补码的概念。假设现在的标先以钟表对时为例说明补码的概念。假设现在的标准时间为准时间为4点正;点正;而有一只表已经而有一只表已经7点了,为了校准点了,为了校准时间,可以将时针退时间,可以将时针退7-4=3格;或者将时针向前格;或者将时针向前拨拨12-3=9
26、格。这两种方法都能对准到格。这两种方法都能对准到4点,由此可点,由此可以看出,减以看出,减3和加和加9是等价的,就是说是等价的,就是说9是是(-3)对对12的补码,可以用数学公式表示的补码,可以用数学公式表示-3+9(mod12)mod12的意思就是的意思就是12模数,这个模数,这个“模模”表示表示被丢掉的数值。上式在数学上称为同余式。被丢掉的数值。上式在数学上称为同余式。2.1.2 数的机器码表示(续续5)5)n上例中其所以上例中其所以7-3和和7+9(mod12)等价,等价,原因原因就是就是表指针超过表指针超过12时,将时,将12自动丢掉,最后得到自动丢掉,最后得到16-12=4。n从这里
27、可以得到一个从这里可以得到一个启示:启示:启示启示负数用补码表示时,可以把减法转化为加法。负数用补码表示时,可以把减法转化为加法。这样,在计算机中实现起来就比较方便。这样,在计算机中实现起来就比较方便。2.1.2 数的机器码表示(续续6)6)n若若定点小数定点小数补码形式为补码形式为x0.x1x2xn,则补码表示则补码表示的定义是的定义是10X补补(mod2)(2.9)22|01n例如,例如,+0.1011,则,则X补补0.1011n-0.1011,则,则X补补10+n10.0000-0.10111.0101n对于对于0,+0补补-0补补0.0000(mod2)注意:注意:0的补码表的补码表示
28、只有一种形式示只有一种形式2.1.2 数的机器码表示(续续7)7)n对对定点整数定点整数,补码表示的定义:,补码表示的定义:(2.10)2n0 X补补2n+1+2n+1-|02n(mod2n+1)n采用补码表示法进行减法运算就比原码方便得多了。采用补码表示法进行减法运算就比原码方便得多了。n负数的求补问题。负数的求补问题。补充:补码的性质补充:补码的性质在补码表示法中,在补码表示法中,0的补码是唯一的,即的补码是唯一的,即整数整数0+0补补=-0补补=000(mod2n+1)小数小数0+0补补=-0补补=0.000(mod2)X补补=XSXn-1Xn-2X1X0XS=0时,时,X为正数;为正数
29、;XS=1时,时,X为负数。为负数。补码的表示范围是:补码的表示范围是:正整数正整数2nX0负整数负整数0X-2n负数的范围比正数范围大,即多表示一个数负数的范围比正数范围大,即多表示一个数-2n。-2n补补=2n+1-2n=2n=1000最高位是最高位是1代表两个含义:代表数的符号代表两个含义:代表数的符号Xs=1,表表示示X是负数;是数值位,表示数是负数;是数值位,表示数X=2n整数整数X的补码可以写成这样的形式:的补码可以写成这样的形式:X补补=2n+1XS+X,XS为符号位为符号位整数的真值和它的补码在数轴上的表示:整数的真值和它的补码在数轴上的表示:X为正时,为正时,X和和X补补在数
30、轴上的位置相同;在数轴上的位置相同;X为负时,为负时,X补补比比X在数轴上右移了在数轴上右移了2n+1个数据长度。个数据长度。补码与真值的关系补码与真值的关系设设X补补=XSXn-1Xn-2X1X0,由性质4可知,X补=2n+1Xs+X则则X=X补补-2n+1XS=XsXn-1Xn-2X1X0-2n+1Xs=2nXs+Xn-1Xn-2X1X0-2n+1Xs=-2nXs+Xn-1Xn-2X1X0反过来,若反过来,若X=-2nXS+Xn-1Xn-2X1X0,则则X补补=2n+1XS+X=XSXn-1Xn-2X1X0补码的一项算术运算特性补码的一项算术运算特性X/2补补是把是把X补补中各位连同符号位
31、一起中各位连同符号位一起都右移一位,符号位保持不变。都右移一位,符号位保持不变。由性质由性质6 6可可从从XX补补求得求得X/2X/2补补,推导如下:,推导如下:由性质由性质6得:得:X=-2nXS+Xn-1Xn-2X1X0X/2=-2X/2=-2n nX Xs s2 2-1-1+(X+(Xn-1n-1X Xn-2n-2X X1 1X X0 0)/2)/2 =-2 =-2n nX Xs s+2+2n nX Xs s2 2-1-1+(X+(Xn-1n-1X Xn-2n-2X X1 1X X0 0)/2)/2 =-2 =-2n nX Xs s+(X+(Xs s X Xn-1n-1X Xn-2n-2
32、X X1 1X X0 0)/2)/2根据补码定义:根据补码定义:X/2X/2补补 =2=2n+1n+1X Xs s+X/2X/2=2=2n+1n+1X Xs s-2-2n nX Xs s+(X+(Xs s X Xn-1n-1X Xn-2n-2X X1 1X X0 0)/2)/2=2=2n nX Xs s+(X+(Xs s X Xn-1n-1X Xn-2n-2X X1 1X X0 0)/2)/2=X Xs sX Xs s X Xn-1n-1X Xn-2n-2X X1 1(X(X0 0)补充:补充:负数补码的求法负数补码的求法当当0X-2n时(为负整数),符号位为时(为负整数),符号位为1,数值位
33、是其真值,数值位是其真值X的数值位取反加的数值位取反加1。当当X为负小数时,则为负小数时,则X的补码是:符号位为的补码是:符号位为1,数值位是其真,数值位是其真值值X的数值位取反末位加的数值位取反末位加1。由由X的原码的原码X原求得补码原求得补码X补补:X补补等于等于X原原除符号位外,其它位求反末位加除符号位外,其它位求反末位加1。由由X的补码的补码X补补求得原码求得原码X原原:X原原等于等于X补补除符号位外,其它位求反末位加除符号位外,其它位求反末位加1。n证明如下:设整数证明如下:设整数X=Xn-1Xn-2X1X0n当当0X2n,为正数时,为正数时,X补补的符号位是的符号位是0,数值位,数
34、值位是是X各数位上的值,这与各数位上的值,这与X的原码是相等的的原码是相等的X补补=X原原=0Xn-1Xn-2X1X0n当当0X-2n,为负数时,为负数时,X补补的符号位是的符号位是1,X原原=1Xn-1Xn-2X1X0=2n+Xn-1Xn-2X1X0由原码定义可知:由原码定义可知:X原原=2n-X,X=2n-X原原=2n-(2n+Xn-1Xn-2X1X0)=-Xn-1Xn-2X1X0,那么那么X补补=2n+1+X=2n+1-Xn-1Xn-2X1X0=111(n+1个个1)+1-Xn-1Xn-2X1X0=1Xn-1Xn-2X1X0+1补充:怎样由补充:怎样由X补补求求-X补补?设设X补补=XS
35、Xn-1Xn-2X1X0,求得求得-X补补=XsXn-1Xn-2X1X0+1证明:证明:X补补=2n+1Xs+X,X=X补补-2n+1Xs-X=-X补补+2n+1Xs=2n+1Xs-XsXn-1Xn-2X1X0=2nXs-Xn-1Xn-2X1X0Xs=0时时,-X=-Xn-1Xn-2X1X00根据补码定义有:根据补码定义有:-X补补=2n1-Xn-1Xn-2X1X0=0Xn-1Xn-2X1X0+1=XsXn-1Xn-2X1X0+1还可以得到:还可以得到:X补补+-X补补=XsXn-1Xn-2X1X0+XsXn-1Xn-2X1X0+1=2n+1=0(mod2n+1)机器负数机器负数:称:称-X补
36、补为为X补补的机器负数。的机器负数。“求补求补”:由由X补补求求-X补补的过程称为对的过程称为对X补补求补。求补。“求反求反”运算运算:把对把对X补补连同符号位在内的各位求反运算称为对连同符号位在内的各位求反运算称为对X补补“求反求反”运算,记为运算,记为X补补。对对X补补的的“求补求补”运算可看成对运算可看成对X补补“求反求反”运算再运算再加加1:-X补补=X补补+1,两者有以下关系两者有以下关系X补补+X补补=2n+1-1=111(n个个1)2.1.2 数的机器码表示(续续8)8)3.反码表示法反码表示法n所谓所谓反码反码,就是二进制的各位数码,就是二进制的各位数码0变为变为1,1变为变为
37、0。也就是说,若也就是说,若=1,则反码为,则反码为=0;若;若=0,则反码,则反码=1。数值上面的一横表示反码的意。数值上面的一横表示反码的意思。思。n在计算机中用触发器寄存数码,若触发器在计算机中用触发器寄存数码,若触发器Q端输端输出表示原码,则其出表示原码,则其Q端输出就是反码。由此可知,端输出就是反码。由此可知,反码是容易得到的。反码是容易得到的。2.1.2 数的机器码表示(续续9)9)n对对定点小数定点小数,反码表示的定义为,反码表示的定义为10 X反反(2.11)(22-n)01n其中其中n代表数的位数。代表数的位数。n在一些文献中,这种以在一些文献中,这种以2为基数的反码又称为为
38、基数的反码又称为1的的补码。补码。2.1.2 数的机器码表示(续续10)10)对于对于正数正数0.x1x2xn则则X反反0.x1x2xn对于对于负数负数0.x1x2xn则有则有X反反1.x1x2xn对于对于0,有有+0反反和和-0反反之分之分:+0反反0.00.0-0反反1.11.12.1.2 数的机器码表示(续续11)11)比较反码与补码的公式比较反码与补码的公式X反反(22-n)X补补2可得到可得到X补补X反反2-n(2.12)通过通过反码求补码的重要公式反码求补码的重要公式。n一个负数变补码,其方法是符号位置一个负数变补码,其方法是符号位置1,其余各位,其余各位0变变1,1变变0,然后在
39、最末位,然后在最末位(2-n)上加上加1。2.1.2 数的机器码表示(续续12)12)n对对定点整数定点整数,反码表示的定义为,反码表示的定义为2n0 X反反(2.13)(2n+11)02n2.1.2 数的机器码表示(续续13)13)4.移码表示法移码表示法 n移码移码通常用于表示浮点数的阶码。由于阶码是个通常用于表示浮点数的阶码。由于阶码是个n位位的整数,所以假定定点整数移码形式为的整数,所以假定定点整数移码形式为x x0 0 x x1 1x x2 2x xn n时,时,对定点整数,移码的定义是对定点整数,移码的定义是X移移2n2n2n(2.14)n若阶码数值部分为若阶码数值部分为5位,以位
40、,以表示真值,则表示真值,则X移移2525252.1.2 数的机器码表示(续续14)14)n例如,当正数例如,当正数10101时,时,X移移1,10101当负数当负数10101时,时,X移移2525101010,01011n移码中的逗号不是小数点,而是表示左边一位是符移码中的逗号不是小数点,而是表示左边一位是符号位。号位。n移码中符号位移码中符号位0表示的规律与原码、补码、反码相表示的规律与原码、补码、反码相反。反。真值真值补码补码移码移码-1281000000000000000-1271000000100000001.-1111111110111111100000000010000000+1
41、0000000110000001.+12701111111111111112.1.2 数的机器码表示(小结)(小结)n上面的数据四种机器表示法中:上面的数据四种机器表示法中:n移码表示法主要用于表示浮点数的阶码,可以直接移码表示法主要用于表示浮点数的阶码,可以直接比较大小。表示范围和补码相同,只有最高位相反。比较大小。表示范围和补码相同,只有最高位相反。n由于补码表示对加减法运算十分方便,因此目前机由于补码表示对加减法运算十分方便,因此目前机器中广泛采用补码表示法。器中广泛采用补码表示法。n在这类机器中,数用补码表示,补码存储,补码运算。在这类机器中,数用补码表示,补码存储,补码运算。n有些机
42、器,数用原码进行存储和传送,运算时改用有些机器,数用原码进行存储和传送,运算时改用补码。补码。n有些机器在做加减法时用补码运算,在做乘除法时有些机器在做加减法时用补码运算,在做乘除法时用原码运算。用原码运算。在数据的四种机器表示法中,在数据的四种机器表示法中,n正数的原码、反码、补码等于真值,只有负数才正数的原码、反码、补码等于真值,只有负数才分别有不同的表示方法。补码和移码的分别有不同的表示方法。补码和移码的0 0只有一只有一种表示方法种表示方法,因此其表示范围相对于原码和反码因此其表示范围相对于原码和反码多一种,定点小数可表示多一种,定点小数可表示-1-1(移码没有小数形式)(移码没有小数
43、形式),正数可表示,正数可表示-2-2n n。2.1.2 数的机器码表示(小结)(小结)真值真值原码原码反码反码补码补码移码移码-1281000000000000000-12711111111 100000001000000100000001.-110000001 1111111011111111 01111111-010000000 111111110000000010000000+000000000 000000000000000010000000+100000001 000000010000000110000001.+127011111110111111101111111 1111111
44、1无符号数的表示无符号数的表示n不需要设置符号位,可以使用全部字长不需要设置符号位,可以使用全部字长来表示数值大小来表示数值大小n例如:例如:字长字长N=8时,时,取值范围:取值范围:0255(28-1););字长字长N=16时,时,取值范围:取值范围:065535(216-1)同一代码的不同解释同一代码的不同解释n一个代码,赋予不同类型,其数值不一样。一个代码,赋予不同类型,其数值不一样。n例:计算机内一个二进制数例:计算机内一个二进制数10000001,若看作:若看作:无符号二进制数,其值为无符号二进制数,其值为129;8421BCD码,其值为码,其值为81有符号整数,原码:有符号整数,原
45、码:-1;反码:反码:-126;补码:;补码:-127有符号小数,原码:有符号小数,原码:-1/128;反码:反码:-126/128;补码:;补码:-127/1282.1.2 数的机器码表示(例题)(例题)例例3:以定点整数为例,用数轴形式说明原码、反以定点整数为例,用数轴形式说明原码、反码、补码表示范围和可能的数码组合情况。码、补码表示范围和可能的数码组合情况。解解:例例4:将十进制真值将十进制真值(-127,-1,0,+1,+127)列表表列表表示成二进制数及原码、反码、补码、移码值。示成二进制数及原码、反码、补码、移码值。解解:2.1.2 数的机器码表示(例题)(例题)例例5:设机器字长
46、设机器字长16位,定点表示,尾数位,定点表示,尾数15位,数位,数符符1位,问:位,问:定点原码整数表示时,最大正数是多少?最小定点原码整数表示时,最大正数是多少?最小负数是多少?负数是多少?定点原码小数表示时,最大正数是多少?最小定点原码小数表示时,最大正数是多少?最小负数是多少?负数是多少?解解:2.1.2 数的机器码表示(例题)(例题)例例6:假设由假设由S、E、M三个域组成的一个三个域组成的一个32位二进制位二进制字所表示的非零规格化浮点数字所表示的非零规格化浮点数,真值表示为:,真值表示为:(-1)s(1.M)2E-128问:它所表示的规格化的最大正数、最小正数、最问:它所表示的规格
47、化的最大正数、最小正数、最大负数、最小负数是多少?大负数、最小负数是多少?解解:例3之解n原码、反码、补码表示分别示于下图。与原码、反原码、反码、补码表示分别示于下图。与原码、反码不同,在补码表示中码不同,在补码表示中“0”只有一种形式,且用只有一种形式,且用补码表示负数时范围可到补码表示负数时范围可到-2n例4之解n二进制真值二进制真值及其诸码值列于下表,其中及其诸码值列于下表,其中0在在X原原X反反中有两种表示。由表中数据可知,补码值与移中有两种表示。由表中数据可知,补码值与移码值差别仅在于符号位不同。码值差别仅在于符号位不同。-0+0例5之解定点原码整数表示定点原码整数表示最大正数值最大
48、正数值(2151)10(32767)10最小负数值最小负数值-(2151)10(-32767)10定点原码小数表示定点原码小数表示最大正数值最大正数值(12-15)10(0.111.11)2最小负数值最小负数值(12-15)10(0.111.11)2 0 111 111 111 111 111 1 111 111 111 111 111 例6之解最大正数最大正数1(12-23)2127最小正数最小正数1.02-128最小负数最小负数-1(12-23)2127最大负数最大负数-1.02-128011 111 111 111 111 111 111 111 111 111 110 00 000 0
49、00 000 000 000 000 000 000 000 001 00 000 000 000 000 000 000 000 000 000 001 11 111111 111 111 111 111 111 111 111 112.1.3字符与字符串的表示方法字符与字符串的表示方法1.字符的表示方法字符的表示方法n现代计算机不仅处理数值领域的问题,而且现代计算机不仅处理数值领域的问题,而且处理大量非数值领域的问题。这样一来,必处理大量非数值领域的问题。这样一来,必然要引入文字、字母以及某些专用符号,以然要引入文字、字母以及某些专用符号,以便表示文字语言、逻辑语言等信息。便表示文字语言、
50、逻辑语言等信息。2.1.3字符与字符串的表示方法字符与字符串的表示方法(续续1 1)n目前国际上普遍采用的字符系统是七单位的目前国际上普遍采用的字符系统是七单位的ASC码码(美国国家信息交换标准字符码美国国家信息交换标准字符码)n它包括它包括10个十进制数码,个十进制数码,26个英文字母和一定数个英文字母和一定数量的专用符号,如量的专用符号,如$、%、等,共、等,共128个元个元素,因此二进制编码需素,因此二进制编码需7位,加一位偶校验位,共位,加一位偶校验位,共8位一个字节。位一个字节。n表表2.1列出了七单位的列出了七单位的ASC码字符编码表码字符编码表 表表2.1ASCII字符编码表字符