1、第2章 计算机内部数据的表示方法,2.1 数值数据的编码 2.2 非数值数据的编码,计算机内部数据分为“数值数据”和“非数值数据”两大类。 “数值数据”是指在数轴上能找到其对应点的数据,包括整数和实数。 “非数值数据”包括文字、声音、图像、视频等。,2.1 数值数据的编码,2.1.1 数制及其相互转换 2.1.2 定点表示与浮点表示 2.1.3 无符号定点整数的表示 2.1.4 有符号定点整数的表示,通常将数值数据在计算机内部的编码称为机器数,而机器数表示的十进制数值称为机器数的真值。对数值数据的编码需要解决三个问题:数制转换、小数点的处理和符号的表示。,2.1.1 数制及其相互转换,1、进位
2、计数制 2、数制间的转换,1、进位计数制,(1)R进制数的表示方法:anan-1 . a1a0 . a-1a-2 . a-m (m,n为正整数)式中:ai(i=0n,-1-m)为基本符号。,(2)R进制数的值:V = anRn + an-1Rn-1 + .+ a1R1 + a0R0 +a-1R-1 + a-2R-2+.+a-mR-m,(3)基数R:二进制R=2,八进制R=8,十六进制R=16,十进制R=10。,1、进位计数制,(4)、基本符号:二进制基本符号为0和1八进制基本符号为0,1,2,3,4,5,6,7十六进制基本符号为 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F十
3、进制基本符号为0,1,2,3,4,5,6,7,8,9,1、进位计数制,(5)、权:Ri称为第i位上的权。,(6)、运算规则:“逢R进一”。,(7)、后缀字母:二进制:B,八进制:Q(O),十进制D(可以省略),十六进制:H。,表2.1 四种进位制数之间的对应关系,2、数制间的转换,(1)R进制数转换成十进制数 (2)十进制数转换成R进制数 (3)二、八、十六进制数的相互转换,(1)、R进制数转换成十进制数:“按权展开”法,例1、将二制数10101.01转换成十进制数。,(10101.01)2= (124+023+122+021+120+02-1+12-2)10=(21.25)10,例2、将八进
4、制数307.6转换成十进制数。,(307.6)8=(382+780+68-1)10=(199.75)10,例3、将十六进制数3A.C转换成十进制数。,(3A.C)16=(3161+10160+1216-1)10=(58.75)10,(2)、十进制数转换成R进制数,“除基取余,上右下左(先低后高)”法。,所以,(835)10=(1503)8,例1、将十进制整数835分别转换成八、二进制数。,1)、整数部分的转换:,所以,(835)10=(1101000011)2,(2)、十进制数转换成R进制数,2)、小数部分的转换:“乘基取整,上左下右(先高后低)”法。,例2、将十进制小数0.6875分别转换成
5、二、八进制数。,0.68752=1.375 整数部分=1 (高位)0.3752=0.75 整数部分=0 0.752=1.5 整数部分=1 0.52=1.0 整数部分=1 (低位)所以,(0.6875)10=(0.1011)2,0.68758=5.5 整数部分=5 (高位)0.58=4.0 整数部分=4 所以,(0.6875)10=(0.54)8 (低位),(2)、十进制数转换成R进制数,例3、将十进制小数0.63转换成二进制数。,0.632=1.26 整数部分=1 (高位)0.262=0.52 整数部分=0 0.522=1.04 整数部分=1 0.042=0.08 整数部分=0 (低位)所以,
6、(0.63)10=(0.1010)2 (近似值),(2)、十进制数转换成R进制数,3)、含整数、小数部分的数的转换:分别转换,然后再组合。,例4、将十进制数835.6875转换成二、八进制数。,(835.6875)10=(1101000011.1011)2=(1503.54)8,(3)、二、八、十六进制数的相互转换,1)、八进制数转换成二进制数:每一个八进制数字改写成等值的三位二进制数即可。(0)8=000 (1)8=001 (2)8=010 (3)8=011(4)8=100 (5)8=101 (6)8=110 (7)8=111,例1、将(13.724)8转换成二进制数。,(13.724)8=
7、(001 011.111 010 100)2=(1011.1110101)2,(3)、二、八、十六进制数的相互转换,2)、十六进制数转换成二进制数:把每一个十六进制数字改写成等值的四位二进制数即可。(0)16=0000 (1)16=0001 (2)16=0010 (3)16=0011(4)16=0100 (5)16=0101 (6)16=0110 (7)16=0111(8)16=1000 (9)16=1001 (A)16=1010 (B)16=1011(C)16=1100 (D)16=1101 (E)16=1110 (F)16=1111,例2、将十六进制数2B.5E转换成二进制数。,(2B.5
8、E)16=(0010 1011.0101 1110)2 =(101011.0101111)2,(3)、二、八、十六进制数的相互转换,3)、二进制数转换成八进制数:整数部分从低位向高位方向每三位用一个等值的八进制数来替换,最后不足三位时在高位补0凑满三位;小数部分从高位向低位方向每三位用一个等值的八进制数来替换,最后不足三位时在低位补0凑满三位。,(0.10101)2=(000.101 010)2=(0.52)8(10011.01)2=(010 011.010)2=(23.2)8,(3)、二、八、十六进制数的相互转换,4)、二进制数转换成十六进制数:整数部分从低位向高位方向每四位用一个等值的十六
9、进制数来替换,最后不足四位时在高位补0凑满四位;小数部分从高位向低位方向每四位用一个等值的十六进制数来替换,最后不足四位时在低位补0凑满四位。(11001.11)2 = (0001 1001.1100)2=(19.C)16,2.1.2 定点表示与浮点表示,1、定点表示 2、浮点表示,1、定点表示,定点表示法用来表示整数和纯小数。,定点小数:1)、小数点固定(隐含)在数的最左边, 0.xxx(不考虑符号) 。2)、n位定点小数X的表示范围:2-n|X|1-2-n(不考虑符号)。,定点整数:1)、小数点固定(隐含)在数的最右边,xxx(不考虑符号)。2)n定点整数X的表示范围:0|X|2n-1(不
10、考虑符号)。,忽略和溢出:如果运算的结果小于能表示的最小数,则计算机把它当成0处理;若是大于能表示的最大数,则会发生“溢出”。,2、浮点表示,浮点表示法用来表示实数。,表示形式:X=(-1)s MRE其中: 基数R:2、4、16等符号S:0(正)或1(负);尾数M:二进制定点小数(不含符号) ,决定数的精度;阶码E:二进制定点整数(含符号) ,决定数的范围。,绝对值最小的数(不包括0):0.0.01R-11.1 。绝对值最大的数:0.11.1R11.1。,2.1.3 无符号定点整数的表示,当一个编码的所有位都用来表示数值时,该编码表示的就是无符号数。一般在全部是正数运算,且不出现负值结果的场合
11、下,可以省略符号位,使用无符号数表示。存放在一个n位寄存器中的无符号定点整数的表示范围为:02n-1,2.1.4 有符号定点整数的表示,1、原码 2、补码 3、反码 4、小结,1、原码,编码规则:(1)最高位为符号位,对于正数,符号位为0,对于负数,符号位为1;(2)其余各位为数值位,其数值位与真值的数值位相同。 特点:(1)0有两个编码,假设采用八位原码,则:+0原0 0000000,-0原1 0000000(2)n位二进制原码表示的数值范围为2n-112n-1+1。,1、原码,举例:【例2.12】确定101011B和-101011B的8位原码。101011原=00101011,-10101
12、1原=10101011【例2.13】已知8位原码00111011和10010110,确定其对应的真值。00111011原对应的真值为111011B。10010110原对应的真值为-10110B。,2、反码,编码规则:(1)最高位为符号位,对于正数,符号位为0,对于负数,符号位为1;(2)其余各位为数值位,对于正数,其数值位与真值的数值位相同;对于负数,其数值位是通过真值的数值位各位取反得到。 特点:(1)0有两个编码,假设采用八位反码,则:+0反0 0000000,-0反1 1111111(2)n位二进制反码表示的数值范围为2n-112n-1+1。,2、反码,举例:【例2.14】确定10101
13、1B和-101011B的8位反码。101011反=00101011,-101011反=11010100【例2.15】已知8位反码00111011和10010110,确定其对应的真值。00111011反对应的真值为111011B。10010110反对应的真值为-1101001B。,3、补码,编码规则:(1)最高位为符号位,对于正数,符号位为0,对于负数,符号位为1;(2)其余各位为数值位,对于正数,其数值位与真值的数值位相同;对于负数,其数值位是真值的数值位各位取反后加1得到。 特点:(1)0只有一个编码,假设采用八位补码,则:0补0 0000000(2)n位二进制补码表示的数值范围为2n-11
14、2n-1。,3、补码,举例:【例2.16】确定101011B和-101011B的8位补码。101011补=00101011,-101011补=11010101【例2.17】已知8位补码00111011和10010110,确定其对应的真值。00111011补对应的真值为111011B。10010110补对应的真值为-1101010B。,注:当由负数的补码确定其真值时,真值的数值位是由补码数值位各位取反后加1得到。,4、小结,1、三种编码都是为了解决负数在机器中的表示而提出的。对于正数,它们的符号都是0,其数值部分都是真值的数值部分本身;而对于负数,符号位均为“1”,数值位则各有不同的表示:原码:
15、同真值的数值位。反码:真值的数值位各位取反。补码:真值的数值位各位取反,末位加1。由编码求真值,是一个完全相反的过程,先确定数值位,然后将符号位转换成符号即可。,4、小结,2、原码和反码都有+0和-0两种零的表示,而补码可唯一表示零。3、补码和反码的符号位可作为数值的一部分看待,可以和数值位一起参加运算。而原码的符号位必须和代表绝对值的数值位分开处理。4、原码和反码能表示的正数和负数的范围相对零来说是对称的。假定机器数为n位,原码和反码的数的表示范围都是2n-112n-1+1补码的表示范围不对称,负数表示的范围较正数宽,能多表示一个最小负数:-2n-1。,2.2 非数值数据的编码,2.2.1
16、数字的编码 2.2.2 西文字符的编码 2.2.3 汉字的编码,2.2.1 数字的编码,8421码,也称自然(Nature)BCD码,常记为NBCD码。,0 0000 0000 0000 0000 0000 1 0001 0001 0001 0111 0001 2 0010 0010 0011 0110 0011 3 0011 0011 0101 0101 0100 4 0100 0100 0111 0100 1000 5 0101 1011 1000 1011 0111 6 0110 1100 1010 1010 1011 7 0111 1101 1100 1001 1100 8 1000
17、1110 1110 1000 1110 9 1001 1111 1111 1111 1111,2.2.2 西文字符的编码,ASCII码(美国标准信息交换码American Standard Cord for Information Interchange): (1)每个字符都由七个二进位表示,最高位置0。 (2)共有128种编码,用来表示128个不同的字符,其中包括10个数字、26个小写字母、26个大写字母、算术运算符、标点符号、商业符号等。表中共有95个可打印(或显示)字符和33个控制字符。表中第0列和第1列以及第7列最末一个字符(DEL)称为控制字符,共33个,它们在传输、打印或显示输出时起控制作用。,2.2.3 汉字的编码,自学,作业,P22 2.1、2.2,