
1.3.4 数据的表示
1.数值数据的表示
一个数在计算机中的表示形式,称为机器数。机器数所对应的原来的数值称为真值,由于采用二进制表示,所以必须把符号数字化,通常是用机器数的最高位作为符号位,仅用来表示数符。若该位为0,则表示正数;若该位为1,则表示负数。
2.字符数据的表示
除了数值数据外,人们用的更多的是字符数据。从键盘上输入的各种命令和数据都是以字符形式体现的。由于计算机只能存储二进制数,这就需要对字符数据进行编码。
(1)英文字符编码
英文字符编码最常用的是ASCII码,ASCII是American Standard Code for Information Interchange的缩写,意为美国标准信息交换代码。该编码已被国际标准化组织ISO采纳,作为国际通用的信息交换标准代码。ASCII码用七位二进制数(每个字节的最高位为0)表示一个字符,可以表示128个字符。这些字符包括:10个数符0~9,26个大写英文字母,26个小写英文字母,33个符号及33个控制符。表1-2所示为其中95个可见字符(行、列号是用十六进制数表示的)。
表1-2 ASCII码表(部分)

(2)中文字符编码
①国标码和区位码:中国国家标准局1980年颁布了《信息交换用汉字编码字符集基本集》(代号为GB2312—1980),简称国标码,规定一个汉字用两个字节表示(每个字节的最高位为0)。国标码中有6763个汉字(其中一级汉字3755个,二级汉字3008个)和682个其他基本图形字符,共计7445个字符。整个字符集分成94个区,每区有94个位。每个区位上只有一个字符,因此可用所在的区和位来对汉字进行编码,称为区位码。例如,“泽”字在52区83位,其区位码是5283。区位码也是一种汉字输入法,并且没有重码,但是由于它不便记忆,所以人们用得很少。
将换算成十六进制的区位码加上2020H,就得到国标码。国标码加上8080H,就得到常用的计算机机内码。如果要求“泽”字的机内码,首先将其十进制的区码和位码分别转换为十六进制数,即3453H,进而可得出它的国标码为5473H,机内码为D4F3H。
2001年开始执行国家标准GB18030—2000《信息交换用汉字编码字符集基本集的扩充》,其中收录了27484个汉字及少数民族文字。现在最新版本是GB18030—2005,收入字符7万余个。
②机内码和输入码:汉字的机内码是指计算机内部存储、处理和传输汉字时所用的代码。国标码不能在计算机内部直接使用。为了不与早已通用的ASCII码相混淆,将国标码每个字节的最高位都从0换成1(相当于加上8080H),便可得到机内码。
汉字输入码是指用户从键盘输入的汉字编码。汉字输入方法很多,不同输入法有自己的编码方案。不管用什么汉字输入法,输入码都要转换成机内码,才能被存储和处理。同一个汉字,虽然不同输入法有不同的输入码,但其机内码是唯一的。
③汉字字形码:汉字字形码又称汉字字模,用于汉字的显示或打印。汉字字形码有两种表示方式:点阵和矢量。
用点阵表示字形时,汉字字形码就是汉字字形点阵的代码。根据输出汉字的要求不同,点阵的多少也不同,有16×16点阵,24×24点阵,32×32点阵等。一个16×16点阵的汉字字形要占32个字节。所有不同的汉字字体、字号的字形构成汉字库,一般存储在硬盘上,当要显示输出时才调入内存,检索到要输出的字形,然后送到显示器输出。
矢量表示方式存储的是描述汉字字形的轮廓特征,当输出汉字时,通过计算生成所需的汉字。矢量方式得到的汉字在放大时不失真。
(3)Unicode码
Unicode只有一个字符集,中、日、韩的三种文字占用了Unicode中0x3000到0x9FFF的部分。Unicode目前普遍采用的是UCS-2,它用两个字节来编码一个字符,比如汉字“出”的编码是0x51FA,注意字符编码一般用十六进制来表示,为了与十进制区分,十六进制以0x开头,0x51FA转换成十进制就是20986,UCS-2用两个字节来编码字符,两个字节就是16位二进制,2的16次方等于65536,所以UCS-2最多能编码65536个字符。编码从0到127的字符与ASCII编码的字符一样,比如字母“A”的Unicode编码是0x0041,十进制是65,而“A”的ASCII编码是0x41,十进制也是65。
UCS-2对汉字支持并不理想,简体和繁体总共有六七万个汉字,而UCS-2最多能表示65536个,所以Unicode只能排除一些几乎不用的汉字,好在常用的简体汉字只有七千多个。为了能表示所有汉字,Unicode制定了UCS-4规范,即用4个字节来编码字符。
3.声音和图像数据的表示
声音是一种连续变化的模拟量,可以通过“模/数”转换器对声音信号按固定的时间进行采样,把它变成数字量,便可在计算机中存储和处理了。数字化声音的质量取决于声音采样的频率和每个样本值用多少数字表示的采样深度。
图像是点的集合。在计算机中表示图像有位图和矢量图两种方法。在位图表示方法中,每个点被称为像素。对每个像素用若干二进制位编码,整个图像就表示成已经编码的像素的集合。矢量图是用一组指令来描述的,这些指令给出构成该图的直线、曲线等的形状位置和颜色等参数。