☆二-十进制BCD码(Binary-Coded
Decimal)
二-十进制BCD码是指每位十进制数用4位二进制数编码表示。由于4位二进制数可表示16种状态,可丢弃最后6种状态,而选用0000~1001来表示0~9十个数符。这种编码又叫做8421码,见表1.2.3。
这里要注意,两位十进制数是用8位二进制数并列表示,它不是一个8位二进制数。如25的BCD码是00100101,而二进制数(00100101)B=25+22+1=(37)D。
表1.2.3 十进制与BCD码的对应关系
十进制数 |
BCD码 |
十进制数 |
BCD码 |
0 |
0000 |
10 |
00010000 |
1 |
0001 |
11 |
00010001 |
2 |
0010 |
12 |
00010010 |
3 |
0011 |
13 |
00010011 |
4 |
0100 |
14 |
00010100 |
5 |
0101 |
15 |
00010101 |
6 |
0110 |
16 |
00010110 |
7 |
0111 |
17 |
00010111 |
8 |
1000 |
18 |
00011000 |
9 |
1001 |
19 |
00011001 |
- |
- |
20 |
00010000 |
☆字符编码
字符是计算机中使用最多的信息形式之一,是人与计算机进行通信、交互的重要媒介。在计算机中,要为每个字符指定一个确定的编码,作为识别与使用这些字符的依据。而这些编码的值,又是用一个定位数的二进制码进行再编码给出的。
1)ASCII码
使用得最多、最普遍的是ASCII(American Standard Code for Information
Interchange)字符编码,即美国信息交换标准代码,如表1.2.4所示。
表1.2.4 七位ASCII代码表
d3d2d1d0位 |
d6d5d4位 |
000 |
001 |
010 |
011 |
100 |
101 |
110 |
111 |
0000 |
NUL |
DLE |
SP |
0 |
@ |
P |
` |
p |
0001 |
SOH |
DC1 |
! |
1 |
A |
Q |
A |
q |
0010 |
STX |
DC2 |
" |
2 |
B |
R |
B |
r |
0011 |
ETX |
DC3 |
# |
3 |
C |
S |
C |
s |
0100 |
EOT |
DC4 |
$ |
4 |
D |
T |
D |
t |
0101 |
ENQ |
NAK |
% |
5 |
E |
U |
E |
u |
0110 |
ACK |
SYN |
& |
6 |
F |
V |
F |
v |
0111 |
BEL |
ETB |
' |
7 |
G |
W |
G |
w |
1000 |
BS |
CAN |
( |
8 |
H |
X |
H |
x |
1001 |
HT |
EM |
) |
9 |
I |
Y |
I |
y |
1010 |
LF |
SUB |
* |
: |
J |
Z |
J |
z |
1011 |
VT |
ESC |
+ |
; |
K |
[ |
K |
{ |
1100 |
FF |
FS |
, |
< |
L |
\ |
L |
| |
1101 |
CR |
GS |
- |
= |
M |
] |
M |
} |
1110 |
SO |
RS |
. |
> |
N |
↑ |
N |
~ |
1111 |
SI |
US |
/ |
? |
O |
↓ |
o |
DEL |
(1)ASCII码的每个字符用7位二进制表示,其排列次序为d6d5d4d3d2d1d0,d6为高位,d0为低位。
而一个字符在计算机内实际是用8位表示。正常情况下,最高一位d7为“0”。在需要奇偶校验时,这一位可用于存放奇偶校验的值,此时称这一位为校验位。
要确定某个字符的ASCII码,在表中可先查到它的位置,然后确定它所在位置的相应列和行,最后根据列确定高位码(d6d5d4),
根据行确定低位码(d3d2d1d0),把高位码与低位码合在一起就是该字符的ACSII码。例如,字母L的ASCII码1001100;字符%的ASCII码是0100101,等等。
(2)ASCII码是128个字符组成的字符集。 其中编码值0~31(0000000~0011111)不对应任何可印刷字符,通常
被称为控制符, 用于计算机通信中的通信控制或对计算机设备的功能控制。编码值位32(010000)是空格字符SP。编码值为127(111111)是删除控制DEL码……其余94个字符称为可印刷字符。
(3)字符0~9这10个数字字符的高3位编码(d6d5d4)为011,低4位为0000~1001。当去掉高3位的值时,低4位正好是二进制形式的0~9。这既满足正常的排序关系,又有利于完成ASCII码与二进制码之间的转换。
(4)英文字母的编码值满足正常的字母排序,且大、小写英文字母编码的对应关系相当简便,差别仅表现在D5位的值为0或1,有利于大、小写字母之间的编码转换。
还有一种叫做ASCII-8的8位扩展ASCII编码。它是在7位ASCII马的基础上,在d5和d4位之间插入一位,且使它的值与每个符号的d6位值相同。
如数值0的7位ASCII码的编码是0110000,而8位ASCII码的编码是01010000。
2)EBCDIC码
这种字符编码主要用在IBM公司的计算机中。 EBCDIC代码,
即Extended Binary-Coded Decimal Interchange
Code(扩展的二-十进制交换码)。 EBCDIC码采用8位二进制表示,有256个编码状态,但只选用其中
一部分。
☆汉字的编码表示
用计算机处理汉字时,必须先将汉字代码化,即对汉字进行编码。 无论是西方的拼音文字还是汉字这种象形文字,它们的“意”都寓于它们的“形”和“音”上。
前面介绍过,直接向计算机输入文字的字形和语音虽然可以实现,但还不够理想。 在计算机内部直接处理、存储文字的字形和语音就更困难了,所有用计算机处理字符,
尤其是处理汉字字符,一定要把字符代码化。西文是拼音文字,基本符号比较少,编码较容易,
而且在一个计算机系统中,输入、内部处理、存储和输出都可以使用一个码。汉字种类繁多, 编码比拼音文字困难,而且在一个汉字处理系统中,输入、内部处理、输出对汉字代码的要求不近相同。
汉字信息处理系统在处理汉字和词语时,要进行一系列的汉字代码转换。下面介绍主要的汉字代码。
1)输入码
中文的字数繁多,字形复杂,字音多变,常用汉字就有7000个左右。 在计算机系统中使用汉字,首先遇到的
问题就是如何把汉字输入到计算机内。为了能直接使用西文标准键盘进行输入,必须为汉字设计相应的编码方法。
汉字编码方法主要分为三类:数字编码、拼音码和字形码。
(1)数字编码。数字编码就是用数字串代表一个汉字的输入,常用的是国标区位码。国标区位码将国家标准局公布的6763个两级汉字分成94个区, 每个区分94位,实际上是把汉字表示成二维数组,区码和位码各两个十进制数字,
因此,输入一个汉字需要按键四次。例如,“中”字位于第54区48位,区位码为5448。
汉字在区位码表的排列是有规律的。在94个分区中,1~15区用来表示字母、数字和符号,16~87区为一级和二级汉字。
一级汉字以汉语拼音为序排列,二级汉字以偏旁部首进行排列。使用区位码方法输入汉字时, 必须先在表中查找汉字并找出对应的代码,才能输入。数字编码输入的优点是无重码,而且输入码和内部码的转换比较方便,但是每个编码都是等长的数字串,代码难记。
(2)拼音码。拼音码是以汉语读音为基础的输入方法。由于汉字同音字太多,输入重码率很高,因此,按拼音输入后还必须进行同音字选择,影响了输入速度。
(3)字形编码。字形编码是以汉字的形状确定的编码。汉字总数虽多,但都是由一笔一划组成,全部汉字的部件和笔画是有限的。
因此,把汉字的笔画部件用字母或数字进行编码,按笔画书写的顺序依次输入, 就能表示一个汉字,五笔字形、表形码等便是这种编码法。五笔字形编码是最有影响的编码方法。
2)内部码
汉字内部码是汉字在设备或信息处理系统内部最基本的表达形式,是在设备和信息处理系统内部存储、处理、传输汉字用的代码。
在西文计算机中,没有交换码和内部码之分。目前,世界各大计算机公司一般均以ASCII码为内部码
来设计计算机系统。汉字数量多,用一个字节无法区分,一般用两个字节来存放汉字的内码。 两个字节共有16位,可以表示(p13
表示式)个可区别的码,如果两个字节各用7位,则可表示(p13
表示式)个可区别的码。一般说来,这已经够用了。现在我国的汉字信息系统一般都采用这种与ASCII码相容的8位码方案:用两个8位码字符构成一个汉字内部码。
另外,汉字字符必须和英文字符能相互区别开,以免造成混淆。英文字符的机内代码是7位ASCII码,最高位为“0”(即d7=0),汉字机内代码中两个最高位均为“1”。即将国家标准局GB2312-80中规定的汉字国标码的每个字节的最高位均为“1”,作为汉字机内码。以汉字“大”为例,国标码为3473H,机内码为B4F3H。
为了统一地表示世界各国的文字,1993年国际标准化组织公布了“通用多八位编码字符集”的国际标准ISO/IEC 10646,简称UCS(Universal
Code Set)。UCS包含了中、日、韩等国的文字,这一标准为包括汉字在内的各种正在使用的文字规定了统一的编码方案。该标准是用四个8位码(四个字节)来表示每一个字符,并相应第指定组、平面、行和字位。即用一个8位二进制来编码组,(最高位不用,剩下7位),能表示128个组。用一个8位二进制来编码
平面, 能表示256个平面,即每一组包含256个平面。用一个8位二进制来编码行,能表示256字位,即每一行包含256个字位。一个字符就被安排在这个编码空间的一个字位上。四个8位码32位足以包容世界所有的字符,同时也符合现代处理系统的体系结构。
第一个平面(00组中的00平面)称为基本多文种平面。它包含字母文字、音节文字及表意文字等。它分成四个区:
(1)A区:代码位置0000H~4DFFH(19903个字位)用于字母文字、音节文字及各种符号。
(2)I区:代码位置4E00H~9FFFH(20992个字位)用于中、日、韩(CJK)统一的表意文字。
(3)O区:代码位置A000H~DFFFH(16384个字位)留于未来标准化用。
(4)R区:代码位置E000H~FFFDH(8190个字位)作为基本多文种平面的限制使用区,它包括专用字符、兼容字符等。
例如:
(1)ASCII字符“A”,它的ASCII码为41H。它在UCS中的编码为00000041H,即在00组,00面,00行,第41H字位上。
(2)汉字“大”,它在GB2312中的编码为3473H,它在UCS中的编码为00005927H, 即在00组,00面,59H行,第27H字位上。
我国相应的国家标准为GB13000。详细内容请查阅网址:http://www.unicode.org。
3)字形码
汉字字形码是表示汉字字形的字模数据,通常用点阵、矢量函数等方法表示,用点阵表示字形时,汉字字形码指的就是这个汉字字形点阵的代码。字形码也称字模码,是用点阵表示的汉字字形代码,它是汉字的输出形式,根据输出汉字的要求不同,点阵的多少也不同。简易型汉字为16*16点阵,提高型汉字为24*24点阵、32*32点阵、48*48点阵,等等。
字模点阵的信息量是很大的,所占存储空间也很大,以16*16点阵为例,每个汉字就不能用于机内存储。字库中存储了每个汉字的点阵代码,当显示输出时才检索字库,输出字模点阵得到字形。
4)各种代码之间的关系
从汉字代码转换的角度,一般可以把汉字信息处理系统抽象为一个结构模型,如图1.2.3所示。
图1.2.3 汉字信息处理系统的模型
|