计算机中信息的表示与存储

1.3 计算机中信息的表示与存储

计算机的基本功能是对数据进行运算和加工处理。数据有两种,一种是数值数据,如3.1416-2.71828……,另一种是非数值数据(信息),如Ab、+、=……。无论哪一种数据在计算机中都是用二进制数码表示的。计算机中只有二进制数值,所有的符号都是用二进制数值代码表示的,数的正、负号也是用二进制代码表示。数值的最高位用“0”、“1”分别表示数的正、负号。一个数(连同符号)在计算机中的表示形式称为机器数,数值处理采用二进制运算,非数值处理采用二进制编码,它们具有运算简单、电路实现方便、成本低廉等优点。

1.3.1 进位计数制

一种进位计数制包含一组数码符号和两个基本因素:

数码 一组用来表示某种数制的符号。如:123AB

基数 数制所用的数码个数,用R表示,称R进制,其进位规律是“逢R进一”。如:十进制的基数是10 101

位权 数码在不同位置上的权值。在某进位制中,处于不同数位的数码,代表不同的数值,某一个数位的数值是由这位数码的值乘上这个位置的固定常数构成,这个固定常数称为“位权”。如:十进制的个位的位权是“1”,百位的位权是“100”。

一、十进制

十进制数,它的数码是用10个不同的数字符号01、…… 89来表示的。由于它有10个数码,因此基数为10。数码处于不同的位置表示的大小是不同的,如3468.795这个数中的4就表示4×102400,这里把10n称作位权,简称为“权”,十进制数又可以表示成按“权”展开的多项式。例如:3468.7953×1034×1026×1018×1007×10-1+9×10-2+5×10-3

十进制数的运算规则是:逢101

二、二进制

计算机中的数据是以二进制形式存放的,二进制数的数码是用01来表示的。二进制的基数为2,权为2n,二进制数的运算规则是:逢21

对于一个二进制数,也可以表示成按权展开的多项式。例如:

10110.101=1×240×231×221×210×201×2-10×2-21×2-3

三、八进制和十六进制

八进制数的数码是用01、…… 67来表示的。八进制数基数为8,权为8n,八进制数的运算规则是:逢81

十六进制数的数码是用01、…… 9ABCDEF来表示的。十六进制数的基为16,权为16n,十六进制数的运算规则是:逢161

其中符号A对应十进制中的10B表示11,……,F表示十进制中的15

在书写时,可用以下3种格式:

如第1种:111 011012331835.8110FA516

