计算机除了用于数值计算之外,还要进行大量的信息处理,也就是要对表达各种信息的符号进行加工。前面,本书已介绍过,计算机中的信息是用二进制表示的,而人们习惯用十进制数,那么输入/输出时,就要进行十进制和二进制之间的转换处理。因此,必须采用一种编码的方法,由计算机自己来承担这种识别和转换工作。数据表示,即计算机内最常用的信息编码,包括逻辑型数据表示、中西文字符编码表示、数值型数据的编码表示。
1.数值编码
一个数在计算机内被表示的二进制形式称为机器数,该数称为这个机器数的真值。机器数有固定的位数,具体是多少位由所用计算机决定。机器数把其真值的符号数字化,通常是用规定的符号位(一般是最高位)取0或1来分别表示其值的正或负。例如假设机器数为8位,其最高位是符号位,那么在整数的表示情况下,对于00010111和10010111,其真值分别为十进制数“+23”和“-23”。
机器数表示方法有三种:原码、反码和补码。其中,补码运算方便,二进制的减法可用补码的加法实现,因此在计算机中一般使用补码来表示数。
◆原码:整数X的原码,是指其符号位的0或1表示X的正或负,其数值部分就是X的绝对值的二进制表示。通常用[X]原表示X的原码。例如:假设机器数的位数是8,则
[+42]原=00101010
[-56]原=10111000
注意:由于[+0]原=00000000,[-0]原=10000000,所以数0的原码不唯一,有“正零”和“负零”之分。
◆[反码]:反码表示中,正数的反码与原码相同;负数的反码是把其原码除符号位以外的各位取反(即0变1,1变0)。通常用[X]反表示X的反码。例如:
[+42]反=[+42]原=00101010
[-56]原=10111000
[-56]反=10111000
注意:由于[+0]反=00000000,[-0]反=11111111,所以数0的反码也是不唯一的。
◆补码:补码表示中,正数的补码与原码相同;负数的补码在其反码的最低有效位上加1。通常用[X]补表示X的补码。例如:
[+42]补=[+42]原=[+42]反=00101010
[-56]原=11000001
[-56]反=11000111
[-56]补=11001000(www.xing528.com)
注意:由于[+0]补=[-0]补=00000000,所以数0的补码是唯一的。
2.字符的编码
字符编码(Character Code)是用二进制编码来表示字母、数字以及专门符号的。在计算机系统中,有两种重要的字符编码方式:ASCII和EBCDIC。EBCDIC主要用于IBM的大型主机,ASCII用于微型机与小型机。下面简要介绍ASCII码。
目前计算机中普遍采用的是ASCII(American Standard Code for Information Interchange)码,即美国标准信息交换代码,这是目前国际上最为流行的字符信息编码方案。ASCII码有7位版本和8位版本两种,国际上通用的是7位版本,7位版本的ASCII码有128个元素,只需用7个二进制位(2 7=128)表示。ASCII码中的字符包括0~9共10个阿拉伯数字、大小写英文字母52个、通用控制字符34个,各种标点符号和运算符号32个。在计算机中实际用8位表示一个字符,最高位为“0”。附录中列出了全部128个符号的ASCII码,读者可进行参阅。
3.汉字的编码
汉字也是字符,与西文字符比较,汉字数量大,字形复杂,同音字多,这就给汉字在计算机内部的存储、传输、交换、输入/输出等带来了一系列的问题。为了能直接使用西文标准键盘输入汉字,必须为汉字设计相应的编码,以适应计算机处理汉字的需要。汉字的编码包括:交换码、输入码、机内码、输出码。
(1)交换码
汉字编码信息必须完全一致,才不会造成混乱。1980年我国颁布了《信息交换用汉字编码字符集·基本集》,代号为GB2312—80,是国家规定的用于汉字信息处理使用的代码依据,这种编码称为国标码。在国标码的字符集中共收录了6 763个常用汉字,其中一级汉字3 755个,以汉语拼音为序排列;二级汉字3 008个,以偏旁部首进行排列。此外,还收录了各种图形符号(英文、日文、俄文、希腊文字母、序号、汉字制表符等)共计682个。在GB2312—80国标码中,这些字符被分成94个区,每个区又分成94位,每个位置可存放一个字符,这样每个字符都有一个唯一对应的区码和位码,区码和位码组成区位码,如汉字“中”位于第54区第48位,其区位码就是5 448。区位码也是一种常用的汉字输入码(外码),大部分汉字系统中都配有区位码输入法。
(2)输入码
输入码也称为外码,是按照某种输入法输入汉字时所采用的编码。每个汉字对应一个编码,但一个编码可能对应若干个汉字。汉字的输入码有很多种类型,而且各有特点,用户可以根据自己的需要选择不同的输入法(外码)。目前使用较普遍的汉字输入法有拼音码、自然码、五笔字型、智能ABC等。
(3)机内码
机内码是供计算机系统内部处理、存储和传输时使用的代码,简称为内码。汉字机内码采用双字节编码方案,即用两个字节(16位二进制数)表示一个汉字的内码。汉字的输入码可多种多样,但对同一个汉字,其内码只有一个,内码实际上是指汉字在字库中的物理位置。
(4)输出码
输出码又称为字型码或汉字发生器编码。其作用是在输出设备上输出汉字的形状,将汉字作为二维图形处理,就是把汉字置于网状方格内用黑白点表示,凡有笔画通过的网点为黑点,否则为白点。每个黑白点为字符图形的最小元素,称为位点。由于每个位点都有黑白两种状态,正好对应于二进制的0和1。所以对于每个汉字字型,经过点阵数字化后的一串二进制数称为汉字的输出码。每一个汉字的字型都必须预先存放在计算机内,例如GB2312国标汉字字符集的所有字符的形状描述信息集合在一起,称为字形信息库,简称为字库。通常分为点阵字库和矢量字库。目前,汉字字形的产生方式大多是用点阵方式形成汉字,即是用点阵表示的汉字字形代码。根据汉字输出精度的要求,有不同密度点阵。汉字字形点阵有16×16点阵、24×24点阵、32×32点阵等。如图1-6所示,显示了“次”字的16×16字形点阵和代码。
图1-6 汉字字形点阵机器编码
在图1-6中,整个网格分为16行16列,每个小格用1位二进制编码表示,有点的用“1”表示,没有点的用“0”表示。一个16×16点阵有256个点,需要16×16/8=32个字节来表示。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。