Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1469783
  • 博文数量: 213
  • 博客积分: 10418
  • 博客等级: 上将
  • 技术积分: 3358
  • 用 户 组: 普通用户
  • 注册时间: 2008-04-09 23:49
文章分类

全部博文(213)

文章存档

2014年(1)

2013年(5)

2012年(11)

2011年(2)

2010年(8)

2009年(26)

2008年(160)

分类: C/C++

2010-05-31 00:07:10

计算机可以在屏幕上显示字符,这些字符可以是字母,标点符号,数字,汉字等。计算机只认识二进制数,所以也只能用二进制数来表示每个显示和输出的字符。为了使计算机的数据能够共享和传递,必须对字符进行相应的二进制编码。

目前常用的编码有如下几种:BCD码、ASCII码、汉字编码等。

一、BCD

1、什么是BCD码?

用四位二进制数码来表示一位十进制数,这种编码称为BCD码(也叫8421),即用二进制数表示的十进制数。

十进制数位

0

1

2

3

4

5

6

7

8

9

BCD

0000

0001

0010

0011

0100

0101

0110

0111

1000

1001

[例1]把十进制数7209化成BCD码。

解:7209BCD码为:0111 0010 0000 1001

练习:求十进制数4851BCD码。

解:4851BCD码为:0100 1000 0101 0001

2、对于BCD码的几点说明:

1)考虑人们使用习惯,通常在计算机输入输出过程中还是采用十进制,然后由机器转换成二进制。BCD码的形式非常适于人类的这种习惯。

2BCD码虽然也用四位二进制数编码来表示每位十进制数用,但它没有把十进制数的值转换成真正的二进制值,不能按权展开求值。

如:十进制数28转换成二进制数为:11100

十进制数28转换成BCD码为:00101000

所以,BCD码与二进制之间转换是不能直接进行的,要先转换成十进制,再转换为二进制,因为BCD码实质上是十进制数,而形式上为二进制数,在转换上又与二进制数十六进制数之间的转换相似。所以在学习时要注意不要混淆,加以区别。

练习:填表

十进制数

18

45

112

51

42

82

51

二进制数

10010

101101

1110000

110011

101010

1011100

110011

BCD

00011000

01000101

000100010010

01010001

01000010

10000010

01010001

 

二、ASCII

1、什么叫ASCII码?

ASCII码是美国标准信息交换码的缩写,它是目前国际上在计算机中用二进制数表示字母、数字、符号以及控制符号最常用的编码。

1)常用字符有128个,编码从01270000000―1111111

2)控制字符:0-31127,共33个,不可显示;

3)普通字符:95个,包括10个阿拉伯数字、52个英文大小写字母、33个运算符。

4)每个字符占个字节,最高位为0,后面跟7位二进制数

2、常见ASCII码的大小规则,09AZaz

1)数字比字母要小。如“7<“F

2)数字0比数字9要小,并按09顺序递增。如“3<“8

3)字母A比字母Z要小,并按AZ顺序递增。如A”<“Z

4)同个字母的大写字母比小写字母要小32。如A”<“a

5)记住几个常见字母的ASCII码大小:

“空格”为320”为48A”为65a”为97

3、常用ASCII码表如下:

字符

范围

十六进制

十进制

空格

20H

32

0~9

30H~39H

48~57

A~Z

41H~5AH

65~90

a~z

61H~7AH

97~122

[例2]已知字母“B”ASCII码为十进制数66,那么字母“E”ASCII码为二进制数多少?

解:字母“E”ASCII码为十进制数6966+3),转换成二进制数为1000101

[例3]已知字母“a”ASCII码为十六进制数61,那么字母“h”ASCII码为二进制数多少?

解:字母“h”ASCII码为十六进制数6861+7),转换成二进制数为01101000

 

三、汉字编码

1、汉字编码分类

汉字在不同的处理阶段有不同的编码。

1)汉字的输入:输入码à国标码

2)汉字的机内表示:机内码

3)汉字的输出:字形码(输出码:汉字点阵字库)

输入码

国标码

机内码

输出码

各种编码之间的关系:

 

 

 

2、汉字的机内表示:机内码