如第2种:(10110.0112,(7558,(13910,(AD616

如第3种:10101.001B 761O 3762D 2CE6H

这里字母BODH分别表示二进制、八进制、十进制和十六进制。

1.3.2 数制之间的转换

一、二进制数、八进制数、十六进制数转换为十进制数

各种进制的数按权展开后求得结果即为十进制数。

1.1 将二进制数(1011.1012转换成等值的十进制数。

1011.1012 = 1×23+0×22+1×21+1×20 +1×2-1 + 0×2-2+1×2-3

= 8 + 0 + 2 + 1 +1/2 + 0 +1/8

=(11.625)10

八进制数和十六进制数均可按位权展开转换成十进制数。

1.2 将(25768、(3D.B16分别转换成十进制数。

257682×83+5×827×816×80=(140610

3D.B163×16113×16011×161=(61.687510

二、十进制数转换为二进制数

对于十进制数的整数部分和小数部分在转换时须作不同的计算,分别求得后再组合。

1. 十进制整数转换为二进制数(除2取余法)

方法:逐次除以2,每次求得的余数即为二进制数整数部分各位的数码,直到商为0

2. 十进制纯小数转换为二进制数(乘2取整法)

方法:逐次乘以2,每次乘积的整数部分即为二进制数小数各位的数码。

1.3 把十进制数69.8125转换为二进制数。

图1.4 十进制数转换为二进制数

对整数部分69转换,如图1.4左图所示,得:(6910=(10001012

将小数0.8125转换为二进制小数,如图1.4右图所示,得:(0.812510=(0.11012

因此69.8125D=1000101.1101B

十进制数转换成八进制数和十六进制数也可用上述方法进行。

3.二进制数与八进制数的互相转换

1)二进制数转换成八进制数

二进制数转换成八进制数的方法是:将二进制数从小数点开始分别向左(整数部分)和向右(小数部分)每3位二进制数码分成一组,转换成八进制数码中的一个数字,连接起来。不足3位时,对原数值用0补足3位。

1.4 把二进制数(11110010.11100112转换为八进制数。

二进制3位分组:

011

110

010

.

111

001

100

转换成八进制数:

3

6

2

.

7

1

4

11110010.11100112=(362.7148

2)八进制数转换成二进制数

八进制数转换成二进制数的方法是:将每一位八进制数写成相应的3位二进制数,再按顺序排列好。

1.5 把八进制数(2376.148转换为二进制数。

八进制1

2

3

7

6

.

1

4

二进制3

010

011

111

110

.

001

100

2376.148=(10011111110.00112

4.二进制数与十六进制数的互相转换

二进制数与十六进制数的转换方法:和二进制数与八进制数的转换方法类似,是将4位二进制数码为一组对应成1位十六进制数,而十六进制数与二进制数的转换是将十六进制数的1位与二进制数的4位数相对应,再按顺序排列好。

1.6 把二进制数(110101011101001.0112转换为十六进制数。

二进制4位分组:

0110

1010

1110

1001

.

0110

 

转换成十六进制数:

6

A

E

9

.

6

 

(110101011101001.011)2=(6AE9.6)16

在这里我们看到二进制和八进制、十六进制之间的转换非常直观,因此,要把一个十进数转换成二进制数可以先转换为八进制数或十六进制数,然后再快速地转换成二进制数。

同样,在转换中若要将十进制数转换为八进制数和十六进制数时。也可以先把十进制数转换成二进制数,然后再转换为八进制数或十六进制数,如表1.1所示为常用计数制对照表。

例如将十进制数673转换为二进制数,可以先转换成八进制数(除以8求余法)得1241,再按每位八进数转为3位二进数,求得1010100001B,如还要转换成十六进制数用4位一组很快就能得到2A1H

1.1 常用计数制对照表

十进制数

二进制数

八进制数

十六进制数

0

0

0

0

1

1

1

1

2

10

2

2

3

11

3

3

4

100

4

4

5

101

5

5

6

110

6

6

7

111

7

7

8

1000

10

8

9

1001

11

9

10

1010

12

A

11

1011

13

B

12

1100

14

C

13

1101

15

D

14

1110

16

E

15

1111

17

F

16

10000

20

10

1.3.3 二进制数的运算

在计算机中,二进制数可作算术运算和逻辑运算。

一、算术运算

加法:000 10011 1110

减法:0-00 10-11 1-01 1-10

乘法:0×00 0×11×00 1×11

除法:0/10 1/11

二、逻辑运算

1.或:“∨”、“+”

000 011 101 111

或运算中,当两个逻辑值只要有一个为1时,结果为1,否则为0

1.7 要判断成绩X是否处在小于60或者成绩Y是否处在大于95的分数段中,可这样表示:(X<60)∨(Y>95

X=70Y=88时,这时X<60Y>95条件都不满足,两个表达式结果均为0,“∨”运算结果为0

X小于60,则X<60的表达式满足为1,而无论Y取何值,这时“∨”运算结果为1

同样只要Y大于95分,而无论X取何值,这时“∨”运算结果为1

如果X=50Y=98,这时X<60满足(为1),Y>95亦满足(为1),“∨”运算结果为1

2.与:“∧”、“·”

000 010 100 111

与运算中,当两个逻辑值都为1时,结果为1,否则为0

1.8 一批合格产品的标准需控制在205~380之间,要判断某一产品质量参数X是否合格,可用这样表示:(X>205)∧(X<380

X的值不在该区间内时,X>205X<380条件中至少有一个条件不满足(“∧”运算规则中的前3种情况),“∧”结果为0,产品为不合格。

X的值在该区间内时,X>205X<380条件同时满足都为1,“∧”结果为1

3.非:“ˉ”

非运算中,对每位的逻辑值取反。

规则:

1.9

1.10 若用1表示性别为男,则 表示女。

4.异或:“

0 0=0 0 1=1 1 0=1 1 1=0

异或运算中,当两个逻辑值不相同时,结果为1,否则为0。

1.3.4 非数值信息的表示

一、ASCII

ASCII码(American Standard Code for Information Interchange)是美国信息交换标准代码的简称。ASCII码占一个字节,有7ASCII码和8ASCII码两种,7ASCII码称为标准ASCII码,8ASCII码称为扩充ASCII码。7位二进制数给出了128个不同的组合,表示了128个不同的字符。其中95个字符可以显示,包括大小写英文字母、数字、运算符号、标点符号等。另外的33个字符,是不可显示的,它们是控制码,编码值为031127。例如回车符(CR),编码为13,如表1.2ASCII码字符编码表。

1.2 ASCII码字符编码表

b6 b5 b4

b3 b2 b1 b0

000

001

010

011

100

101

110

111

0 0 0 0

NUL

DLE

SP

0

@

P

`

p

0 0 0 1

SOH

DC1

!

1

A

Q

a

q

0 0 1 0

STX

DC2

"

2

B

R

b

r

0 0 1 1

ETX

DC3

#

3

C

S

c

s

0 1 0 0

EOT

DC4

$

4

D

T

d

t

0 1 0 1

ENQ

NAK

%

5

E

U

e

u

0 1 1 0

ACK

SYN

&

6

F

V

f

v

0 1 1 1

BEL

ETB

'

7

G

W

g

w

1 0 0 0

BS

CAN

8

H

X

h

x

1 0 0 1

HT

EM

9

I

Y

i

y

1 0 1 0

LF

SUB

*

:

J

Z

j

z

1 0 1 1

VT

ESC

+

;

K

[

k

{

1 1 0 0

FF

FS

<

L

/

l

|

1 1 0 1

CR

GS

-

=

M

]

m

}

1 1 1 0

SO

RS

.

>

N

^

n

~

1 1 1 1

SI

US

/

O

_

o

DEL

二、BCD码

BCD码用4位二进制数表示一位十进制数,例如:BCD码1000 0010 0110 1001按4位一组分别转换,结果是十进制数8269,一位BCD码中的4位二进制代码都是有权的,从左到右按高位到低位依次权是8、4、2、1,这种二——十进制编码是一种有权码。1位BCD码最小数是0000,最大数是1001。

1.3.5 汉字信息的基础

要让计算机能进行汉字信息处理,必须解决汉字信息的输入、储存、输出和编码转换等问题。

计算机处理汉字的基本过程如图1.5所示。用户用键盘输入的汉字编码,通过代码转换程序转换成汉字机内码进行储存、处理、加工,转换时要利用输入码到码表中去检索机内码。输出时,再利用字形检索程序在汉字字模库中查到表示这个汉字的字形码,根据字形码在显示器或打印机上输出。

图1.5 汉字处理过程

一、汉字编码

如前所述,计算机对字母和符号采用国际上通用的ASCII码来编码。标准的ASCII码用7位二进制数编码,字符存放时采用一个字节,规定最高位为0,这样可以表示128个字符。同样,计算机对汉字也有一个编码问题。

计算机通过包含汉字在内的字符集与用户进行信息交换,这些信息由计算机处理时,首先要把它变成计算机能接受的代码形式,最终计算机处理的信息又必须将内部代码形式转换成汉字的字形,才能被用户所理解。

1GB2312-80

20世纪70年代末,我国已认识到统一汉字编码对计算机中文信息的发展十分重要,为适应计算机信息处理技术发展的需要,1980年颁布了《信息交换用汉字编码字符集基本集》(国家标准代号为GB2312-80)。

GB2312-80中共收录了汉字6763个,各种字母符号682个,合计7445个。这些汉字根据其常用程度又分为一级汉字、二级汉字。一级常用汉字3755个,以拼音为序,约占近代文献汉字累计使用频度99.9%左右;二级汉字3008个,以偏旁部首为序。一级、二级汉字约占累计使用频度99.99%以上。

国标码以94个可显示的ASCII码字符为基集,采用双字节对汉字和符号进行编码,即用连续的两个字节表示一个汉字的编码。为了和ASCII区别,规定每个字节的最高位均为1。国标码与ASCII码属于同一制式,可以认为国标码是扩展的ASCII码。目前我国使用的汉字编码就是采用这个标准。

GB2312-80规定,所有的国标汉字与符号组成一个94×94的矩阵。矩阵中的每一行称为一个“区”,每一列称为一个“位”。因此共有94个区(区号:01~94),每区94个位(位号:01~94)。 

一个汉字所在的区号和位号简单地组合在一起就构成了该汉字的“国标区位码”。在连续的两个字节中,高位字节为区号,低位字节为位号。其汉字和符号在94×94矩阵中分布如图1.6所示,即区位码的编码范围是:0101~9494。例如,1区的33位是符号“×”,则输入“×”可用区位码0133。41区的29位是汉字“山”,则输入“山”可用区位码4129。

 

图1.6 汉字编码区位分布图

2.汉字机内码

计算机系统中用来表示中文或西文信息的代码称为机内码,简称内码。ASCII码是一种西文机内码,用一个字节表示。汉字机内码用连续两个字节表示,每个字节的最高位是1。

GB2312-80的内码编码的范围为:A1A1H~FEFEH。汉字机内码与区位码的关系为:

汉字机内码高位字节=区位码高位字节+A0H

汉字机内码低位字节=区位码低位字节+A0H

例如,“×”的区位码是0133,则:

高字节:(01)10+(A0)16=(01)16+(A0)16=(A1)16

低字节:(33)10+(A0)16=(21)16+(A0)16=(C1)16

则“×”的内码为A1C1。

又如,“山”的区位码是4129,则:

高字节:(41)10+(A0)16 =(29)16+(A0)16=(C9)16

低字节:(29)10+(A0)16=(1D)16+(A0)16=(BD)16

则“山”的内码为C9BD。

Windows 2000内置的内码输入法支持区位码、GBK内码、UNICODE码的输入。用户可以在区位码的输入状态下,输入内码。即在区位码状态下,输入0133和A1C1都出现符号“×”。

GBK是汉字扩展内码规范,GBK的目的是解决汉字收字不足、简繁同平面共存、简化代码体系间转换等汉字信息交换的瓶颈问题,它与GB2312-80内码体系完全兼容,并向最终的国际统一双字节字符集标准ISO10646.1迈进。用户可以使用“全拼”输入GBK中的汉字,采用“全拼”输入法输入汉字时,只要在切换到“全拼”输入状态后,用小写字母输入拼音原样。例如要输入“俶”字,它在“标准”或“五笔字型”输入法中均不能输入,但在“全拼”中只要输入chu,再翻几页就可以找到。需要说明的是,该汉字因为不属于GB2312-80,故不能以仿宋体及楷体等字体显示,但可以用宋体、黑体、隶书等字体显示。

二、汉字输入码

汉字输入方法一般有两种实现途径:一是由计算机自动识别汉字,要求计算机模拟人的智能;二是由人来完成识别工作,将相应的计算机编码以手动方式用键盘输入计算机。

自动识别主要有3种方法:

一是利用汉字识别技术,通过特殊的手写笔在感应板上书写汉字进行输入;二是利用语音识别技术,通过声音输入汉字;三是扫描识别输入,即把印在纸上或写在纸上的汉字通过扫描仪输入计算机,再用相应的软件将输入的信息转换成汉字机内码。下面主要介绍键盘输入方法。

计算机用的标准键盘只有几十个键,而汉字至少有数千个,因此用键盘输入汉字,需对汉字进行编码。从20世纪80年代开始,到目前已经有数百种汉字输入编码方案产生,如区位码、全拼、五笔字型、微软拼音、智能ABC等,它们属于外码。

按照编码原理,汉字输入码主要分为4类:顺序码(无重码)、音码、形码和以汉字的音、形相结合的音形码或形音码。

顺序码是将GB2312-80中的所有汉字按一定顺序排列起来,予以编码,如区位码、国标码、电报码,它们无重码。音码是指采用汉语拼音的编码方式,常见的有智能ABC、微软拼音、全拼、简拼、双拼等。形码是采用汉字字形(如偏旁、字根)来编码的,如五笔字型、五笔划等。音形码是结合汉字的拼音和字形产生的编码,如自然码。

三、汉字字库

汉字信息存储在计算机内采用机内码,但输出时必须转换成字形码,以人们熟悉的汉字形式输出才有意义。因此对每一个汉字,都要有对应的字的模型(简称字模)储存在计算机内,字模的集合就构成了字模库,简称字库。汉字输出时,需要先根据内码找到字库中对应的字模,再根据字模输出汉字。

构造汉字字形有两种方法:向量(矢量)法和点阵法。

向量法是将汉字分解成笔画,每种笔画使用一段段的直线(向量)近似地表示,这样每个字形都可以变成一连串的向量。

图1.7 用点阵组成的汉字字形

点阵方式又称“字模点阵码”。每一个汉字以点阵形式存储在记录介质上,有点的地方为“1”,空白的地方为“0”。例如,可以将“杭”字画在图1.7所示的16×16的方格上,则“杭”字的字形码是00010000100000001000001000000、……0001000000000000。每一行为16位,共16行组成一个汉字的字形码,即共需要二进制位16×16=256位,等于32字节。

汉字的表示也可以采用24×24点阵,此时表示一个汉字,需要24×24÷8=72个字节。点阵规模越大,每个汉字存储的字节数就越多,字库也就越庞大。但字形分辨率越好,字形也越美观。

大多数汉字信息处理系统把汉字字库存放在磁盘上,这样的字库称为“软字库”,使用时全部或部分调入内存储器,并通过专门的软件实现从汉字机内码转变为对应的汉字字模点阵码的地址,根据地址找到相应的字形码。

相对于“软字库”,一般将固化在EPROMMASK-ROM的芯片中的汉字字库称为“硬字库”。一般打印机等设备中都安装有带有固化汉字库的集成电路芯片,以提高输出汉字的速度。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值