1.4 常用编码方案
1.4.1 BCD码
在日常生活中,我们使用十进制数字,二进制编码十进制(Binary-Coded Decimal,BCD)采用4位二进制码来表示十进制数中的0~9这10个数码。BCD码有很多种形式,如8421码、余3码、5421码和2421码等,其中,8421码应用最为广泛,它与十进制的对应关系见表1-2。
【例1-8】 将345转换为BCD码。
根据表1-2,345对应的BCD码为(001101000101)。
【例1-9】 将BCD码(010100010010)转换为十进制数,从右向左每4位分隔开,
并用BCD码替换对应的十进制数,结果为512。
表1-2 BCD码与十进制的对应关系
1.4.2 ASCII码
由于计算机只能识别二进制数字(0或1),因此必须将所有信息(如数字、字母和符号)表示为二进制数。一种常用的字符信息编码是美国信息交换标准编码(American Standard Code for Information Interchange,ASCII)。
在ASCII码中,每个字符都有一个7或8位二进制数组合的表示形式,其中最高有效位用于奇偶校验位。表1-3为ASCII码及对应的十六进制值。十六进制00~1F以及7F对应的字符是控制字符,为不可打印字符,如NUL、SOH、STX、ETX、ESC、DLE等。
表1-3 ASCII码及对应的十六进制值
【例1-10】 将单词“Network”转换为二进制,并以十六进制显示结果。
通过使用表1-3,每个字符由7位二进制数组合表示,结果如下。
以十六进制显示结果为
1.4.3 Unicode
Unicode是一种新的编码标准,共有3种具体实现方式,分别为UTF-8、UTF-16和UTF-32。其中,UTF-8占用1~4个字节,UTF-16占用2或4个字节,UTF-32占用4个字节。用于表示大多数语言(如希腊语、阿拉伯语、中文和日语)中的字符和数字。ASCII码使用7或8位二进制数组合表示拉丁语中的每个字符,一共可表示256个字符,但不支持数学符号和科学符号。Unicode使用16位二进制数组合时,可以表示65 536个字符或符号。Unicode中的字符由16位二进制数组合表示,相当于十六进制的4位数字。例如,Unicode中的字符B用十六进制表示是U0042(U表示Unicode)。ASCII码在(00)16到(7F)16之间表示。为了将ASCII码转换为Unicode,在ASCII码的左侧添加两个0,因此,表示ASCII字符的Unicode在(0000)16到(007F)16之间。
1.4.4 非ASCII码
英语用128个符号编码就够了,但是表示其他语言时,128个符号是不够的。我国于1980年制定了GB1988—80《信息处理交换用七位编码字符集》,除了用人民币符号¥代替美元符号$外,其余代码与ASCII码相同。当然,除了国家标准GB1988—80,我国还制定了GB2312《信息交换用汉字编码字符集 基本集》,使用两个字节表示一个汉字,所以理论上最多可以表示65 536个符号。