Skip to content

数据的存储与表示

位是计算机存储数据的最小单元,字节是数据处理的基本单位。本节将介绍数据在计算机中的存储方式以及数值和字符在计算机中的表示方式。

字与字长

字(word)指计算机处理数据时,CPU 一次性能处理的数据长度。字长(word length)是一个字的位数。字长是衡量计算机性能的重要标志。现代计算机的字长通常为 32 位和 64 位。

数值型数据的表示

在计算机中,数值型数据使用二进制数来表示。数值有正负之分,因此数值的符号也需要使用二进制数来表示。一般规定 0 为正,1 为负,将数值型数据的最高位用来表示数值的正负,称为符号位。这样通过数值的符号和数值的大小组成的数称为机器数,数值本身就称为真值。机器数可以通过原码、反码和补码三种不同的码制来表示。

原码、反码和补码

用符号位和数值位两部分表示一个带符号数,设字长为 n,第一位作为符号位,其余 n1 位作为数值位,这种表示机器数的方式叫做原码表示法。假设字长为 8,在原码表示法中,0 可以表示为 0000000010000000。8 位原码所能表示的数值范围为 -127 ~ +127。

由于原码表示法不方便直接对机器数进行加减运算,因此产生了反码表示法。反码表示法规定,正数的原码和反码相同,将负数的原码除符号位外做取反运算(将 0 变成 1,将 1 变成 0)即可得到该负数的反码。

补码表示法规定:正数的补码和原码相同,负数的补码为该负数的反码加一,这样,数字 0 的补码就是唯一的。

通过补码可以较为方便地直接对机器数进行加减运算。目前计算机中的加减法运算基本都采用补码进行运算。

字符型数据的表示

ASCII 码

我们可以用拉丁字母、数字、标点符号以及一些特殊符号来表示一段英文文本。这些构成文本的基本元素叫做字符,字符的集合叫做字符集。字符集中每个字符都对应一个二进制编码,构成了该字符集的编码表。目前计算机中广泛使用的西文字符集是 ASCII 码,即美国标准信息交换代码(American Standard Code for Information Interchange)。ASCII 码用 7 个二进制位表示一个字符,可以表示 128 个不同的字符,包括 10 个数字、26 个小写字母、26 个大写字母、运算符号、标点符号以及控制符号等。其中 26 个字母的编码是连续的,且大写字母在小写字母之前(即大写字母对应的二进制编码数值更小),但最后一个大写字母和第一个小写字母并不是连续的。

汉字编码

汉字的编码形式分为输入码、交换码、机内码和字形码,其中输入码是输入法识别汉字使用的编码,比如拼音;字形码是通过矢量或点阵的方法存储汉字字形的一种编码。下文将重点介绍交换码和机内码。

要介绍汉字交换码,首先需要介绍汉字区位码。区位码是对汉字在 GB2312 字符表中位置的编号。表被划分为 94 个区(区号 01–94),每个区有 94 个位(位号 01–94),一个汉字由区号和位号唯一确定。区位码是比较便于人类查询的编码形式。将区位码的区号和位号分别加上 0x20 (2016) 即可得到交换码,又叫国标码。国标码是 GB2312 中正式定义的编码值。

在国标码的基础上,将两个字节的最高位分别设为 1,或者将国标码加上 0x8080 即可获得机内码。

图像数字化

图像数字化就是把连续的空间位置和亮度离散化。把亮度分为 k 个区间,每个区间对应一个亮度值,这个过程称为量化。图像数字化的主要参数有图像分辨率、量化位数等。

图像分辨率指图像的尺寸,包括图像的水平和垂直方向的像素个数。量化位数是指记录每个像素所使用的二进制位数。对彩色图像来说,量化位数越多,可以记录的色彩就越丰富。彩色图像或灰度图像常用的量化位数有 1 位、4 位、8 位、16 位、24 位和 32 位。

数字图像的原始数据所占用的存储空间位数为像素点个数乘以量化位数。

声音数字化

数字音频的主要参数有采样频率、量化位数和声道数。采样频率指每秒钟抽取声波样本的次数,常用的采样频率有 11.025 kHz、22.05 kHz 和 44.1 kHz。每秒钟声音的原始数据所占用的原始存储空间位数为采样频率乘以量化位数再乘以声道数。