1.1进制转换及计算1.2码制及其转换第一章进制与码元为什么要学习进制及码元?我们日常生活中也有许多不同的进制数据,最常用的是十进制,秒分时之间是六十进制,年月之间是十二进制,古代的钱两斤之间是十六进制。计算机内采用的是二进制数值或编码。不论是数值、字符、图形、图像、声音等,任何信息数据在计算机内均是用0和1表示。而在各种汇编语言中习惯使用十六进制,也可使用八进制、二进制和十进制。C语言等高级语言中也可使用二进制、八进制、十六进制和十进制。特别是调试程序时更要与进制和码元换算打交道。所以,能够快速的进行进制和码元的换算,对学好有关计算机课程特别汇编、微机原理及接口技术至关重要。1、进制相关概念进制基数码位权规则尾缀英语单词二20、12i逢二进一BBinary八80-78i逢八进一O或QOctal十100-910i逢十进一D或省略Decimal十六160-9A-F16i逢十六进一HHex1.1进制转换及计算十六进制(H)十进制(D)八进制(Q)二进制(B)000000011100012220010333001144401005550101666011077701118810100099111001A10121010B11131011C12141100D13151101E14161110F15171111各种数制对照表2、进制的一般转换方法按位(权)展开求累加和任意进制十进制整数:除基取余,逆写小数:乘基取整,顺写图1.1任意进制与十进制之间转换关系图一展三四合一八进制二进制十六进制三合一一展四图1.2二、八、十六进制之间转换关系图非十进制数转十进制数:1011.11B=1×23+0×22+1×21+1×20+1×2-1+1×2-2=8+2+1+0.5+0.25=11.755B.8H=5×161+11×160+8×16-1=80+11+0.5=91.5一般进制转换举例十进制到非十进制数转换:二、八、十六进制转换:11001.1B=31.4Q=19.8HCA.6AH=11001010.0110101B=312.324Q3、进制快速转换方法(一)十进制转换为十六进制只要把它拆成16的倍数之和,各项直接对应成十六进制再求和即可(注:有时视情况可用16的倍数之差)。再利用一展四转化为二进制,而后再用三合一转化为八进制。十进制十六进制拆成十六的倍数之和16的倍数求和16的倍数(详见表1.1)16*1=1610H16*2=3220H16*3=4830H16*4=6440H16*5=8050H16*6=9660H16*7=11270H16*8=12880H16*9=14490H16*10=160A0H16*11=176B0H16*12=192C0H16*13=208D0H16*14=224E0H16*15=240F0H1*16*16=256100H2*16*16=512200H3*16*16=768300H4*16*16=1024(1K)400H8*16*16=2048(2K)800H1*16*16*16=4096(4K)1000H2*16*16*16=8192(8K)2000H进制快速转换举例例1.5:280=256+16+8=118H=100011000B=430Q例1.6:2000=1024+768+208或=2048-48=800H-30H=7D0H=11111010000B=3720Q例1.7:5000=4096+768+128+8=1388H=1001110001000B=11610Q十进制转换为二进制只要把它拆成2的n次方之和,有n次方的二进制位写1,无n次方的二进制位写0即可(注:有时视情况可用2的n次方之差)。再利用四合一转化为十六进制,而后再用三合一转化为八进制。十进制二进制拆成2的n次方之和进制快速转换方法(二)2的指数2-4=0.06252-3=0.1252-2=0.252-1=0.520=121=222=423=824=1625=3226=6427=12828=25629=512210=1K(1024)211=2048212=4096214=16K216=64K220=1M(1024K)224=16M230=1G(1024M)240=1T(1024G)进制快速转换举例例1.8:280=28+24+23=100011000B=118H=430Q例1.9:2000=210+29+28+27+26+24=11111010000B=7D0H=3720Q=211-25-24例1.10:5000=212+29+28+27+23=1001110001000B=1388H=11610Q4、进制算术、逻辑运算进制计算主要有加减乘除等算术运算和与或非等逻辑运算。其它进制加减乘除等算术运算的运算方法与十进制的运算方法并没有什么大的不同。要点是N进制的运算是“逢N进一”、“借一等于N”与、或、非等逻辑运算一般是指二进制的位逻辑运算,将1当成真,将0当成假,与、或、非的真值表如图所示。A与BA或B非AAB01000101AB01001111A0110A1、BCD码(用二进制编码表示的十进制数)BCD码种类非常多,有8421、2421、余3等BCD码,用的最多的是8421BCD码1.2码制及其转换十进制BCD码十进制BCD码0000010000100001000111000100012001012000100103001113000100114010014000101005010115000101016011070111810009100120BCD码:用二进制代码对十进制数进行编码,它既具有二进制码的形式(四位二进制码),又有十进制数的特点(每四位二进制码是一位十进制数)。二进制数与BCD码之间的转换,需经过十进制。21例1:十进制数256,BCD码为(256)D=(001001010110)BCD例2:十进制数0.764,BCD码为(0.764)D=(0.011101100100)BCDBCD码(例)例3:BCD码转换为十进制数(011000101000.100101010100)BCD=(628.954)D例4:二进制数转换为BCD码(1011.01)B=(1x23+0x22+1x21+1x20+0x2-1+1x2-2)D=11.25D=(00010001.00100101)BCD8421BCD码,又分为压缩BCD码和非压缩BCD码压缩BCD码是用4位二进制表示一位十进制、一个字节可以表示两位十进制(00-99)非压缩BCD码是用8位二进制表示一位十进制、高4位无效、一个字节只能表示一位十进制(0-9),高4位为0时则叫标准非压缩BCD码高4位低4位十位个位压缩BCD码高4位低4位0000个位标准非压缩BCD码例:压缩BCD码:01100010表示(62)D非压缩BCD码:0000011000000010表示(62)D23美国国家信息交换标准码,ASCII码(AmericannationalStandardCodeforInformationInterchange)7位ASCII码表示27=128种不同的字符,包括:可显示字符(94个):阿拉伯数字(10个):0~9英文大小写字母(52个):A~Z,a~z西文符号(32个):如!,,},….等控制符(34个):如NUL(空白),CR(回车),…等2、ASCII码24高位低位0123456700000101001110010111011100000NUL空白DLE数据链换码SP空格0@P、p10001SOH标题开始DC1设备控制1!1AQaq20010STX文本开始DC2设备控制2”2BRbr30011ETX文本结束DC3设备控制3#3CScs40100EOT传输结束DC4设备控制4$4DTdt50101ENQ询问NAK否定应答%5EUeu60110ACK应答SYN空转同步&6FVfv70111BEL报警符ETB信息组传输结束’8GWgw81000BS退一格CAN删去符(8HXhx91001HT横向列表EM信息结束)9IYiyA1010LF换行SUB减*:JZjzB1011VT垂直列表ESC换码+;K[k{C1100FF走纸控制FS文件分隔符,L\l|D1101CR回车GS组分隔符-=M]m}E1110SO移位输出RS记录分隔符.Nn-F1111SI移位输入US单元分隔符/?OoDEL作废字符7位ASCII码表至少要记住其中的7个字符的ASCII码值如表所示:‘0’-‘9’的ASCII码依次加1,‘A’-‘Z’的ASCII码依次加1,‘a’-‘z’的ASCII码也是依次加1所以记住‘0’、‘A’、‘a’的ASCII码实质上是记住了62个字符的ASCII码字符ASCII码十进制值ASCII码十六进制值LF(换行)100AHCR(回车)130DHSP(空格)3220H‘$’3624H‘0’4830H‘A’6541H‘a’9761H‘0’-‘9’的ASCII码是一种特殊的非压缩BCD码。例如:‘35’的ASCII码是3335H(35)10的非压缩BCD码即3335H3、汉字内码汉字在计算机及相关设备内存储、处理、传输所用的编码叫汉字内码汉字内码目前主要有三种:国标内码GB2312-80,占两个字节繁体汉字区的大五码BIG5,占两个字节世界语的统一码UCS(CJK),占四个字节GB2312-80汉字标准我国目前主要采用的是国标内码(GB2312),它在计算机内占用两个字节,每个字节的最高位为1,最多可表示214=16384个可区别的码与国标区位码的计算关系为:国标内码=国标码(16进制)+8080H=国标区位码(16进制)+A0A0H一级汉字3755个、按拼音顺序排列,占16区到55区二级汉字3008个,按编傍笔画数排列,占56区到87区字符682个,占1区到14区88区到94区允许自造字存放区4、原码、反码和补码原码、反码、补码是用来表示有符号数的原码是在原数的绝对值的二进制数据位在最高位置符号位即负为1、正为0而得到正数的反码、补码与原码相同负数的反码为原码的符号位不变其它位变反而得,负数的补码为原码的符号位不变其它位变反+1而得负数三码之间的转换关系原值原码符号位不变其它位变反+1补码+1-1符号位不变其它位变反反码图1.7负数的原、反、补码之间转换关系图原、反、补码的一般求法例1.11:(8位二进制的原、反、补码)-107=-6BH=-1101011B=11101011B(原)=EBH(原)=10010100B(反)=94H(反)=10010101B(补)=95H(补)107=6BH(原)=6BH(反)=6BH(补)原码和反码在计算机内很少采用而主要使用的补码。所以我们主要要撑握原值与补码之间的快速转换方法原值与补码(无符号数)之间的直接转换正数的原值与补码(无符号数)完全相同负数的原值与补码(无符号数)之间的直接转换方法如1.7图所示:(0在用n位二进制补码表示时也代表2n)0-|X|原值X补码Y(有符号数)-(0-Y)(无符号数)图1.8负数的原值与补码之间转换关系图8位二进制原值与补码举例20=14H(补)=20(无)-5=0-5=00H-05H=FBH(补)=251(无)-120=0-120=00H-78H=88H(补)=136(无)F8H(补)=248(无)=-(00H-F8H)=-08H=-(256-248)=-8(有)5CH(补)=92(无)=92(有)0在用n位二进制补码表示时也代表2n16位二进制原值与补码举例20=0014H(补)=20(无)-5=0-5=0000H-0005H=FFFBH(补)=65531(无)=65536-5-120=0-120=0000H-0078H=FF88H(补)=65416(无)=65536-120