资源描述
计算机中数据的表示与信息编码
计算机最主要的功能是处理信息,如处理文字、声音、图形和图像等信息.在计算机内部,各种信息都必须经过数字化编码后才能被传送、存储和处理.因此要了解计算机工作的原理,还必须了解计算机中信息的表现形式。
1.2。1 计算机使用的数制
1.计算机内部是一个二进制数字世界
计算机内部采用二进制来保存数据和信息。无论是指令还是数据,若想存入计算机中,都必须采用二进制数编码形式,即使是图形、图像、声音等信息,也必须转换成二进制,才能存入计算机中。为什么在计算机中必须使用二进制数,而不使用人们习惯的十进制数?原因在于:
⑴ 易于物理实现:因为具有两种稳定状态的物理器件很多,例如,电路的导通与截止、电压的高与低、磁性材料的正向极化与反向极化等。它们恰好对应表示1和0两个符号。
⑵ 机器可靠性高:由于电压的高低、电流的有无等都是一种跃变,两种状态分明,所以0和1两个数的传输和处理抗干扰性强,不易出错,鉴别信息的可靠性好。
⑶ 运算规则简单:二进制数的运算法则比较简单,例如,二进制数的四则运算法则分别只有三条。由于二进制数运算法则少,使计算机运算器的硬件结构大大简化,控制也就简单多了.
虽然在计算机内部都使用二进制数来表示各种信息,但计算机仍采用人们熟悉和便于阅读的形式与外部联系,如十进制、八进制、十六进制数据,文字和图形信息等,由计算机系统将各种形式的信息转化为二进制的形式并储存在计算机的内部。
2.进位计数制
数制,也称计数制,是指用一组固定的符号和统一的规则来表示数值的方法。数制可分为非进位计数制和进位计数制两种。非进位计数制的数码表示的数值大小与它在数中的位置无关;而进位计数制的数码所表示的数值大小则与它在数中所处的位置有关。而我们在这里讨论的数制指的都是进位计数制。
进制是进位计数制的简称,是目前世界上使用最广泛的一种计数方法,它有基数和位权两个要素.
Ø Ø 基数:在采用进位计数制的系统中,如果只用r个基本符号(例如0,1,2,…,r—1)表示数值,则称其为r数制(Radix—r Number System),r称为该数制的基数(Radix).如日常生活中常用的十进制,就是r=10,即基本符号为0,1,2,…,9。如取r=2,即基本符号为0和1,则为二进制数。
Ø Ø 位权:每个数字符号在固定位置上的计数单位称为位权。位权实际就是处在某一位上的1所表示的数值大小。如在十位制中,个位的位权是100,十位的位权是101,…;向右依次是10—1,10—2,…。而二进制整数右数第2位的位权为2,第3位的位权为4,第4位的位权为8。一般情况下,对于r进制数,整数部分右数第i位的位权为ri—1,而小数部分左数第i位的位权为r-i。
各种进制的共同点是:
⑴ 每一种数制都有固定的符号集。如十进制数制,其符号有十个:0,1,2,…,9,二进制数制,其符号只有两个:0和1.需要指出的是,16进制数基数为16,所以有16个基本符号,分别为0,1,2,… ,8,9,A,B,C,D,E,F.表 1—3列出了计算机中常用的几种进制.
⑵ 采用位置表示法,用位权来计数。即处于不同位置的数符所代表的值不同,与它所在位置的权值有关.例如:十进制的1358.74可表示为:
1358。74=1×103+3×102+5×101+8×100+7×10—1+4×10-2
可以看出,各种进位制中的位权的值恰好是基数的某次幂。因此,对于任何一个进位计数制表示的数都可以写出按其权值展开的各项式之和,称为“按权展开式”。任意一个n位整数和m位小数的r进制数D可表示为:
n位整数
m位数
Dn-1 Dn—2…D2 D1 D0。 Dm Dm—1 Dm—2…D2 D1
⑶ 按基数来进位和借位(逢r进一,借一当r)。
现列举二进制的算术运算如下:从这里我们能够体会到二进制的运算的确能够起到简化硬件的作用.
加法:0+0=0 减法: 0-0=0
0+1=1 0-1=1(借位)
1+0=1 1-0=1
1+1=10(进位) 1-1=0
乘法:0×0 =0 除法: 0 ÷1=0
0×1 =0 1÷1=1
1×0 =0
1×1 =1
表 1—3 计算机中常用的几种进位数制
进位制
二进制
八进制
十进制
十六进制
规则
逢二进一
逢八进一
逢十进一
逢十六进一
基数
r=2
r=8
r=10
r=16
数符
0,1
0,1,2,…,7
0,1,2,…,9
0,1,2,…,9,A,B,C,D,E,F
权
2i
8i
10i
16i
表示符号
B
O
D
H
1。2.2 数制间的相互转换
1.非十进制数转换十进制数
r进制转换为十进制数,采用r进制数的位权展开法,即将r进制数按“位权”展开形成多项式并求和,得到的结果就是转换结果。
【例1.1】 【例1.1】 把 (11011。101)2转换成十进制数
解:(11011。101)2 = 1524 + 1523 + 0522 + 1521 + 1520 + 152-1 + 052—2 + 152-3
= 16 + 8 + 0 + 2 + 1 + 0。5 + 0 +0。125
= (27。625)10
2.十进制数转换非十进制数
转换规则:整数部分采用“逐次除以基数取余”法,直到商为0;
小数部分采用“逐次乘以基数取整”法,直到小数部分为0或取到有效数位。
⑴ 十进制数转换成二进制数: 整数部分采用“除2取余”法;
小数部分采用“乘2取整”法
【例1.2】把 (157.6875)10转换成二进制数
余数
十进制整数部分
2
157
2
78
余1
2
39
余0
2
19
余1
2
9
余1
2
4
余1
2
2
余0
2
1
余0
0
余1
(157)10=( 10011101)2
1
0
0
1
1
1
0
1
第一个余数是最低位
最高位
0.6875
× 2
1.3750
整数1
× 2
0.7500
整数0
× 2
1.5000
整数1
× 2
1.0000
整数1
十进制小数部分
1
0
1
1
1 0 1 1 1 1 1
最低位
注:十进制小数不一定能转换成完全等值的二进制小数,有时要取近似值。
(0。6875)10 = (1011) 2 结果:(157。6875)10 = (10011101.1011)2
⑵ 用同样的方法,可将十进制数转换成八进制数和十六进制数,分别采用“除8取余,乘8取整"和“除16取余,乘16取整”法。
3。 非十进制数之间的转换
通常两个非十进制数之间的转换方法是采用上述两种方法的组合,即先将被转换数转换为相应的十进制数,然后再将十进制数转换为其他进制数。由于二进制、八进制和十六进制之间存在着特殊关系,即81=23,161=24,因此转换方法就比较容易,如表1—4所示.
⑴ 二进制、八进制数之间的转换.
由于1位八进制数相当于3位二进制数,因此,二进制数转换成八进制数,只需以小数点为界,整数部分按照由右至左(由低位向高位)、小数部分按照从左至右(由高位向低位)的顺序每三位划分为一组,最后不足3位二进制数时用零补足.按表1—4,每三位二进制数分别用与其对应的八进制数码来取代,即可完成转换。而将八进制转换成二进制的过程正好相反。
【例1.3】 将 (11001110.01010111)2 转换成八进制数。
(011 001 110.010 101 110)2
↓ ↓ ↓ ↓ ↓ ↓
( 3 1 6 . 2 5 6 )8
【例1.4】将 (574。623)8 转换成二进制数.
( 5 7 4 . 6 2 3 )8
↓ ↓ ↓ ↓ ↓ ↓
( 101 111 100 . 110 010 011)2
⑵ 二进制、十六进制数之间的转换
由于十六进制的1位数相当于二进制的4位数,因此二进制同十六进制之间的转换就如同二进制同八进制之间的转换一样,只是4位一组 ,不足补零。
【例1.5】将 (11011 1110 0011 。 1001 011)2 转换成十六进制数。
(0001 1011 1110 0011 .1001 0110)2
↓ ↓ ↓ ↓ ↓ ↓
( 1 B E 3 . 9 6 )16
表 1—4 二进制、八进制和十六进制之间的关系
二进制
八进制
二进制
十六进制
二进制
十六进制
000
0
0000
0
1000
8
001
1
0001
1
1001
9
010
2
0010
2
1010
A
011
3
0011
3
1011
B
100
4
0100
4
1100
C
101
5
0101
5
1101
D
110
6
0110
6
1110
E
111
7
0111
7
1111
F
总之,数在机器中是用二进制表示的,但是,二进制数书写起来太冗长,容易出错,而且目前大部分微型机的字长是4位、8位、16位、32位和64位的,都是4的整数倍,故在书写时可用十六进制表示。一个字节(8位)可用两位十六位进制数表示,两个字节(16位)可用4位十六进制表示等,书写方便且不容易出错。
1。2.3 二进制数在计算机内的表示
计算机中的数据包括数值型和非数值型两大类。
数值型数据指可以参加算术运算的数据,例如 (123)10、(1001。101)2等。
非数值型数据不参与算术运算。例如字符串“电话号码:2519603”、“4的3倍等于12"等都是非数值数据。注意这两个例子中均含有数字,如2519603、4、3、12 ,但它们不能也不需要参加算术运算,故仍属非数值数据。
下面讨论数值型的二进制数的表示形式:
1。 机器数
在计算机中,因为只有“0"和“1"两种形式,所以数的正负,也必须以“0”和“1”表示.通常把一个数的最高位定义为符号位,用0表示正,1表示负,称为数符,其余位仍表示数值。把在机器内存放的正、负号数码化的作为一个整体来处理的二进数串称为机器数(或机器字),而把机器外部由正、负表示的数称为真值数.
例:真值为 (+1010011) B的机器数为 01010011,存放在机器中,等效于+83.
需注意的是,机器数表示的范围受到字长和数据的类型的限制。字长和数据类型定了,机器数能表示的数值范围也就定了。例如,若表示一个整数,字长为8位,则最大的正数为01111111,最高位为符号位,即最大值为127.若数值超出127,就要“溢出”。
2。 数的定点表示和浮点表示
当计算机所需处理的数含有小数部分时,又出现了如何表示小数点的问题。计算机中并不单独利用某一个二进制位来表示小数点,而是隐含规定小数点的位置。根据小数点位置是否固定,计算机中的数可分为定点数和浮点数两种。
⑴ 定点表示法:所谓定点表示法就是小数点在数中的位置固定不变,它总是隐含在预定位置上。通常,对于整型数,小数点固定在数值部分的右端,即在数的最低位之后,其格式如图1-2所示;对于小数,小数点固定在数值部分左端,即在数的符号位之后、最高数位之前,其格式如图1-3所示。
s
dn-1
dn-2
…
d0
图1-2 定点整数的存储格式
s
dn-1
dn-2
…
d0
图1-3 定点小数的存储格式
数值部分
符号位
小数点位置
数值部分
符号位
小数点位置
例如:定点整数120用8位二进制数可表示为01111000,其中最高位0表示符号为正。
根据计算机字长不同,如果用n个二进制位存放一个定点整数,那么它的表示范围为:—2n-1~2n—1-1.
说明:上面表示的整数的范围是以补码形式表示的,有关补码的知识在后面介绍。
定点小数-0.125用8位二进制数可表示为10010000,其中最高位1表示号为负。
根据计算机字长不同,如果用n个二进制位存放一个定点小数(纯小数),其表示范围为:-1~(2— (n—1))。
⑵ 数的浮点表示
定点数用来表示整数或纯小数。如果,一个数既有整数部分,又有小数部分,采用定点格式就会引起一些麻烦和困难。因此,计算机中使用浮点表示方法.
浮点表示法对应于科学(指数)计数法,如数110。011可表示为
N=110.011=1.10011×2+10 =11001。1×2—10 =0.110011×2+11
浮点表示法中的小数点在数中的位置不是固定不变的,是浮动的。任何浮点数都由阶码和尾数两部分组成,阶码是指数,尾数是纯小数。其存储格式如图1—4所示。其中,数符和阶符都各占一位,数符是尾数(纯小数)部分的符号位;而阶符为阶码(指数部分)的符号位。阶码的位数随数值的表示的范围而定,尾数的位数则依数的精度而定。当一个数的阶码大于机器所能表示的最大阶码或小于机器所能表示的最小阶码时会产生“溢出"。
阶符
Em-1
Em-2
…
E0
数符
d n-1
d n-2
…
d 0
图1-4 浮点数存储格式
阶码
尾数
尾数小数点位置
阶码小数点位置
例如,设尾数为4位,阶码为2位,则二进制数N=1011×1011的浮点数表示形式为
0
11
0
1011
↓ ↓ ↓ ↓
阶符 阶码 数符 尾数
应当注意的是:浮点数的正负是由尾数的数符确定的,而阶码的正、负只决定小数点的位置,即决定浮点数的绝对值的大小。当浮点数的尾数为零或阶码为最小值时,机器通常规定,把该数看作零,称为机器零。
3。 带符号数的表示
在计算机中,带符号数可以用不同方法表示,常用的有原码、反码和补码。
⑴ 原码
X 0 ≤X<2n-1-1
2n-1 +│X│ -(2n-1-1)≤X≤0
[X]原=
数X的原码记作 [X]原,如果机器字长为n ,由则原码的定义如下:
X 0 ≤X<2n-1
2n -│X│ -(2n-1-1)
[X]原=
例: X1 ,X2的真值为 X1=+1010110 X2=-1001010 , 原码表示为
[X1]原=[+1010110]原=01010110
[X2]原=[—1001010]原=11001010
由此可以看出,原码的最高位为符号位,正数为0,负数为1,其余n—1位表示数的真值的绝对值。其中,0的原码表示有两种,[+0]原=00000000 [-0]原=10000000
采用原码的优点是简单易懂,与真值转换方便,用于乘除法运算十分方便。但是对于加减法运算就麻烦了,因为当两个同号数相减或两个异号数相加时,必须判断两个数的绝对值哪个大,用绝对值大的数减去绝对值小的数,而运算结果的符号则应取与绝对值大的数相同符号。要完成这些操作相当麻烦,还会增加运算器的复杂性。为了克服原码的缺点,引进了数的补码表示方法。
⑵ 补码
数X的补码记作 [X]补,如果机器字长为n ,则补码的定义如下:
X 0 ≤X<2n-1-1
2n -│X│ -2n-1≤X≤0
[X]补=
正数的补码等于其原码本身;而负数的补码等于2n减去它的绝对值,即等于对它的原码(符号位除外)各位取反,并在末位加1而得到的数。
例: X1 ,X2的真值为 X1=+1010110 X2=-1001010 , 补码表示为
[X1]补=01010110 [X2]补=10110110
在补码中,0有唯一的编码: [+0]补=[—0]补=00000000
补码可以将减法运算转化为加法运算,即实现类似代数中的x—y = x+(-y)的运算。如补码的加减法运算规则:[X+Y]补=[X]补+[Y]补 [X-Y]补=[X]补+[—Y] 补
⑶ 反码
反码是对负数原码除符号位外逐位取反所得的数,正数的反码则与其原码形式相同。
例:X1 ,X2的真值为 X1=+1010110 X2=-1001010 , 反码表示为
[X1]反=01010110 [X2]反=10110101
同样,反码表示方式中,0有两种表示方法:[+0]反=00000000 [—0]反=11111111
1.2。4 数字化信息编码
数字化信息编码是把少量二进制符号(代码),根据一定规则组合起来,以表示大量复杂多样的信息的一种编码。一般来说,根据描述信息的不同可分为数字编码、字符编码、汉字编码等。
1。 数字编码
数字编码是用二进制数码按照某种规律来描述十进制数的一种编码。最简单最常的是8421码,或称BCD码(Binary—Code-Decimal).它利用四位二进制代码进行编码,这四位二进制代码,从高位至低位的位权分别为23、22、21、20,即8、4、2、1。并用来表示一位十进制数.下面列出十进制数符与8421码的对应关系.
十进制数
0
1
2
3
4
5
6
7
8
9
8421码
0000
0001
0010
0011
0100
0101
0110
0111
1000
1001
根据这种对应关系,任何十进制数都可以同8421码进行转换。
如(52)10=(01010010)BCD (1001 0100 1000 0101)=(9485)10
2.字符编码
在计算机系统中,除了处理数字外,还需要把符号、文字等利用二进制表示,这样的二进制数称为字符编码。
ASCII码(American Standard Code of Information Interchange)是“美国标准信息交换代码”的缩写.该种编码后来被国际标准化组织ISO采纳,作为国际通用的字符信息编码方案。ASCII码用7位二进制数的不同编码来表示128个不同的字符(因27=128),它包含十进制数符0~9、大小写英文字母及专用符号等95种可打印字符,还有33种通用控制字符(如回车、换行等),共128个。ASCII码表如表1—5所示,如A的ASCII码为1000001。ASCII码中,每一个编码转换为十进制数的值被称为该字符的ASCII码值。
表1-5 ASCII表
b7b6b5
b4b3b2b1
000
001
010
011
100
101
110
111
0000
NUL
DLE
SP
0
@
P
、
p
0001
SOH
DC
!
1
A
Q
a
q
0010
STX
DC
“
2
B
R
b
r
0011
ETX
DC
#
3
C
S
c
s
0100
EOT
DC
$
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
。
>
M
^
n
~
1111
SI
US
/
?
O
_
o
DEL
2. 2. 汉字编码:
汉字在计算机内也采用二进制的数字化信息编码。由于汉字的数量大,常用的也有几千个之多,显然汉字编码比ASCII码表要复杂得多,用一个字节(8 bit)是不够的。目前的汉字编码方案有二字节、三字节甚至四字节的.在一个汉字处理系统中,输入、内部处理、输出对汉字的要求不同,所用代码也不尽相同.汉字信息处理系统在处理汉字词语时,要进行输入码、国标码、内码、字型码等一系列的汉字代码转换。
⑴ 国标码
1981年我国制定了《中华人民共和国国家标准信息交换汉字编码》(GB2312-80标准),这种编码称为国标码。在国标码字符集中共收录了汉字和图形符号7445个,其中一级汉字3755个,二级汉字3008个,西文和图形符号682个。
国标GB2312—80规定,所有的国标汉字与符号组成一个94594的矩阵。在此方阵中,每一行称为一个区(区号分别为01~94)、每个区内有94个位(位号分别为01-94)的汉字字符集。
汉字与符号在方阵中的分布情况如下:
1~15区为图形符号区:
16~55区为一级常用二级汉字区
56~87区为不常用的二级汉字区
88~94区为自定义汉字区。
⑵ 汉字输入码与机内码
计算机处理时,由于汉字具有特殊性,因此汉字输入、存储、处理及输出过程所使用的代码均不相同。其中包含用于汉字输入的输入码、机内存储和处理的机内码、用于显示及打印的字模点阵码(字形码)。
Ø 输入码(外码)
汉字由各种输入设备以不同方式输入计算机所用到的编码。每一种输入码都与相应的输入方案有关。根据不同的输入编码方案不同,一般可分类为:数字编码(如区位码)、音码(如拼音编码)、字形码(如五笔字型编码)及音形混合码等。
Ø 机内码
汉字系统中对汉字的存储和处理使用了统一的编码,即汉字机内码(机内码、内码)。机内码与国标码稍有区别,如果直接用国标码作内码,就会与ASCII码冲突。在汉字输入时,根据输入码通过计算或查找输入码表完成输入码到机内码的转换。如汉字国标码(H)+8080(H)=汉字机内码(H)。
⑶ 汉字库与汉字字形码。
图1-5 16516汉字点阵“中”
汉字在显示和打印输出时,是以汉字字形信息表示的,即以点阵的方式形成汉字图形。汉字字形码是指确定一个汉字字形点阵的代码(汉字字模)。一般采用点阵表示字形.如图1-5所示是一个16×16点阵的汉字“中”,用“1"表示黑点、“0”表示白点,则黑白信息就可以用二进制数来表示。每一个点用一位二进制数来表示,则一个16×16的汉字字模要用32个字节来存储。国标码中的6763个汉字及符号码要用261696字节存储。以这种形式存储所有汉字字形信息的集合称为汉字字库。可以看出,随着点阵的增大,所需存储容量也很快变大,其字形质量也越好,但成本也越高。目前汉字信息处理系统中,屏幕显示一般用16×16点阵,打印输出时采用32×32点阵,在质量要较高时可以采用更高的点阵。
展开阅读全文