《第3章 数制与码制.ppt》由会员分享,可在线阅读,更多相关《第3章 数制与码制.ppt(59页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第三章第三章 运算方法和运算部件运算方法和运算部件3.13.1数据的表示方法和转换数据的表示方法和转换3.1 数制3.1.1 数值型数据的表示和转换1、进位计数制进位计数制:进位计数制:用少量的数字符号(也称数码),用少量的数字符号(也称数码),按先后次序把它们排成数位,由低到高进行计按先后次序把它们排成数位,由低到高进行计数,计满进位,这样的方法称为进位计数制数,计满进位,这样的方法称为进位计数制基数:基数:进位制的基本特征数,即所用到的数字进位制的基本特征数,即所用到的数字符号个数。符号个数。例如例如1010进制进制 :09 09 十个数码表示,基数为十个数码表示,基数为1010权:权:进
2、位制中各位进位制中各位“1”“1”所表示的值为该位的权所表示的值为该位的权常见的进位制:常见的进位制:2 2,8 8,1010,1616进制进制 1)十进制(Decimal)bb基数:10;符号:0,1,2,3,4,5,6,7,8,9bb计算规律:“逢十进一”或“借一当十”bb并列表示:N10=dn-1dn-2 d1d0d-1d-2 d-m 十进制数的多项式表示十进制数的多项式表示:bbN10=dn-1 10n-1+dn-2 10n-2+d1 101+d0 100+d-1 10-1+d-2 10-2+d-m 10-M m,nm,n为正整数为正整数,其中其中n n为整数位数;为整数位数;mm为小
3、数位为小数位数。数。DiDi表示第表示第i i位的系数位的系数,10,10i i称为该位的权称为该位的权.例如:一个十进制数123.45的表示bb123.45 =1102+2101+3 100+410-1+510-2注:等式左边为并列表示法等式右边为多项式表示法 2)二进制(Binary)基数基数:2:2符号符号:0,1:0,1计算规律计算规律:逢二进一或借一当二逢二进一或借一当二二进制的多项式表示二进制的多项式表示:N N2 2=d dn n-1-1 22n-1 n-1+d dn n-2-2 22n-2 n-2+d d1 1 221 1+d d0 0 220 0+d d-1-1 22-1-1
4、+d d-2-2 22-2-2+d d-m-m 22-m-m其中其中n n为整数位数;为整数位数;mm为小数位数。为小数位数。DiDi表示第表示第i i位的系数位的系数,2 2i i称为该位的权称为该位的权.3)十六进制(Hexadecimal)基数基数:16:16符号符号:0,1,2,3,4,5,6,7,8,9,:0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,FA,B,C,D,E,F计算规律计算规律:逢十六进一或借一当十六逢十六进一或借一当十六二进制的多项式表示二进制的多项式表示:N N1616=d dn n-1-1 1616n-1 n-1+d dn n-2-2 1616n-2
5、 n-2+d d1 1 16161 1+d d0 0 16160 0+d d-1-1 1616-1-1+d d-2-2 1616-2-2+d d-m-m 1616-m-m 其中其中n n为整数位数;为整数位数;mm为小数位数。为小数位数。DiDi表示第表示第i i位的系数位的系数,1,16 6i i称为该位的权称为该位的权.例如十六进制数(2C7.1F)16的表示 bb(2C7.1F)16=2 162+12 161+7 160+1 16-1+15 16-2 2、进位计数制之间的转换1).R进制转换成十进制的方法bb按权展开法:先写成多项式,然后计算十进制结果.bbN=dn-1dn-2 d1d0
6、d-1d-2 d-mbb=dn-1 Rn-1+dn-2 Rn-2+d1 R1+d0 R0+d-1 R-1+d-2 R-2+d-m R-m例如:写出(1101.01)2,(237)8,(10D)16的十进制数bb(1101.01)2=123+122+021+120+02-1+12-2=8+4+1+0.25=13.25bb(237)8=282+321+720=128+24+7=159bb(10D)16=1162+13160=256+13=269 2)十进制转换成二进制方法bb一般分为两个步骤:整数部分的转换除2取余法(基数除法)减权定位法小数部分的转换乘2取整法(基数乘法)除基取余法:把给定的除以
7、基数除基取余法:把给定的除以基数,取余数作为最低位的取余数作为最低位的系数系数,然后继续将商部分除以然后继续将商部分除以 基数基数,余数作为次低余数作为次低位系数位系数,重复操作直至商为重复操作直至商为 0 0例如:用基数除法将例如:用基数除法将(327)(327)1010转换成二进制数转换成二进制数2 327 余数2 163 1 2 81 1 2 40 1 2 20 0 2 10 0 2 5 0 2 2 1 2 1 0 2 0 1 (327)(327)10 10=(=(101000111)101000111)2 2减权定位法将十进制数依次从二进制的最高位权值进行比较,将十进制数依次从二进制的
8、最高位权值进行比较,若够减则对应位置若够减则对应位置1 1,减去该权值后再往下比较,若,减去该权值后再往下比较,若不够减则对应位为不够减则对应位为0 0,重复操作直至差数为,重复操作直至差数为0 0。例如:例如:将将(327)(327)10 10 转换成二进制数转换成二进制数256327512256327512327-256=71 1327-256=71 171128 071128 071-64=7 171-64=7 1732 0732 0716 0716 078 078 07-4=3 1 7-4=3 1 3-2=1 13-2=1 11-1=0 1 1-1=0 1 乘基取整法(小数部分的转换)
9、把给定的十进制小数乘以把给定的十进制小数乘以2,2,取其整数作为取其整数作为二进制小数的第一位二进制小数的第一位,然后取小数部分继续乘以然后取小数部分继续乘以2,2,将所的整数部分作为第二位小数将所的整数部分作为第二位小数,重复操作直重复操作直至得到所需要的二进制小数至得到所需要的二进制小数例如例如:将将(0.8125)(0.8125)10 10 转换成二进制小数转换成二进制小数.整数部分整数部分2 0.8125=1.625 12 0.8125=1.625 12 0.625=1.25 12 0.625=1.25 12 0.25=0.5 02 0.25=0.5 02 0.5=1 12 0.5=1
10、 1(0.8125)10=(0.1101)2例如:将(0.2)10 转换成二进制小数0.2 0.2 2=0.42=0.4整数部分整数部分0 00.4 0.4 2=0.8 2=0.8 0 00.8 0.8 2=1.6 2=1.6 1 10.6 0.6 2=1.2 2=1.2 1 10.2 0.2 2=0.4 2=0.4 0 00.4 0.4 2=0.8 2=0.8 0 00.8 0.8 2=1.6 2=1.6 1 10.6 0.6 2=1.2 2=1.2 1 1 (0.2)10 10=0.001100110011.2 2 3)其它进制之间的直接转换法二二 八八 二二 十六十六 000 0 000
11、0 0 1000 8000 0 0000 0 1000 8001 1 0001 1 1001 9001 1 0001 1 1001 9010 2 0010 2 1010 010 2 0010 2 1010 A A011 3 0011 3 1011 011 3 0011 3 1011 B B100 4 0100 4 1100 100 4 0100 4 1100 C C101 5 0101 5 1101 101 5 0101 5 1101 D D110 6 0110 6 1110 110 6 0110 6 1110 E E111 7 0111 7 1111 111 7 0111 7 1111 F
12、F二进制转换成八进制例:(10110111.01101)2 2(10110111.01101)2 2=(267.32)8 8八进制:2 6 7 .3 2二进制:010,110,111.011,010二进制:10,110,111.011,01八进制转换二进制例如:(123.46)8 8=(001,010,011.100,110)2 2=(1010011.10011)2 2二进制转换成十六进制bb例:(110110111.01101)2 2(10110111.01101)2 2=(1B7.68)1616十六进制:1 B 7 .6 8二进制:0001,1011,0111.0110,1000二进制:1
13、,1011,0111.0110,1十六进制转换成二进制例如:(7AC.DE)1616=(0111,1010,1100.1101,1110)2 2=(11110101100.1101111)2 23、数值符号的表示 带符号数的编码名词解释:真值和机器数真值:正、负号加某进制数绝对值的形式称为真值。如二进制真值:X=+1011 y=-1011机器数:符号数码化的数称为机器数如:X=01011 Y=11011 3.1.2 十进制数的编码与运算BCD码 84218421码码 2421 2421码码 余余3 3码码 8421 8421码为有权代码,码为有权代码,0 0000 0000 00110 000
14、0 0000 0011数值为数值为N=8dN=8d3 3+4d+4d2 2+2d+2d1 1+1d+1d0 01 0001 0001 01001 0001 0001 0100十进制数十进制数63.2963.29的的BCDBCD码为码为:2 0010 0010 01012 0010 0010 01010110 0011.0010 10010110 0011.0010 1001 3 0011 0011 0110 3 0011 0011 0110 4 0100 0100 01114 0100 0100 0111 24212421码为有权代码,码为有权代码,5 0101 1011 10005 0101
15、 1011 1000数值为数值为N=2dN=2d3 3+4d+4d2 2+2d+2d1 1+1d+1d0 0 6 0110 1100 1001 6 0110 1100 1001 十进制数十进制数63.2963.29的的BCDBCD码为码为:7 0111 1101 10107 0111 1101 10101100 0011.0010 11111100 0011.0010 1111 8 1000 1110 1011 8 1000 1110 1011余余3 3码为无权代码,对应码为无权代码,对应84218421码加码加3 3而得。而得。9 1001 1111 11009 1001 1111 1100
16、除上述三种除上述三种BCDBCD码之外,还有码之外,还有54215421码、格雷码等码、格雷码等 十进制编码的加法运算1、“8421”BCD码加法运算 BCD码运算应将每4位二进制数分为一组,组与组之间直接运算,逢十进一。但计算机中无法区分BCD码,一概作为二进制数处理,因此,计算机做此运算后须进行调整。调整方法:和9(1001)2,不调整和9(1001)2,加6(0110)2修正 例:5+3=8 7+8=15 8+9=17 0 1 0 1 0 1 1 1 1 0 0 0+0 0 1 1 +1 0 0 0 +1 0 0 1 1 0 0 0 1 1 1 1 1 00 0 1 +0 1 1 0 +
17、0 1 1 0 1 0 1 0 1 1 0 1 1 1向高位进位向高位进位2、余3码的加法运算(自学)2.数字串在机内的表示与存储bb主要有两种形式;(l)字符形式、即一个字节存放一个十进制数位或符号位,存放的是09十个数字和正负号的ASCll编码值。例如,123的编码为2B 31 32 33,占用 4个连续的字节,这里的2B,31,32和 33是用十六进制形式给出的编码,2B表示正号,31,32和33分别表示数字1,2和3。一123在主存中为 2D 31 32 33,其中 2D为负号。这种表示方式运算起来很不方便,因为它的高4位不具有数值的意义,它主要用在非数值计算的应用领域。(2)压缩的十
18、进制数形式。用一个字节存放两个十进制数位,既节省了存储空间,又便于完成十进制数的算术运算、其值用BCD码或ASCll码的低4位表示。符号位也占半个字节并放在最低数字位之后,其值可从4位二进制码中的6种冗余状态中选用。例如,用C(l2)表示正号;D(13)表示负号。并规定数字和符号位个数之和必须为偶数,否则在最高数字之前补一个0。例如,123被表示成12 3C(2个字节),一12被表示成01 2D(2个字节)。3.2 带符号数据的表示方法 与加减运算 机器数:计算机中表示的带符号的二进制数。机器数有四种表示方法即原码、补码、反码和移码。3.2.1 原码、补码、反码和移码 及运算 1.原码表示法
19、原码表示法用“0”表示正号,用“1”表示负号,有效值部分用二进制的绝对值表示。以下n均表示字长的有效位。小数:X 1-2-(n-1)X0 X原原 =1-X=1+|X|0X-(1-2-(n-1)完成下列数的真值到原码的转换X1 1 =+0.1011011 X2 2 =-0.1011011 X1 1原原=0.1011011X2 2 原原=1.1011011整数:X 2n-1-1X0 X原原 =2n-1-X=2n-1+|X|0X-(2n-1-1)完成下列数的真值到原码的转换X1 1 =+0 1011011 X2 2 =-0 1011011 X1 1 原原=01011011X2 2 原原=110110
20、11原码小数的表示范围:+0+0原原=0.0000000;-0=0.0000000;-0原原=1.0000000 =1.0000000 最大值最大值:1-1-2 2-(-(n-1)n-1)最小值最小值:-(1-2:-(1-2-(-(n-1)n-1)表示数的个数表示数的个数:2:2n n-1 1 若二进制原码小数的位数分别是8、16位,求其该数表示的最大值、最小值及所能表示数的个数?8位:127/128,-127/128,25516位:32767/32768,-32767/32768,65535原码整数的表示范围:+0+0原原=00000000;-0=00000000;-0原原=10000000
21、 =10000000 最大值最大值:2 2(n-1)n-1)-1-1最小值最小值:-(2:-(2-(-(n-1)n-1)-1)-1)表示数的个数表示数的个数:2:2n n-1 1 若二进制的位数分别是8、16,求其表示的最大值、最小值及表示数的个数8位:127,-127,25516位:32767,-32767,65535原码特点:bb表示简单,易于同真值之间进行转换,实现乘除运算规则简单。bb进行加减运算十分麻烦。2 补码表示法 模:计量器具的容量,或称为模数。4位字长的机器表示的二进制整数为:00001111 共16种状态,模为16=24。整数N位字长的模值为 2n,一位符号位的纯小数的模值
22、为2。补码的定义:正数的补码就是正数的本身,负数的补码是原负数加上模。小数:X 1-2-(n-1)X0 x补补=2+X=2-|X|0X-1 完成下列数的真值到补码的转换X1 1 =+0.1011011 X2 2 =-0.1011011 X1 1补补=01011011X2 2补补=10100101整数:X 2(n-1)-1 X0 x补补=2n+X=2n-|X|0X-2(n-1)完成下列数的真值到补码的转换X1 1 =+0 1011011 X2 2 =-0 1011011 X1 1补补=01011011X2 2补补=10100101补码的表示范围:bbN位纯整数:2n-1-1 -2n-1 bbN位
23、纯小数:1-2-(n-1)-1 bb均能表示 2n 个数原码与补码之间的转换bb原码求补码正数正数 XX补补=XX原原负数负数 符号除外,各位取反,末位加符号除外,各位取反,末位加1 1例:例:X=-01001001X=-01001001 XX原原=1 11001001 1001001 ,XX补补=1 10110110+1=0110110+1=1 101101110110111 XX补补=2 28 8+X=100000000-1001001=X=100000000-1001001=1 101101110110111 10 0 0 0 0 0 0 0 10 0 0 0 0 0 0 0 -1 0
24、0 1 0 0 1 -1 0 0 1 0 0 1 1 0 1 1 0 1 1 1 1 0 1 1 0 1 1 1 由X补求-X补(求机器负数)运算过程是连同 符号一起将各位取反,末位再加1。设字长N=8位例:X=+100 1001 X补=0100 1001-X 补=1 011 01 1 1最大的优点就是将减法运算转换成加法运算。bbX补-Y补=X补+-Y补例如例如 X=(11)X=(11)1010=(1011)=(1011)2 2 Y=(5)Y=(5)1010=(0101)=(0101)2 2已知已知字长字长n=5n=5位位 XX补补-Y Y补补 =XX补补+-+-Y Y补补=01011+11
25、011=01011+11011=1 100110=00110=(6)00110=00110=(6)10 10 注:注:最高最高1 1位已经超过字长故应丢掉位已经超过字长故应丢掉3 反码表示法正数的表示与原、补码相同,负数的补码符号位为1,数值位是将原码的数值按位取反,就得到该数的反码表示小数:X 1 X 0X反反=(2-2-(n-1)+X 0 X -(1-2-(n-1)X1 1=+0.1011011,X1 1 反反=0.1011011X2 2=-0.1011011,X2 2 反反=1.0100100 1.1.1 1 1 1 1 1 1 1 1 1 1 1 1 1 -0.-0.1 1 0 0 1
26、 1 1 0 1 0 1 1 1 1 1.1.0 0 1 1 0 0 1 0 0 1 0 0 0 0 整数:X 2n-1 X 0 X反反=(2n-1)+X 0 X -2n-1 X3 3=+1011011,X3 3 反反=01011011 X4 4=-1011011,X4 4 反反=10100100 1 1 1 1 1 1 1 11 1 1 1 1 1 1 1-1 0 1 1 0 1 1-1 0 1 1 0 1 1 1 0 1 0 0 1 0 0 1 0 1 0 0 1 0 0 +0反反=00000000;-0反反 =111111114 移码(增码)表示法X移移=2n-1+X 2n-1-1 X-
27、2n-1 X X1 1=0101 0101=0101 0101 X X1 1 补补=0101 0101=0101 0101 X X1 1 移移=1101 0101=1101 0101X X2 2=-0101 0101=-0101 0101 X X2 2 补补=1010 1011=1010 1011 X X2 2 移移=0010 1011=0010 10115)无符号数的表示 在数据处理的过程中,如不需要设置符号位可用全部字长来表示数值大小。如8位无符号数的取值范围是0255(2)。码制表示法小结bbX原原、X反反 、X 补补用“0”表示正号,用“1”表示负号;X移移用“1”表示正号,用“0”表
28、示负号。bb如果X为正数,则X原原=X反反 =X 补补。bb如果X为0,则 X 补补 、X移移有唯一 编码,X原原、X反反 有两种编码。bb移码与补码的形式相同,只是符号位相反。6)数值的运算方法 计算机中,常用补码进行加减运算 补码可将减法变加法进行运算 补码运算特点:符号位数值位一同运算 定点补码运算在加法运算时的基本规则:X补+Y补=X+Y补(两个补码的和等于和的补码)定点补码运算在减法运算时的基本规则:X-Y补=X补+-Y补 例如:已知机器字长n=8,X=44,Y=53,求X+Y=?解:X原=00101100,Y原=00110101X补=00101100,Y补=00110101 X补=
29、0 0 1 0 1 1 0 0 +Y补=0 0 1 1 0 1 0 110000110 X+Y=+97例:已知机器字长n=8,X=-44,Y=-53,求X+Y=?解:44补=00101100,53补=00110101X补=-44补=11010011+1=11010100,Y补=-53补=11001010+1=11001011,X补 =1 1 0 1 0 1 0 0 +Y补=1 1 0 0 1 0 1 1 X+Y补=1 1 00 1 1 1 1 1 超出8位,舍弃模值 X+Y=-01100001,X+Y=(-97)例:已知机器字长n=8,X=44,Y=53,求X-Y=?解:X补=00101100
30、,Y补=00110101,-Y补=11001011 X补 =0 0 1 0 1 1 0 0 +-Y补=1 1 0 0 1 0 1 1 1 1 1 1 0 1 1 1 X-Y补=11110111,X-Y=-0001001=(-9)例:已知机器字长n=8,X=-44,Y=-53,求X-Y=?解:X补=11010100,Y补=11001011,-Y补=00110101 X补 =1 1 01 0 1 0 0 +-Y补=00 1 1 0 1 0 1 1 000 0 1 0 0 1 超出8位(模值),舍弃X-Y补=00001001,X-Y=+0001001=(+9)举例如下:溢出问题解:X补=011110
31、00,Y补=00001010,X补=0 1 1 1 1 0 0 0 +Y补=0 0 0 0 1 0 1 0 1 0 0 0 0 0 1 0 X+Y补=10000010,X+Y的真值=-1111110=(-126)10 运算结果超出机器数值范围发生溢出错误。(8位计算机数值表达范围:(-128+127)例:已知机器字长n=8,X=120,Y=10,求X+Y=?溢出判断规则与判断方法bb两个相同符号数相加,其运算结果符号与被加数相同,若相反则产生溢出;bb两个相异符号数相减,其运算结果符号与被减数相同,否则产生溢出。bb相同符号数相减,相异符号数相加不会产生溢出。bb溢出判断方法:1.双符号法,2
32、.进位判断法.双符号位溢出判断法 Sf1Sf2 (也被称为变形补码)双符号含义:00表示运算结果为正数;01表示运算结果正向溢出;10表示运算结果负向溢出;11表示运算结果为负数。亦即:OVR=Sf1 Sf2 =1有溢出 OVR=Sf1 Sf2=0 无溢出 第一位符号位为运算结果的真正符号位。例:X=0.1001,Y=0.0101,求X+Y解:X补=00.1 0 0 1 +Y补=00.0 1 0 1 X+Y补=00.1 1 1 0两个符号位相同,运算结果无溢出X+Y=+0.1110例:X=-0.1001,Y=-0.0101,求 X+Y=?解:X补=11.0110+1=1 1.0 1 1 1 +
33、Y补=11.1010+1=1 1.1 0 1 1 X+Y补=1 1 1.00 1 0 最高位1丢掉两个符号位相同,运算结果无溢出X+Y=-0.1110 例:X=0.1011,Y=0.0111,求 X+Y=?解:X补=00.1 0 1 1 +Y补=00.0 1 1 1 X+Y补=01.0 01 0两个符号位为01,运算结果正向溢出例:X=-0.1011,Y=0.0111,求 X-Y=?解:X补=11.0100+1=11.0101 Y补=00.0111 -Y补=11.1001 X补=1 1.0 1 0 1 +-Y补=1 1.1 00 1 X+Y补=1 10.1 1 1 0两个符号位10不同,运算结果负向溢出.进位溢出判断法 SC两单符号位的补码进行加减运算时,若最高数值位向符号位的进位值C与符号位产生的进位输出值S相同时则无溢出,否则溢出。例:X补=1.1 0 1 X补=1.1 1 0 +Y补=1.00 1 +Y补=0.1 0 0 X+Y补=10.1 1 0 X+Y补=10.0 1 0 C=0,S=1,有溢出 C=1,S=1,无溢出 X+Y=+0.010
限制150内