计算机中的数制和编码.ppt
第二章 数的表示和字符编码方式,2.1 数制 不同进制数的相互关系和转换,2.2 码制 字符的常用编码,2.3 有符号数的表示,2.4 定点数与浮点数,2.1 数制 不同进制数的相互关系和转换,一、计数制,十进制数的计数方法,例:427=410221017100,1、有十个符号:0、1、2、9,2、每个符号所代表的数与所处位置有关,3、遵从“逢十进一”的规则,基=10,权,十进制数,八进制数,十六进制数,二进制数,R=10,=0、1、2、9,n为整数位数,m为小数位数,N=,R=2,R=8,R=16,=0、1,=0、1、2、7,=0、1、2、9、A、B、C、D、E、F,任意进制数的构造,二、不同进制数的相互转换,二进制数转换成十进制数,例:(10010011)2=()10,27,24,21,20,128+16+2+1=147,147,按权展开,乘权相加,整数部分,二、不同进制数的相互转换,二进制数转换成十进制数,例:(0.10011)2=,2-1,2-4,2-5,0.5+0.0625+0.03125=0.59375,(0.59375)10,按权展开,乘权相加,小数部分,二、不同进制数的相互转换,十进制数转换成二进制数,整数,例:(307)10=()2,100110011,除二取余,二、不同进制数的相互转换,十进制数转换成二进制数,小数,例:(0.625)10=()2,0.101,乘二取整,0.625,2,1.250,2,0.500,2,1.000,1,0,1,1.26,注意:并非所有的十进制小数都能用有限位的二进制小数来表示。例2.将(0.63)10转换为二进制。,2,2,0.52,2,1.04,2,0.08,(低位),(0.63)10(0.1010)2,0.63,(高位),因为小数部分乘以 2 会无限循环下去,故取近似值。“0舍1入”,二进制、八进制、十六进制转换成十进制-按权展开相加例:(101.101)2=122+021+120+12-1+02-2+12-3=(5.625)10(34.6)8=381+480+68-1=(28.75)10(2AB.C)16=2162+10 161+11 160+12 16-1=512+160+11+0.75=(683.75)10,二、不同进制数的相互转换,二、不同进制数的相互转换,二进制数与八进制数、十六进制数之间的相互转换,8=23,16=24,三位二进制数对应一位八进制数,四位二进制数对应一位十六进制数,方法简便,二进制,八进制,以小数点为中心,整数部分从低位向高位(即从右向左)每三位用一个八进制数来表示,最后一组不足三位时,用 0 补齐;小数部分从高位向低位(即从左向右)每三位用一个八进制数来表示,最后不足三 位时,用0补齐。,将(16.327)8转换为二进制数。(16.327)8(001 110.011 010 111)2 1 6.3 2 7(1110.011010111)2,例如:,二进制,十六进制,以小数点为中心,整数部分从低位向高位(即从右向左)每四位用一个十六进制数来表示,最后一组不足四位时,用 0 补齐;小数部分从高位向低位(即从左向右)每四位用一个十六进制数来表示,最后不足四 位时,用 0 补齐。,将2转换为十六进制数。(1110 0101 1010.1011 1001)2 E 5 A.B 9(E5A.B9)16,例如:,常用不同进制数在书写时的表示方法,10011100B B 二进制数,337Q Q 八进制数,4B7DH H 十六进制数,1339D D 十进制数1339 十进制数,2.2 码制 字符的常用编码,一、BCD码(二十进制数),编码方式:用四位二进制数表示一位十进制数,0000,0101,0001,0100,0011,0010,0110,0111,1001,1000,01234,56789,1010,1011,1100,1101,1111,1110,丢弃不用,一、BCD码(二十进制数),组合式BCD码:一个字节(8位)为2位BCD码,(01101001)BCD=(69)10,(8)10,(00001000),非组合式BCD码:一个字节(8位)为1位BCD码,1、BCD码实际上是十进制数(不是二进制数)2、BCD码转换成二进制数应按十进制数向二进制数转换的办法进行,二、ASCII码(美国标准信息交换码),10个数字:0926个大写字母:AZ26个小写字母:az32个可打印字符34个不可打印字符,共128个字符,西文字符在计算机中的表示,ASCII码的代码组成结构,b7 b6 b5 b4 b3 b2 b1 b0,高3位,低4位,最高位,bi=0或1(i=06)共有27=128种不同的表示。微机中一个字节是8位,尽管ASCII码只用了低7位,在计算机中一个ASCII字符仍用一个字节(8bit)的空间来存放,最高位保持为“0”,0,常用的ASCII码(需要记住),0011 0000B 30H 00011 0001B 31H 1 0011 0111B 37H 70011 1000B 38H 80011 1001B 39H 9,0100 0001B 41H A0100 0010B 42H B0100 0011B 43H C 0110 0001B 61H a0110 0010B 62H b0110 0011B 63H c,00001000B 0AH 换行LF00001011B 0DH 回车CR0010 0000B 20H 空格SP,三、汉字的编码,西文字符的结构决定了它只要128个ASCII字符就能够满足计算机进行信息处理的需要。而中文字符有数万之众,为了适应计算机处理汉字信息的需要,1981年我国颁布了“信息交换用汉字编码字符集 基本集”(GB2312-80)供汉字信息在不同的计算机系统之间交换信息使用,该标准称为“国标码”。,汉字编码字符集,国标码(GB2312-80)的组成及结构,组成:(共7445个字符)字母、数字和符号:682个 一级常用字:3755个(按音序排列)二级常用字:3008个(按偏傍部首)结构:码表共分为94行(十进制编号093)和94 列(十进制编号093),行号称为区号,列号称为位号,每个汉字或字符在码表中所处的区和位构成该汉字的“区位码”。,每个汉字用二个字节来表示(16位)每个字节只用7位,最高位为0,区位码、国标码、机内码,用字符所在的区号(高字节)和位号(低字节)的二进制代码来表示,称为该汉字的区位码。将每个汉字的区号和位号加上32之后,相应的二进制代码就是国标码.为了与ASCII码区别开来,将汉字的国标码的高字节和低字节的最高位置“1”。这种双字节(16)位的汉字编码,称为汉字机内码。,区位码、国标码、机内码的用途及相互关系,区位码:是外码,主要用于汉字输入。国标码:是内码,主要用于不同汉字系统之间的 传输和交换。机内码:是内码,主要用于计算机内部的存储和 处理。三者之间的关系如下:Q+32=G Q+20H=G G+128=J G+80H=J Q+160=J Q+A0H=J,十进制表示,十六进制表示,1.正整数(无符号整数)一台计算机所表示的数的范围与其字长有关 8位字长:028-1(0255)16位字长:0216-1(065535)32位字长:0232-1,2.3 有符号数的表示,一、机器数与真值,数值在计算机内如何表示?,2.有符号整数一般使用最高位(最左边的一位)作为其符号位,而且用“0”表示正数,“1”表示负数。如:+43=00101011-43=10101011,机器数:带有数码化正负号的数,真值:机器数所代表的实际数值,真值 机器数,真值 机器数,3、有符号数的三种表示方法,+43=00101011-43=10101011,原码表示方法,反码表示方法,+43=00101011-43=11010101,补码表示方法,+43=00101011-43=11010100,正数相同,负数不同,(负数是原码求反),(负数是原码求反加1),二进制数 无符号整数 原码 反码 补码 00000000 0+0+0 0 00000001 1+1+1+1 01111110 126+126+126+126 01111111 127+127+127+127 10000000 128-0-127-12810000001 129-1-126-127 11111110 254-126-1-211111111 255-127-0-1,用原码或反码时,0的表示有+0和-0之分-0原=10000000+0原=00000000-0反=11111111+0反=00000000 用补码时,0的表示是唯一的 0补=00000000,采用补码表示后,可表示有符号数的范围如下:8位字长:-27+1+27-1(-128+127)16位字长:-215+1+215-1(-32768+32767)32位字长:-231+1+231-1,如表示一个无符号数,8位字长可表示范围为 0255 16位字长可表示范围为 065535,2.3 有符号数的表示,X+Y补=X补+Y补,X-Y补=X补-Y补=X补+-Y补,正数的补码就是它的原码,负数的补码是对应正数的补码求补,采用补码可以将加法和减法统一为加法,基本运算规则,二、补码的运算,例:33+15=48,例:-33-15=-48,例:33-15=18,例:-33+15=-18,00100001 33补,00100001 33补,11011111-33补,11011111-33补,11110001-15补,+00001111 15补,00001111 15补,11110001-15补,00110000 48补,100010010 18补,11101110-18补,111010000-48补,+,+,+,三、补码运算的溢出问题,运算结果超出有符号数的可表示范围,称为溢出,例:33+96=129,00100001 33补,01100000 96补,10000001-127补,例:-33-96=-129,11011111-33补,10100000-96补,101111111 127补,溢出产生的原因和判断,在运算过程中,由于次高位向最高位进位,而最高位没有发生进位或最高位发生进位,而次高位未向最高进,造成最高位(符号位)发生不应有的变化,均会溢出,可能发生溢出的情况:同号数相加,异号数相减,解决溢出的办法:1、增加字长 2、采用浮点数,2.4 定点数与浮点数,在讨论用机器数表示数的范围问题上,主要涉及二个问题:1、被表示的数的绝对值的大小 2、被表示的数的有效数字的多少,试比较下面二组数字:3102 和 31032 3.14 和 3.14159265,用科学计数法表示:N=2PS,S 尾数(N的全部有效数字)P 阶码(指明小数点的位置)P和S均用二进制数表示,2为阶码的底,定点数:小数点位置固定不变,P=0,浮点数:小数点位置随P可变,P有一定的取值范围,一、定点数,整数表示法:,小数表示法:,S,S,Sf,Sf,小数点,小数点,例:01100000 表示96,例:01100000 表示0.75,数符,尾数,可表示范围为+127/128-1,1110000 表示-32(补码),11100000 表示-0.25(补码),二、浮点数,阶码和尾数可以采用不同的码制,由机器决定。,S,P,Sf,Pf,数符,尾数,阶码,阶符,阶码常用补码表示,尾数常为用原码表示的纯小数,且最高位为1。,例:用一个字节浮点数表示(-10.01)2,阶符1位,阶码2位,数符1位,尾数4位,阶码用补码表示,尾数用原码表示。请写出这个规格化的浮点数。,解:(一)、规格化(-10.01)2=(-0.1001)2 2(10)2,(二)、尾符1,尾数1001(原码),(三)、阶符0,阶码10,0,1,1 0,1 0 0 1,