计算机常用的编码
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1.ASCII码我们知道,在计算机内部,所有的信息最终都表示为一个二进制的字符串。每
一个二进制位(bit)有0和1两种状态,因此八个二进制位就可以组合出256种状态,这被称为一个字节(byte)。也就是说,一个字节一共可以用来表示256种不同的状态,每一个状态对应一个符号,就是256个符号,从0000000到11111111。上个世纪60年代,美国制定了一套字符编码,对英语字符与二进制位之间的关系,做了统一规定。
这被称为ASCII码,一直沿用至今。ASCII码一共规定了128个字符的编码,比如空格“SPACE”是32(二进制00100000),大写的字母A是65(二进制01000001)。这128个符号(包括32个不能打印出来的控制符号),只占用了一个字节的后面7位,最前面的1位统一规定为0。
2.2、非ASCII编码英语用128个符号编码就够了,但是用来表示其他语言,128个符号
是不够的。比如,在法语中,字母上方有注音符号,它就无法用ASCII码表示。于是,一些欧洲国家就决定,利用字节中闲置的最高位编入新的符号。比如,法语中的é的编码为130(二进制10000010)。这样一来,这些欧洲国家使用的编码体系,可以表示最多256个符号。但是,这里又出现了新的问题。不同的国家有不同的字母,因此,哪怕它们都使用256个符号的编码方式,代表的字母却不一样。比如,130在法语编码中代表了é,在希伯来语编码中却代表了字母Gimel (ג),在俄语编码中又会代表另一个符号。但是不管怎样,所有这些编码方式中,0—127表示的符号是一样的,不一样的只是128—255的这一段。至于亚洲国家的文字,使用的符号就更多了,汉字就多达10万左右。一个字节只能表示256种符号,肯定是不够的,就必须使用多个字节表达一个符号。
比如,简体中文常见的编码方式是GB2312,使用两个字节表示一个汉字,所以理论上最多可以表示256x256=65536个符号。中文编码的问题需要专文讨论,这篇笔记不涉及。这里只指出,虽然都是用多个字节表示一个符号,但是GB类的汉字编码与后文的Unicode和UTF-8是毫无关系的。
3.二进制转十进制,十进制转二进制的算法十表1二进制数和十进制数换算对照表
二进制十进制二进制十进制二进制十进制二进制十进制0000 0 0011 3 0110 6 1001 9 0001 1 0100 4 0111 7 1010 10 0010 2 0101 5 1000 8 1011 11 采用“二进制数”的算术运算也比较简单,制造成本更经济。二进制的加法运算和乘法运算公式都各有四条规则:加法有0+0=0,0+1=1,1+0=1,1+1=10;乘法有0*0=0,0*1=0,1*0=0,1*1=1,而十进制的加法和乘法运算公式从0+0开始到9+9,从0*0开始到9*9各需规则100条2.二进制代码电子计算机中的数是用二进制表示的,在计算机中也采用二进制代码表示字母、数字字符、各种各样的符号、汉字等。在处理信息的过程中,可将若干位的二进制代码组合起来表示各种各样的信息。但由于二进制数不直观,人们在计算机上实际操作时,输入、输出的数使用十进制,而具体转换成二进制编码的工作则由计算机软件系统自动完成。字母和各种字符在计算机中的传输普遍采用Ascll码(American Standard Code For lnformation lnterchange),即美国标准信息交换码,它用了7位二进制数来表达字母和各种常用字符(见附录)。对于汉字信息的表示比较复杂,我国有汉字几万个,常用的汉字也有7000多个,为了统一,我国制定了汉字编码标准,规定了一、二级汉字共6763个,用两个字节(16位二进制代码)来表示一个汉字进制转二进制:用2辗转相除至结果为1 将余数和最后的1从下向上倒序写就是结果例如302 302/2 = 151 余0 151/2 = 75 余1 75/2 = 37 余1 37/2 = 18 余1 18/2 = 9 余0 9/2 = 4 余1 4/2 = 2 余0 2/2 = 1 余0 故二进制为100101110 二进制转十进制从最后一位开始算,依次列为第0、1、2...位第n位的数(0或1)乘以2的n次方得到的结果相加就是答案例如:01101011.转十进制: 第0位:1乘2的0次方=1 1乘2的1次方=2 0乘2的2次方=0 1乘2的3次
方=8 0乘2的4次方=0 1乘2的5次方=32 1乘2的6次方=64 0乘2的7次方=0 然后:1+2+0 +8+0+32+64+0=107.二进制01101011=十进制107.一、二进制数转换成十进制数由二进制数转换成十进制数的基本做法是,把二进制数首先写成加权系数展开式,然后按十进制加法规则求和。这种做法称为"按权相加"法。二、十进制数转换为二进制数十进制数转换为二进制数时,由于整数和小数的转换方法不同,所以先将十进制数的整数部分和小数部分分别转换后,再加以合并。
1. 十进制整数转换为二进制整数十进制整数转换为二进制整数采用"除2取余,逆序排列"法。具体做法是:用2去除十进制整数,可以得到一个商和余数;再用2去除商,又会得到一个商和余数,如此进行,直到商为零时为止,然后把先得到的余数作为二进制数的低位有效位,后得到的余数作为二进制数的高位有效位,依次排列起来。2.十进制小数转换为二进制小数十进制小数转换成二进制小数采用"乘2取整,顺序排列"法。具体做法是:用2乘十进制小数,可以得到积,将积的整数部分取出,再用2乘余下的小数部分,又得到一个积,再将积的整数部分取出,如此进行,直到积中的小数部分为零,或者达到所要求的精度为止。然后把取出的整数部分按顺序排列起来,先取的整数作为二进制小数的高位有效位,后取的整数作为低位有效位。
1.二进制与十进制的转换(1)二进制转十进制
方法:"按权展开求和" 例:(1011.01)2 =(1×23+0×22+1×21+1×20+0×2-1+1×2-2)10 =(8+0+2+1+0+0.25)10 =(11.25)10 (2)十进制转二进制·十进制整数转二进制数:"除以2取余,逆序输出" 例:(89)10=(1011001)2 2 89 2 44 ……
1 2 22 ……0 2 11 ……0 2 5 …… 1 2 2 …… 1 2 1 ……0 0 ……
1 ·十进制小数转二进制数:"乘以2取整,顺序输出" 例:(0.625)10= (0.101)
2 0.625 X 2 1.25 X 2 0.5 X 2 1.0
2.八进制与二进制的转换例:将八进制的37.416转换成二进制数:37 .4 1 6 011 111 .100 001 110 即:(37.416)8 =(11111.10000111)2 例:将二进制的10110.0011 转换成八进制:0 1 0 1 1 0 . 0 0 1 1 0 0 2 6 . 1 4 即:(10110.011)2 =(26.14)8 3.十六进制与二进制的转换
例:将十六进制数5DF.9 转换成二进制:5 D F .9 0101 1101 1111.1001 即:(5DF.9)16 =(10111011111.1001)2 例:将二进制数1100001.111 转换成十六进制:0110 0001 .1110 6 1 . E 即:(1100001.111)2 =(61.E)16