《数据表示和运算方法课件.ppt》由会员分享,可在线阅读,更多相关《数据表示和运算方法课件.ppt(96页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、 第第1 1讲讲 数制与数制转换数制与数制转换第第2 2讲讲 定点数表示与编码定点数表示与编码2 2 数据表示与运算方法数据表示与运算方法第第3 3讲讲 浮点数表示与编码浮点数表示与编码第第4 4讲讲 常用信息编码常用信息编码第第5 5讲讲 数据校验码数据校验码主要内容主要内容 2.1.1 2.1.1 数制数制 数制数制也称也称进位计数制进位计数制,是用一组固定,是用一组固定符号符号和一套统一和一套统一规则规则表示数值的方法。表示数值的方法。一个任意进制数可由以下通式表示:一个任意进制数可由以下通式表示:式中,式中,i i为为位序号位序号,D Di i为为i i位上的位上的符号符号,r r为为
2、基数基数,r ri i为第为第i i位上的该单位上的该单位所代表的位所代表的权值权值,D Di irri i为第为第i i位上所代表的位上所代表的实际值实际值,为对为对m+km+k各位实际各位实际值的值的累加求和累加求和。N=N=(D(Di ir ri i)=)=(D(Di ir ri i+D+Di ir ri i)=(D(Dm-1r rm-1 +D+D1r r1 +D+D0 0r r0 +D+D-1-1r r-1-1+D+D-kr r-k)m-1i=-km-1i=0-ki=-1数制与数制转换数制与数制转换数制与数制转换数制与数制转换 十进制十进制(D)=12=123 3+12+122 2+0
3、2+021 1+12+120 0+12+12-1-1+02+02-2-2+12+12-3-3 (123.456)(123.456)1010 =110=1102 2+210+2101 1+310+3100 0+410+410-1-1+510+510-2-2+610+610-3-3二进制二进制(B)(1101.101)(1101.101)2 2=13.625=13.625 符号符号D=09,基数基数r=10,权权=10n,逢十进一逢十进一 符号符号D=0,1,基数基数r=2,权权=2n,逢二进一逢二进一数制与数制转换数制与数制转换数制与数制转换数制与数制转换 2.1 2.1 计算机数据计算机数据
4、逻辑数据逻辑数据:无符号二进制数据,执行与、或、非、异或:无符号二进制数据,执行与、或、非、异或运算。运算。数值数据数值数据:带符号二进制数据,执行加、减、乘、除、:带符号二进制数据,执行加、减、乘、除、函数运算。函数运算。文本数据文本数据:由语言文字和符号字符组成的字信息。:由语言文字和符号字符组成的字信息。图形数据图形数据:静态画面信息,包括图形和图像。:静态画面信息,包括图形和图像。多媒体数据多媒体数据:动态画面信息,包括声音、视频、动画等。:动态画面信息,包括声音、视频、动画等。十六进制十六进制(H)(3AB.48)(3AB.48)1616=(939.28125)=(939.28125
5、)1010=316=3162 2+1016+10161 1+1116+11160 0+416+416-1-1+816+816-2-2 符号符号D=09,AF,基数基数r=16,权权=16n,逢十六进一逢十六进一数制与数制转换数制与数制转换数制与数制转换数制与数制转换=18=182 2+28+281 1+38+380 0+48+48-1-1+58+58-2-2 八进制八进制(Q)(123.45)(123.45)8 8=(83.3125)=(83.3125)1010 符号符号D=07,基数基数r=8,权权=8n,逢八进一逢八进一权值权值22 23 24 25 26 27 28 29 210 211
6、 212 213 214 215 216 4 8 16 32 64 128 256 512 1024 2048 4096 8192 16384 32768 65536计算机中的数字电路具有两种不同的稳定状态且计算机中的数字电路具有两种不同的稳定状态且能相互转换,即能相互转换,即“0”“0”和和“1”“1”两种状态。计算机两种状态。计算机处理的一切信息均用二进制数表示,但是二进制处理的一切信息均用二进制数表示,但是二进制数书写起来太长,所以计算机中的二进制数都采数书写起来太长,所以计算机中的二进制数都采用十六进制来缩写。十六进制数用用十六进制来缩写。十六进制数用0 09 9、A AF F等等16
7、16个数码表示十进制数个数码表示十进制数0 01515。为了区别十进制数、。为了区别十进制数、二进制数及十六进制数二进制数及十六进制数3 3种数制,在数的后面加一种数制,在数的后面加一个字母以进行区别。个字母以进行区别。用用B B(binarybinary)表示二进制数制;)表示二进制数制;D D(decimaldecimal)或不带字母表示十进制数制;)或不带字母表示十进制数制;H H(hexadecimalhexadecimal)表示十六进制数制。)表示十六进制数制。例:例:100 100B 100BH 0FFH 100 100B 100BH 0FFH 2.1.2 2.1.2 数制转换数制
8、转换=12=123 3+12+120 0+12+12-1-1+12+12-3-3(1001.101)(1001.101)2 2 =(9.625)=(9.625)1010二进制二进制 十进制数十进制数 按权展开,累加求和按权展开,累加求和 1.1.任意进制转十进制任意进制转十进制=8+1+0.5+0.125=8+1+0.5+0.125数制与数制转换数制与数制转换数制与数制转换数制与数制转换=48=482 2+58+581 1+68+680 0+18+18-1-1+28+28-2-2+48+48-3-3 (456.124)(456.124)8 8=256+40+6+0.125+0.03125+0.
9、0078125=256+40+6+0.125+0.03125+0.0078125=(302.1640625)=(302.1640625)1010八进制数八进制数 十进制数十进制数=316=3163 3+216+2162 2+C16+C161 1+F16+F160 0+416+416-1-1+816+816-2-2 (32CF.48)(32CF.48)1616=1288+512+192+15+0.25+0.03125=1288+512+192+15+0.25+0.03125=(13007.28125)=(13007.28125)1010十六进制数十六进制数 十进制数十进制数数制与数制转换数制与数
10、制转换数制与数制转换数制与数制转换20 21 22 23 24 25 26 27 28 29 1 2 4 8 16 32 64 128 256 512210 211 212 213 219 1K 2K 4K 8K 512K220 221 222 223 229 1M 2M 4M 8M 512M2301G1K=1024 16K=65536 1M=1048576 一个十进制数的小数点向右移动一位,相当于该数乘以10,向左移动一位,相当于该数除以10。或者说如果小数点不动,该数串左移一位,该数的数值乘以10,右移一位,该数的数值除以10。例如:123.45=12.345*10同理,一个定点二进制整数
11、或定点二进制小数左移一位,该数的数值乘以2,右移一位,该数的数值除以2。例如:11001011./210=1100101.1(除2取余)0.1110111*210=1.1101110(乘2取整)把一个十进制整数除以2,相当于对应的二进制数末位移到了小数点右手边,末位既除以2的余数 (45.27)(45.27)1010=()=()2 2 (1725.6875)(1725.6875)1010=(3275.54)=(3275.54)8 8十进制数十进制数 八进制数八进制数 十进制数十进制数 二进制数二进制数 整数部分整数部分小数部分小数部分 2|452|45 2|22 1 2|22 1 2|11 0
12、 2|11 0 2|5 1 2|5 1 2|2 1 2|2 1 2|1 02|1 0 0 1 0 1除尽为止除尽为止 0.27 0.27*2*2 0.54 0 0.54 0*2*2 0.08 1 0.08 1*2*2 0.16 0 0.16 0*2*2 0.32 0 0.32 0*2*2 0.64 0 0.64 0*2*2 0.28 1 0.28 1101101.010001数制与数制转换数制与数制转换数制与数制转换数制与数制转换 整数部分小数部分分开处理整数部分小数部分分开处理整数部分除基取余,整数部分除基取余,小数部分小数部分乘基取整乘基取整2.2.十进制转任意进制十进制转任意进制可能转换
13、完,结果为可能转换完,结果为0;也可能转换不完,;也可能转换不完,结果永不为结果永不为0,位数满足要求为止。,位数满足要求为止。(12345.671875)(12345.671875)1010 =()=()16163039.3039.16|1234516|12345 16|771 9 16|771 9 16|48 3 16|48 3 16|3 0 16|3 0 0 3 0 3整数部分整数部分小数部分小数部分 0.671875 0.671875*16*16 0.75 10(AH)0.75 10(AH)*16*16 0.0 12(CH)0.0 12(CH)十进制数十进制数 十六进制数十六进制数 A
14、C数制与数制转换数制与数制转换数制与数制转换数制与数制转换数制与数制转换数制与数制转换数制与数制转换数制与数制转换 (1010 011011 100100.0101 )2 2=()=()8 80 00 0以小数点为基准,以小数点为基准,分别向左、向右按分别向左、向右按三位一组,不足三位一组,不足3 3位加位加0 0补足补足234.2八进制数八进制数 二进制数二进制数三对一,四对一三对一,四对一3.3.二进制与八二进制与八/十六进制转换十六进制转换(10011001 11001100.0101 )2 2=()=()16160000以小数点为基准,分别向左、以小数点为基准,分别向左、右按右按四位一
15、组,四位一组,不足不足4位加位加0补足补足9C.4十六进制数十六进制数 二进制数二进制数整数位数不足,不影响结果。小位数不足,不补足会整数位数不足,不影响结果。小位数不足,不补足会出错,影响结果出错,影响结果熟记熟记2、10、16进制数之间的关系进制数之间的关系 8421权 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 0 1 2 3 4 5 6 7 8 9 1010 1011 1100 1101 1110 1111 1011 A B C D E F1012 10 11 12 13 14 15请熟记1K=210=1024=400H=100
16、0000 0000B(11 位,10个0)01023=03FFH=011 1111 1111B (10位)64K=216=65536=10000H=1 0000 0000 0000 0000B065535=00FFFFH=1111 1111 1111 1111B(16位)1M=220=1048576=100000H=10000 0000 0000 0000 0000B(21位,20个0)数制与数制转换数制与数制转换数制与数制转换数制与数制转换4.4.数制转换图数制转换图281610按按2n展展开开,累累加加求求和和除除 2取取余余,乘乘 2取取整整按按8n展展开开,累累加加求求和和16n展展开
17、开,累累加加求求和和 3位位对对 1位位 4位位对对 1位位 1位位对对 3位位 1位位对对 4位位10转转2,2转转10是最重要是最重要的,要熟练掌握。的,要熟练掌握。10转转8,10转转16,要先,要先10转转2,2再转再转8或或162.2 2.2 定点数表示定点数表示 设设n+1位位字字表表示示任任意意一一个个定定点点数数 x=xnxn-1x2x1x0,xs为为符符号号位位(0为正,为正,1为负为负),则定点数可表示为:则定点数可表示为:符号位符号位 数值域数值域(尾数尾数)xs xn xn-1 x2 x1 x0 若若x纯整数,小数点位于纯整数,小数点位于x0之后。之后。0|x|2n-1
18、定点整数定点整数定点数定点数 设设n+1=8n+1=8,则其定点整数的表示范围:,则其定点整数的表示范围:定点数定点数是指约定机器中所有数据的小数点位置固定不变。是指约定机器中所有数据的小数点位置固定不变。定点数分为定点数分为定点整数定点整数和和定点小数定点小数。定点数与编码定点数与编码定点数与编码定点数与编码则定点整数的表示范围为:则定点整数的表示范围为:=-1111111+1111111=-(27-1)+(27-1)-127127 若若x=纯小数,小数点位于纯小数,小数点位于xs、xn之间。当各位均为之间。当各位均为0时,时,x的绝对值最小,即的绝对值最小,即|x|min=0;当各位均为当
19、各位均为1 1时,时,x的绝对值最大,的绝对值最大,即即|x|max=1-2-n。定点小数定点小数0|x|1-2-n 设设n+1=8n+1=8,则其定点小数的表示范围:,则其定点小数的表示范围:设字长设字长3232位,求定点整数和定点小数所表示的最大正数、最小负数。位,求定点整数和定点小数所表示的最大正数、最小负数。=-0.1111111 +0.1111111 =-(1-0.0000001)+(1-0.0000001)=-(1-2-7)+(1-2-7)解:定点整数最大正数为解:定点整数最大正数为+(2+(23131-1)-1),最小负数为,最小负数为-(2-(231 31-1)-1);定点小数
20、最大正数为定点小数最大正数为+(1-2+(1-2-31-31)+1)+1,最小负数为,最小负数为-(1-2-(1-2-31-31)-1)-1 定点数与编码定点数与编码定点数与编码定点数与编码则定点小数的表示范围为:则定点小数的表示范围为:1.1.机器数与真值机器数与真值机器数与真值机器数与真值机器数:机器中数的表示形式,它将数的正、负符号和数值机器数:机器中数的表示形式,它将数的正、负符号和数值机器数:机器中数的表示形式,它将数的正、负符号和数值机器数:机器中数的表示形式,它将数的正、负符号和数值部分一起进行二进制编码,其位数通常为部分一起进行二进制编码,其位数通常为部分一起进行二进制编码,其
21、位数通常为部分一起进行二进制编码,其位数通常为8 8的整数倍。的整数倍。的整数倍。的整数倍。真值:机器数所代表的实际数值的正负和大小,是人们习惯真值:机器数所代表的实际数值的正负和大小,是人们习惯真值:机器数所代表的实际数值的正负和大小,是人们习惯真值:机器数所代表的实际数值的正负和大小,是人们习惯表示的数。表示的数。表示的数。表示的数。2 2。数的单位。数的单位。数的单位。数的单位位(位(位(位(bitbit):一个二进制数中的):一个二进制数中的):一个二进制数中的):一个二进制数中的1 1位,其值不是位,其值不是位,其值不是位,其值不是1 1便便便便0 0。字节(字节(字节(字节(Byt
22、eByte):一个字节,就是一个):一个字节,就是一个):一个字节,就是一个):一个字节,就是一个8 8位的二进制数。位的二进制数。位的二进制数。位的二进制数。字(字(字(字(WordWord):两个字节,就是一个):两个字节,就是一个):两个字节,就是一个):两个字节,就是一个1616位的二进制数。位的二进制数。位的二进制数。位的二进制数。双字:两个字,即四个字节,一个双字:两个字,即四个字节,一个双字:两个字,即四个字节,一个双字:两个字,即四个字节,一个3232位二进制数。位二进制数。位二进制数。位二进制数。只有只有只有只有8 8位、位、位、位、1616位或位或位或位或3232位机器数的
23、最高位才是符号位。位机器数的最高位才是符号位。位机器数的最高位才是符号位。位机器数的最高位才是符号位。计算机中数的几个概念计算机中数的几个概念定点小数定点小数0.1111111111-1=2-1+2-2+2-3+2-4+2-5+=1/2+1/4+1/8+1/16+1/32+=0.5+0.25+0.125+0.0625+0.03125+0.015625+=1-1/2n只要定点小数的位数足够多,就能十分逼近只要定点小数的位数足够多,就能十分逼近任何小数,规定误差后可以容忍。任何小数,规定误差后可以容忍。计算机中的机器数分为计算机中的机器数分为计算机中的机器数分为计算机中的机器数分为有符号数和无符号
24、数:有符号数和无符号数:有符号数:有符号数:机器数的最高位为机器数的最高位为机器数的最高位为机器数的最高位为符号位,符号位为符号位,符号位为“0”表表 示正数,符号位为示正数,符号位为“1”表示负数。表示负数。无符号数:无符号数:机器数的最高位没有机器数的最高位没有机器数的最高位没有机器数的最高位没有符号意义,只有数值符号意义,只有数值 意义意义(只表达(只表达0和正数)。和正数)。8位无符号数的表示范围为位无符号数的表示范围为 0255(000000B11111111B),既既00H0FFH 16位无符号数的表示范围为位无符号数的表示范围为065535(0000000000000000B 1
25、111111111111111B),既),既0000H)FFFFH机器整数是带符号数还是无符号数,由程序员决定。机器整数是带符号数还是无符号数,由程序员决定。机器数机器数-对带符号数的符号数字化后的机内表示。对带符号数的符号数字化后的机内表示。规定符号位规定符号位0为正,为正,1为负,放在最高位。为负,放在最高位。例如:真例如:真值为值为-4,机器数可以表示为,机器数可以表示为 1000 0100(无符号(无符号数数132)。带符号数做。带符号数做+-*/运算时,符号位和数值位运算时,符号位和数值位同等看待,一起输入硬件加法器,加法器不区别同等看待,一起输入硬件加法器,加法器不区别符号位,把它
26、看做正常数值位,按加法规则运算。符号位,把它看做正常数值位,按加法规则运算。机器数(定点整数,定点小数,浮点数),真值,机器数(定点整数,定点小数,浮点数),真值,无符号(整)数无符号(整)数11001010.11001010.0.1110010 011011 110010101-35 35H 定定点点数数在在计计算算机机中中的的编编码码称称为为机机器器数数或或机机器器码码,而而其其表表示的实际值为示的实际值为真值真值。机器数分为。机器数分为定点小数定点小数和和定点整数定点整数。由定义求原码由定义求原码:X 0.10110 -0.10110 0.0000 X原原原码原码 (定点小数为例,定义好
27、表达)定点小数为例,定义好表达)最高位为符号位,其余数值位由数值的绝对值表示最高位为符号位,其余数值位由数值的绝对值表示。2.2.1 2.2.1 定点数编码定点数编码0 10110 1 10110 00000/10000 1-X原码定义原码定义 X -1 X 0 0 X 1 X原原=编码编码是采用一组符号和一套相应组合规则来表示信息。是采用一组符号和一套相应组合规则来表示信息。定点数与编码定点数与编码定点数与编码定点数与编码 机器数编码方案包括:原码、反码、补码、移码。机器数编码方案包括:原码、反码、补码、移码。(-负负=+正)正)符号位为最高位,其余数值位由负数值按位取反。符号位为最高位,其
28、余数值位由负数值按位取反。反码反码由定义求反码由定义求反码:X 0.10110 -0.10110 0.0000 X反反0 101101 010010 0000/1 1111 符号位为最高位,其余数值位由数值按符号位为最高位,其余数值位由数值按2取摸取摸(求补求补)。补码补码 X2+X -1 X 0 Mod 2 0 X 1补码定义补码定义 X补补 =由定义求补码由定义求补码:X 0.10110 -0.10110 0.0000 X补补0 101101 010100 0000 (2-2-n)+X 反码定义反码定义 X反反=X -1X0 Mod(2-2-n)0 X1定点数与编码定点数与编码定点数与编码
29、定点数与编码解:解:x1=+78=+4EH=01001110B x1原原=0 1001110 x1反反=0 1001110 x1补补=0 1001110 x2=-78=-4EH=-01001110B x2原原=1 1001110 x2反反=1 0110001 x2补补=1 0110010机器数编码方案特点机器数编码方案特点原码的最高位为符号位,其余为数的绝对值。原码的最高位为符号位,其余为数的绝对值。正数反码、补码与正数原码相同,即正数反码、补码与正数原码相同,即x反反=x补补=x原。原。负数反码符号位为负数反码符号位为1,数值位为原码按位取反。负数补码,数值位为原码按位取反。负数补码 符号位
30、为符号位为1,数值位为原码按位取反,再加,数值位为原码按位取反,再加1。已知真值已知真值x x1 1=+78=+78,x x2 2=-78=-78,求,求xx原原、xx反反、xx补补。定点数与编码定点数与编码定点数与编码定点数与编码定点整数编码与定点小数编码基本相同。定点整数编码与定点小数编码基本相同。原码、反码原码、反码零的表示零的表示有两个零有两个零(正零和负零正零和负零)。补码零的表示只。补码零的表示只有一个有一个零零(正零正零)。原码、反码表示范围为原码、反码表示范围为:+(2n-1)-(2n-1)原码原码反码反码定点整数表示范围定点整数表示范围11101100011001001000
31、-(2n-1)+(2n-1)-1+1 0 10001100011111110000-(2n-1)+(2n-1)-1+1 0 解:解:-x-x补补=x=x补补+1=+1=0 0 0010010 x 0010010 x反反=1 1 1101101 x 1101101 x原原=1 1 0010010 0010010 真值真值 x=-0010010B=-12H=-18D x=-0010010B=-12H=-18D已知已知xx补补=1 1 1101110 1101110,求,求-x-x补、补、xx反、反、xx原及原及X X。定点数与编码定点数与编码定点数与编码定点数与编码2.4 2.4 定点数表示范围定
32、点数表示范围定点数与编码定点数与编码定点数与编码定点数与编码补码表示范围为补码表示范围为:+(2n-1)-(2n)补码补码0001000110001111-2n+(2n-1)-1+1 0-(2n-1)1001 解:原码、反码表示范围为:解:原码、反码表示范围为:+(2+(27 7-1)-1)-(2-(27 7-1)=+127-1)=+127-127-127;补码表示范围为:补码表示范围为:+(2 +(27 7-1)-1)-(2-(27 7)=+127)=+127-128-128。设字长为设字长为8 8位,求定点整数原码、反码、补码的表示范围。位,求定点整数原码、反码、补码的表示范围。原码、反码
33、表示范围为原码、反码表示范围为:+(1-2-n)-(1-2-n)原码原码反码反码定点小数表示范围定点小数表示范围1.110.110.0011.001.0010.00-(1-2-n)+(1-2-n)-0.01+0.01 0 1.000.110.0011.111.1100.00-(1-2-n)+(1-2-n)-0.01+0.01 0 补码表示范围为补码表示范围为:+(1-2-n)-1 补码补码0.001.000.110.0011.11-1+(1-2-n)-0.01+0.01 0-(1-2-n)1.001定点数与编码定点数与编码定点数与编码定点数与编码 设字长为设字长为3232位,采用补码定点小数表
34、示,符号位为位,采用补码定点小数表示,符号位为1 1位,数值位为位,数值位为3131位。则可表示的最大正数为位。则可表示的最大正数为(1-2(1-2-31-31),最小负数为,最小负数为-1-1。2 2的补码(模的补码(模=2=2)表示)表示 为为2*2*符号位(模)符号位(模)+数的真值数的真值 变形补码用于产生双符号位,便于溢出的判断。变形补码用于产生双符号位,便于溢出的判断。变形补码变形补码(双符号位摸双符号位摸4补码补码)变形补码变形补码定义定义 X补补=X4+X -1 X 0 (Mod 4)0 X 0 X,X0 则则则则 X X补补补补=X=X原原原原;X0 X127 10 0000
35、011 -253-128带符号数异号相加,不溢出。同号相加,可能溢出,也可能带符号数异号相加,不溢出。同号相加,可能溢出,也可能不溢出。不溢出。带符号数同号相减(实际上是异号相加),不溢出。异号相带符号数同号相减(实际上是异号相加),不溢出。异号相减,可能溢出,也可能不溢出。减,可能溢出,也可能不溢出。两个无符号数相加,没有溢出的概念,但可能有进两个无符号数相加,没有溢出的概念,但可能有进位。两个位。两个8位数相加结果可能是位数相加结果可能是9位,要在加法器位,要在加法器硬件中设一个进位位硬件中设一个进位位Cy(1 bit)保存进位。保存进位。做多字长无符号数或补码加法时,从右到左,第一做多字
36、长无符号数或补码加法时,从右到左,第一次加低位用次加低位用ADD指令做普通加,或清除指令做普通加,或清除Cy 用用ADDC带进位加。之后用带进位加。之后用ADDC带进位加,将上带进位加,将上一次加低位时可能产生的进位(一次加低位时可能产生的进位(Cy是是0或或1)一同)一同加进去。加进去。补码运算后的结果为补码,需再次求补才能得到运补码运算后的结果为补码,需再次求补才能得到运补码运算后的结果为补码,需再次求补才能得到运补码运算后的结果为补码,需再次求补才能得到运算结果的真值。算结果的真值。算结果的真值。算结果的真值。两个数相减,可能有借位(如果有,说明两个数相减,可能有借位(如果有,说明A-B
37、不够减有借位,不够减有借位,AB)。借位(有借位为。借位(有借位为1)保存在进位位)保存在进位位Cy中,此时称中,此时称Cy为借位位。为借位位。做多字长无符号减法时,第一次用做多字长无符号减法时,第一次用SUB指令做普通减,或清指令做普通减,或清零借位位零借位位Cy后用后用SUBB带借位减。之后用带借位减。之后用SUBB。计算机中比较两数的大小,计算计算机中比较两数的大小,计算A-B,然后判断借位位是否,然后判断借位位是否为为1。如借位位。如借位位。做多字长补码减法时,先对减数求补,注意低位做多字长补码减法时,先对减数求补,注意低位+1,高位带,高位带进位加进位加0,再做多字长补码加法。,再做
38、多字长补码加法。借位位借位位Cy=1,则说明,则说明A-B不够减,有借位,或不够减,有借位,或 A-B0,差,差为负为负;显然,;显然,A-B0,则则AB;例例例例:34-68=34+(-68):34-68=34+(-68)-34-3434=22H=0010 0010B34=22H=0010 0010B68=44H=0100 0100B -6868=44H=0100 0100B -68补补补补=1011 1100B=1011 1100B做减运算过程:做减运算过程:做减运算过程:做减运算过程:用补码相加过程:用补码相加过程:用补码相加过程:用补码相加过程:结果相同。因为符号位为结果相同。因为符号
39、位为结果相同。因为符号位为结果相同。因为符号位为1 1,求补得其真值:,求补得其真值:,求补得其真值:,求补得其真值:-00100010B-00100010B,即为,即为,即为,即为-34=-22H-34=-22H。由上面两个例子还可以看出,由上面两个例子还可以看出,由上面两个例子还可以看出,由上面两个例子还可以看出,用补码相加完成两数相减,相减若无借位,化为补码相加用补码相加完成两数相减,相减若无借位,化为补码相加用补码相加完成两数相减,相减若无借位,化为补码相加用补码相加完成两数相减,相减若无借位,化为补码相加就会有进位;相减若有借位,就会有进位;相减若有借位,就会有进位;相减若有借位,就
40、会有进位;相减若有借位,34-6834-68,化作补码相加就不会,化作补码相加就不会,化作补码相加就不会,化作补码相加就不会有进位,有进位,有进位,有进位,故减法指令借位位的形成实际是由硬件自动执行故减法指令借位位的形成实际是由硬件自动执行故减法指令借位位的形成实际是由硬件自动执行故减法指令借位位的形成实际是由硬件自动执行微指令:微指令:微指令:微指令:1)1)减数求补;减数求补;减数求补;减数求补;2 2)补码相加;)补码相加;)补码相加;)补码相加;3 3)进位位求反)进位位求反)进位位求反)进位位求反 产生产生产生产生的,程序员拿减法指令来直接用就好,但机制要了解。的,程序员拿减法指令来
41、直接用就好,但机制要了解。的,程序员拿减法指令来直接用就好,但机制要了解。的,程序员拿减法指令来直接用就好,但机制要了解。例例例例4 744 7474744AH+4AH4AH+4AH 0 1 0 0 1 0 1 0 0 1 0 0 1 0 1 0 0 01 1 0 0 1 0 1 0 0 01 1 0 0 1 0 1 0 1 0 0 1 0 1 0 0 CY CY-1=0 1=1.1 0 0 1 0 1 0 0 CY CY-1=0 1=1.有溢出有溢出有溢出有溢出 OV OV1 1 CY CY-1 CY CY-1 无进位无进位无进位无进位 CY=0 CY=0 由上两例中,例由上两例中,例由上两
42、例中,例由上两例中,例3 3的的的的 OV=1 OV=1、CY=1,CY=1,例例例例4 4中中中中OV=1OV=1、CY=0CY=0,可见溢出和进位并非有必然的联系,这是由于两者产生的,可见溢出和进位并非有必然的联系,这是由于两者产生的,可见溢出和进位并非有必然的联系,这是由于两者产生的,可见溢出和进位并非有必然的联系,这是由于两者产生的原因是不同的,两者判断的方法也是是不同的。重述如下:原因是不同的,两者判断的方法也是是不同的。重述如下:原因是不同的,两者判断的方法也是是不同的。重述如下:原因是不同的,两者判断的方法也是是不同的。重述如下:溢出溢出溢出溢出OVOV:两个补码数相加结果超出补
43、码表示范围而产:两个补码数相加结果超出补码表示范围而产:两个补码数相加结果超出补码表示范围而产:两个补码数相加结果超出补码表示范围而产生,生,生,生,OV=CY CY-1OV=CY CY-1 进位进位进位进位CY:CY:当运算结果超出计算机位数的限制(当运算结果超出计算机位数的限制(当运算结果超出计算机位数的限制(当运算结果超出计算机位数的限制(8 8位、位、位、位、1616位),会产生进位,它是由最高位计算产生的位),会产生进位,它是由最高位计算产生的位),会产生进位,它是由最高位计算产生的位),会产生进位,它是由最高位计算产生的,在加法中表现在加法中表现在加法中表现在加法中表现为进位,在减
44、法中表现为借位。为进位,在减法中表现为借位。为进位,在减法中表现为借位。为进位,在减法中表现为借位。补码符号位的扩展用 x补 求 x/2补,符号位不变,符号位连同数值位右移一次,余数抛弃。x补=10011 x/2补=11001 1不同字长数相加,字长短的数符号位向左扩展,直到与长数的符号位对齐。1001001111000011 1001001111000011+1111111111000011 +00000000011011118位字节,-1=FFH;扩展成 16位字,-1=FFFFH,符号位也从第7位移动到第15位。小结小结计算机中,所有的信息(数或各种代码)都以二进制数的计算机中,所有的信
45、息(数或各种代码)都以二进制数的形式存放形式存放Intel规定,带符号整数一律以补码表示规定,带符号整数一律以补码表示数或各种代码的计算一律以二进制数的规则运算,符号位数或各种代码的计算一律以二进制数的规则运算,符号位也参与运算。加法运算的结果超出计算机字长的限制(也参与运算。加法运算的结果超出计算机字长的限制(8或或16、32位时)就会由最高位产生进位,减法会产生借位,位时)就会由最高位产生进位,减法会产生借位,存放在存放在CY中。中。计算机只识别计算机只识别0和和1,至于是带符号数还是无符号数,完全,至于是带符号数还是无符号数,完全由程序员决定。由程序员决定。还有还有BCD码,码,ASCI
46、I码等,计算机不去识码等,计算机不去识别,只按无符号数正常运算处理,这一点很重要。例如别,只按无符号数正常运算处理,这一点很重要。例如0FFH,带符号数补码代表,带符号数补码代表-1,无符号数代表,无符号数代表255。又如。又如32H,ASCII码为字符码为字符2,10进制为进制为50,BCD码为码为32n n生活中人们习惯于十进制数,计算机只能识别生活中人们习惯于十进制数,计算机只能识别生活中人们习惯于十进制数,计算机只能识别生活中人们习惯于十进制数,计算机只能识别二进制数,为了将十进制数变为二进制数,出现二进制数,为了将十进制数变为二进制数,出现二进制数,为了将十进制数变为二进制数,出现二
47、进制数,为了将十进制数变为二进制数,出现了了了了BCDBCD码,即二进制码,即二进制码,即二进制码,即二进制代码代码代码代码表示的十进制数。它既表示的十进制数。它既表示的十进制数。它既表示的十进制数。它既是逢十进一,又是一组二进制码。用是逢十进一,又是一组二进制码。用是逢十进一,又是一组二进制码。用是逢十进一,又是一组二进制码。用4 4位二进制数位二进制数位二进制数位二进制数编码表示编码表示编码表示编码表示1 1位十进制数称为压缩的位十进制数称为压缩的位十进制数称为压缩的位十进制数称为压缩的BCDBCD码,码,码,码,8 8位二位二位二位二进制数可以放进制数可以放进制数可以放进制数可以放2 2
48、个十进制数位。也可以用个十进制数位。也可以用个十进制数位。也可以用个十进制数位。也可以用8 8位二进位二进位二进位二进制数表示制数表示制数表示制数表示1 1个十进制数位,这种个十进制数位,这种个十进制数位,这种个十进制数位,这种BCDBCD码称为非压码称为非压码称为非压码称为非压缩的缩的缩的缩的BCDBCD码。十进制数和码。十进制数和码。十进制数和码。十进制数和BCDBCD码的对照表见表码的对照表见表码的对照表见表码的对照表见表2.2.2 2.2.2 二二-十进制数编码十进制数编码 在在计计算算机机中中,十十进进制制数数一一般般采采用用二二进进制制数数表表示示十十进进制制数数的的编码称为编码称
49、为BCD码码。最常用的是。最常用的是8421码码。0 0000 0000 0011 00001 0001 0111 0100 00012 0010 0110 0101 00113 0011 0101 0110 00104 0100 0100 0111 01105 0101 1011 1000 11106 0110 1010 1001 10107 0111 1001 1010 1000 8 1000 1000 1011 11009 1001 1111 1100 10008421余余3码码格雷码格雷码 2421有权码有权码无权码无权码 表示十进制数位的表示十进制数位的4位二进制码的每一位位二进制码
50、的每一位有确定的权。有确定的权。表示十进制数位的表示十进制数位的4位二进制码的每一位位二进制码的每一位没有确定的权。没有确定的权。有权码有权码无权码无权码定点数与编码定点数与编码定点数与编码定点数与编码 非压缩非压缩BCD码码是是一个字节存放一个字节存放1个十进制数位或符号位。个十进制数位或符号位。应用时需给出该数在主存中起始地址和位数应用时需给出该数在主存中起始地址和位数(串长串长)。非压缩与压缩非压缩与压缩BCDBCD码码 压缩压缩BCD码码是是一个字节存放一个字节存放2个十进制数位。应用时也需个十进制数位。应用时也需给出该数在主存中起始地址和位数给出该数在主存中起始地址和位数(串长串长)