1、第二章 数据的表示2.2数值数据的编码表示2.2.1 数制及数制转换2.2.1数制及数制转换 十进制数的表示有以下规则:表示数值时,除了正负符号,采用09这10个数字符号。一个十进制数表示为多个数字符号的排列,数字符号的位置称为位序号n,小数点往左边算,位序号是0、1依次类推;小数点往右算,位序号是-1,-2。处于不同位置的数字符号代表的数值不一样,是该数字符号乘以该位的权数的结果,权数就是10的n次幂。各位数字符号的数值累加总和就是这个十进制数的实际值。2.2.1数制及数制转换 在数字系统中,若采用R个基本符号(0,1R-1)表示各位上的数字,则称其为基R数制,或称R进制数字系统。R称为该数
2、字系统的基,对每个数位i,该位上的权为Ri 一般地,在R进制下,数xnxn-1x1x0.x-1x-2x-m所代表的值可表示为:xnRn+xn-1Rn-1+x1R1+x0R0+x-1R-1+x-2 R-2x-mR-m 其中,R称为基数,各位数字xi(i=n,n-1.1,0,-1,-2.-m),取值范围在0到R-1之间。计算机系统中,常用的几种计数制有二进制、八进制、十六进制。2.2.1数制及数制转换(1)二进制 在计算机中,数据都采用二进制或二进制编码的形式存在,这是因为计算机中的数以数字电路的物理状态来表示。数字电路的输入或输出只有两种电平,高电平用“1”来表示,低电平用“0”来表示。二进制是
3、采用0和1两个符号表示数值。二进制的基数是2。为了区别二进制和十进制数 二进制书写上采用下标2,或者用后缀字母B标识。如(1011)2,或者1011B。十进制书写上采用下标10,或者用后缀字母D标识,或者默认为十进制。如(1011)10,或者1011D。多位二进制数据中的每一个记数符号的权值是2n,n是该位的位序号。2.2.1数制及数制转换 例例2-1二进制数01001111B的数值为多少 解:027+126+025+024+123+122+121+120=126+123+122+121+120=792.2.1数制及数制转换 (2)八进制和十六进制 二进制便于在计算机内部存储和计算,但是表示数
4、据时位数较多,不便于人们书写和记忆。为此,在开发程序、调试程序、阅读程序时,为了书写和阅读方便,经常使用八进制或十六进制数。八进制数采用07这8个记数符号,基数是8。书写上采用下标8,或者用后缀字母O(为了和0区别,也可用Q)标识。如(1011)8,或者1011Q。多位八进制数据中的每一个记数符号的权值是8n,n是该位的位序号。例例2-2八进制数1011Q的数值为多少?解:1011Q=183+082+181+180=521。2.2.1数制及数制转换 (2)八进制和十六进制 十六进制采用09,AF这16个记数符号,基数是16。书写上采用下标16,或者用后缀字母H标识。如(1011)16,或者10
5、11H。由于十六进制数中出现了字母符号,为了和计算机中的字符串区分,以字母符号开始的十六进制数,前面写个0。多位十六进制数据中的每一个记数符号的权值是16n,n是该位的位序号。例例2-3 十六进制数1011H的数值为多少?解:1011H=1163+0162+1161+1160=4113。(3)进制的运算规则两个十进制数相加时,逢10进1;两个十进制数相减时,借1当10。两个二进制数相加时,逢2进1;两个二进制数相减时,借1当2。两个八进制数相加时,逢8进1;两个八进制数相减时,借1当8。两个十六进制数相加时,逢16进1;两个十六进制数相减时,借1当16。进制的运算规则 例例2-4N1=0101
6、0011B,N2=00100100B。计算N1+N2,N1-N2。解:N1+N2=01110111。N1-N2=00101111。进制的运算规则 例例2-5N1=0BBH,N2=3AH。计算N1+N2,N1-N2。解:N1+N2=0F5H。N1-N2=81H。四种进位制数之间的对应关系表十进制二进制八进制十六进制00000001000111200102230011334010044501015560110667011177810001089100111910101012A11101113B12110014C13110115D 14111016E15111117F2.2.1数制及数制转换 二进制
7、:基本符号01。R=2,每位权为2i。逢2进1,借1当2。书写为()2,或跟字母B。八进制:基本符号07,R=8,每位权为8i。逢8进1,借1当8,书写为()8,或跟字母O或Q。十六进制:基本符号0F,R=16,每位权为16i。逢16进1,借1当16,书写为()16,或跟字母H。(4)进制的转换 1)R进制转换为十进制:位权相加法 任何一个进制的数转换成十进制数,只要将每位记数符号乘以该位的权值,再求和。例例2-6(10101.01)2=()10 解:(10101.01)2=(124+122+120+12-2)10=(21.25)10 例例2-7(37.6)8=()10 解:(37.6)8=(
8、381+780+68-1)10=(31.75)10 例例2-8(3A.C)16=()10 解:(3A.C)16=(3161+10160+1216-1)=(58.75)10进位制数之间的转换 十进制数转换为R进制数 整数部分:除基取余,上右下左 用要转换的十进制数去除以基数R,得到的余数作为结果数据中各位数字,直至余数为0。先得到的余数作为低位,后得到的余数作为高位。小数部分:乘基取整,上左下右 用要转换的十进制小数去乘以基数R,得到的乘积整数部分作为结果数据中各位的数字,小数部分继续与基数R相乘,直至乘积小数部分为0或得到希望的小数位数为止。先得到的乘积整数部分为高位,后得到的为低位。含整数、
9、小数部分的数转换:分别转换整数、小数部分再组合例2-9(835.6875)10=()2=()16(835.6875)10=(1101000011.1011)2(835.6875)10=(343.B)16进位制数之间的转换 二、八、十六进制数的相互转换 以小数点为界。整数部分从低位向高位,小数部分从高位向低位 每一个八进制数字和三位二进制数等值改写即可 每一个十六进制数字和四位二进制数等值改写即可例2-10将八进制13.724转换为二进制。(13.724)8=(001011.111010100)2例2-11将十六进制数2B.5E转换为二进制(2B.5E)16=(00101011.01011110)2例2-12将二进制数11001.11转换为十六进制数(11001.11)2=(19.C)16