计算机在信息处理时表示汉字的编码,称作机内码。

现在我国都用国标码(GB2312)作为机内码。

GB2312-80规定了:

1)一个汉字由两个字节组成,为了与ASCII码区别,最高位均为“1”。

2)汉字6763个:一级汉字3755个,按汉字拼音字母顺序排列;二级汉字3008个,按部首笔画汉字排列。

3)汉字分区:94行(区),94列(位)(区位码)

3汉字的机内表示:区位码、国际码和机内码:

1区位

计算机在信息处理时表示汉字的编码应该规定统一的编码,我国制定了汉字交换的统一标准——GB2312-80,我们简称为区位

GB2312-80国标字符集将汉字编码分成94区与94位,就是区位码。共收集了7445个图形字符,其中一般符号、数字、拉丁字母、希腊字母、汉语拼音等709个,汉字字符分为两级,一级汉字3755个,二级汉字为3008个。该标准按区位码从小到大排列如下:

              1      图形、符号区

              2      各类数字区

              3      符号、字母

              4      日文的平假名

              5      日文的片假名

              6      希腊字母

              7      俄文字母

              8      拼音字母

              9      制表符

              16——55区(常用字)  一级汉字      按拼音排列

              56——87区(非常用字)二级字库      按部首排列

              88――94区  自定义汉字

GB2312-80标准中共有汉字6763个:

一级汉字3755个,按汉字拼音字母顺序排列;

二级汉字3008个,按部首 笔画汉字排列。

GB2312-80标准采用区位码,将汉字编码分成94区与94位。

练习:一级汉字的第一个汉字的区位码是多少?1601

二级汉字的第一个汉字的区位码是多少?5601

知识链接:汉字标准不仅有GB2312-80一种

在台湾和香港使用的汉字字符集是 BIG5(繁体中文),共有汉字13053个。

汉字扩展标准GBK字符集,GBK字符集有20902个汉字字符

2国标码:汉字信息交换的代码,也称交换码。

区位码与国标码的换算:国标码=十六进制的区位码+2020H

3机内码:计算机系统内部标识汉字的编码。

一个汉字由两个字节组成,为了与ASCII码区别,最高位均为1”。

国标码和机内码的换算:机内码=十六进制的国际码+8080H

[例1字的区位码为2083,求该字的国标码和机内码。

分析方法步骤:

1)区码和位码分别转换成十六进制数表示

2)(区位码的十六进制表示)+2020H=国标码;

3)国标码+8080H=机内码

解:1、该字的区号为20,位号为83

2、将区位号2083分别转换为十六进制表示为1453H

3、国标码=1453H2020H3473H

4、机内码=3473H8080HB4F3H

[练习]已知某字区位码为2054,请分别求出该字的国标码与机内码。

十六进制区位码:1436H

国标码:3456H

机内码:B4D6H

 

、汉字的输入:汉字输入码(外码)

1、数字码(或流水码)

如:电报码、区位码、纵横码

优点:无重码,不仅能对汉字编码,还能对各种字母、数字符号进行编码。

缺点:是人为规定的编码,属于无理码,只能作为专业人员使用。

2、字音码

如:全拼、双拼、微软拼音

优点:简单易学。

缺点:汉字同音多,所以重码很多,输入汉字时要选字。

3、字形码

如:五笔字型、表形码、大众码、四角码

优点:不考虑字的读音,见字识码,一般重码率较低,经强化训练后可实现盲打。

缺点:拆字法没有统一的国家标准,拆字难,编码规则繁,记忆量大。

4、音形码

如:声形、自然码、钱码

优点:利用音码的易学性和形码可有效减少重码的优点。

缺点:既要考虑字音,又要考虑字形,比较麻烦。

 

五、汉字的输出:字形码(字库 Font

1、点阵字形:16×1624×2448×48

每一个点在存储器中用一个二进制位(bit)存储,所以一个16×16点阵汉字需要3216×16/832)个字节存储空间。

2、轮廓字形

字笔画的轮廓用一组直线和曲线勾画。记录的是这些几何形状之间的关系。

精度高。

WindowsTrueType字库采用此法。
阅读(4065) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~