第3章 新媒体的技术元素
新媒体以现代通信与计算机技术为支撑,它的不断发展也越来越依赖于这些技术的进步,使得这些技术越来越成为新媒体不可分割的基本元素。
3.1 信息编码基础
数据是记录信息的符号。用电子数字计算机进行信息处理,就是对符号形式的数据进行存储与处理。电子数字计算机以开关元件为基础。开关元件是具有两种稳定状态的电子元件,因此要用电子数字计算机进行处理的数据必须表示为用代表其电子开关两种状态的0和1表示的符号。将其他形式的数据符号转换为0、1表示的符号的过程,称为0、1编码。
3.1.1 数值数据的0、1编码
1. 二进制的基本概念
人们最习惯的计数方法是使用十进制。十进制具有如下3个特点。
(1)用0、1、2、3、4、5、6、7、8、9十个符号表示数。
(2)“逢十进一”,即在某一位上,当够10时,就要向左边的位进一。因为每个位上最大值只能是9。
(3)十进制数从小数点往左,依次为十位、百位、千位、万位……从小数点向右,依次为十分位、百分位、千分位、万分位……即一个数字m,在位置i上时,其值为m×10i。10i称为i位权。例如,个位的位权为100,十位的位权为101,百位的位权为102…
相对于十进制,二进制具有如下特点。
(1)只能用两个符号表示数。在中国的八卦中,这两个符号用“—”和“--”表示;在数字电路中,这两个符号可以用高电位和低电位、有脉冲和无脉冲、开和关等表示。这里,统一用0和1表示。
(2)“逢二进一”,即在某一位上,当够2时,就要向左边的位进一。因为每个位上的最大值只能是1。
(3)十进制数从小数点往左,各位的位权依次为20、21、22…,即1、2、4、8、16、32、64、128、256、512、1024、2048等;小数点往右各位的位权依次为2-1、2-2…,即0.5、0.25、0.125、0.0625、0.03125等。
2. 十进制数与二进制数之间的转换
表3.1为几个十进制数与二进制数之间的对应关系。
表3.1 几个十进制数与二进制数之间的对应关系
十进制数
0
1
2
3
4
5
6
7
8
9
10
16
32
二进制数
0
1
10
11
100
101
110
111
1000
1001
1010
10000
100000
下面介绍一般数的转换方法。
1)二—十(B→D)进制转换
规则:将1所在的位上的位权值相加。
例3.1 101.11101B= ?D。
解:
位 权:22 21 20 2-1 2-2 2-3 2-4 2-5
二进制数:1 0 1 . 1 1 1 0 1
计 算:4 + 0 + 1 + 0.5+0.25+0.125 +0 + 0.03125 = 5.90625D
2)整数十—二转换
规则:从足够的位权值开始,连续减去各个位权值:够则减该位取1,不够则不减该位取0;直到减完最后一个位权值1。
例3.2 158D=?B。
解:考虑158在128与256之间,则先减128,该位取1,差为30;减64,不足,该位取0;再减32,不足,取0;再减16,够减,取1,差为14;减8。够减取1,差为6;减4,够取1,差为2;减2,够取1,差为0;减1,不够取0,结束。
上述过程如图3.1所示。
图3.1 将158转换为二进制数
3)小数十—二进制转换
规则:从小数点开始,连续减各小数位的位权值,够则减该位取1,不够则不减该位取0,直到减为0或到要求的位数。
例3.3 0.24D= ?B,到小数点后4位。
解:计算过程如图3.2所示。
图3.2 将0.24转换为二进制数
注意:第一个0与小数点要照写。
有时,小数十—二进制转换,会出现转换不完的情况。这时可按“舍0取1”(相当于四舍五入)的原则,取到所需的位数。
3. 十六进制编码
二进制数书写太长,难认、难记。为了给程序员提供速记形式,使用中常用十六进制(Hexadecimal)作为二进制的助记符。
十六进制记数符为0、1、2、3、4、5、6、7、8、9、A(a)、B(b)、C(c)、D(d)、E(e)、F(f)。
将二进制数由小数点起,向两侧分别以每4位划一组(最高位与最低位不足4位以0补),每一组便为一个十六进制数。
例3.4 10110 1110.1111B=?H。
解:
0001 0110 1110 . 1111
补零
1 6 E F
所以 10110 1110.1111B=16E.FH。
4. 符号的0、1编码
在计算机中不仅要用0、1编码的形式表示一个数的数值部分,而且正、负号也要用0、1编码来表示。一般用数的最高有效位(最左边一位)(Most Significant Bit,MSB)表示数的正负,通常
MSB=0 表示正数,如+1011表示为01011;
MSB=1 表示负数,如-1011表示为11011。
一个数在机器内的表示形式称为机器数。它把一个数连同它的符号在机器中用0和1进行编码,这个数本身的值称为该机器数的真值。上边的01011和11011就是两个机器数,它们的真值分别为+1011和-1011。
当然,不考虑数的正、负时,不需要用1位来表示符号。这种没有符号位的数,称为无符号数。由于符号位要占用1位,所以用同样字长,无符号数的最大值比有符号数要大一倍。如字长为4位时,能表示的无符号数的最大值为1111,即15,而表示的有符号数的最大值为111,即7。
5. 实数的0、1编码
在数学中实数用来测量连续的量,在理论上小数点的右边是一个无穷的数列(可以是循环的,也可以是非循环的)。在实际应用中被近似为一个有限小数。在计算机中,比起整数的0、1编码来,带小数的数的0、1编码,还要考虑处理的效率问题,因而也就复杂一些。通常,一个实数可以近似表示成指数形式。例如,一个十进制数可以表示为
N1=3.14159=0.314159×101=0.0314159×102
同样,一个二进制数可以表示为
N2=0.011B=0.110B×2-1=0.0011B×21
一般地说,一个任意二进制数N可以表示为
N=2E×M
式中:
E为数N的阶码;M为数N的有效数字,称为尾数。为了用二进制表示这样形式的实数,可以把一个字长分为如图3.3所示的4部分。其中,Ef、S分别称为阶码E和尾数M的符号位,它们一般占1b。使用这种格式的关键是规定好总的字长和每部分的长度。
图3.3 浮点数的机内表示
例如,用4B字长,阶码E占4b,-1011.01101可以表示为图3.4所示的样子。其中的尾数M部分为纯小数0.1011 0110 1000 0000 0000 0000。
图3.4 一个浮点数的实例
3.1.2 西文字符的0、1编码
1.ASCII字符集
西文字符中最基本、应用最多的字符有以下一些。
(1)26个小写拉丁字母。
(2)26个大写拉丁字母。
(3)约25个特殊字符,如[、+、-、@、|、# 等。
(4)10个数字码:0、1、2、3、4、5、6、7、8、9。
共计87个字符。由于位于64~128之间,所以需要7b的长度,再用最高位b7作为奇偶校验位,正好是一个字节。
1967年美国国家标准学会(American National Standards Institute,ANSI)提出一套编码方案作为数据传输的标准码,称为美国信息交换标准码(America Standard Code for Information Interchange,ASCII)。ASCII后来被国际标准化组织(International Organization for Standardization, ISO)接纳,批准作为国际标准ISO646。1981年我国参照ASCII码颁布了国家标准《信息处理交换用七单位字符编码》,与ASCII码基本相同。ASCII是一个如 表3.2所示的7b组成的字符集。
表3.2 ASCII码(7位码)字符表
在码表中查找一个字符所对应的ASCII码的方法是:向上找b6b5b4,向左找b3b2b1b0。例如,字母J的ASCII码中的b6b5b4为100B(4H),b3b2b1b0为1010B(AH)。因此,J 的ASCII码为1001010B(4AH)。
字母和数字的ASCII码的记忆是非常简单的:只要记住了一个字母或数字的ASCII码(例如,记住A为十进制的65,0的ASCII码为十进制的48),知道相应的大小写字母之间差32,就可以推算出其余字母、数字的ASCII码。
由于标准ASCII字符集字符数目有限,在实际应用中往往无法满足要求。为此,国际标准化组织又制定了ISO 2022标准,在保持与ISO 646兼容的前提下,将ASCII字符集扩充为8b的统一方法。多出的128个0、1编码称为扩展ASCII码(Extended ASCII),以适用于不同国家和地区使用。这样,就形成两个ASCII字符集:基本ASCII码(最高位为0)和扩展ASCII码(最高位为1)。
2.Unicode字符集
扩展ASCII码字符集最多可以提供256个字符,虽然足够表示英语,但也仅局限于英语的表示,对于世界大多数文字,还是无能为力。为此,国际标准组织ISO于1984年4月成立ISO/IEC JTC1/SC2/WG2工作组,针对各国文字、符号进行统一编码。Unicode (Universal Multiple Octet Coded Character Set)于1992年6月通过DIS(Draf International Standard)。Unicode字符集采用16b表示字符,能够表示的字符数为65?534个,其中包含符号6811个、汉字20?902个、韩文拼音11?172个、造字区6400个,保留20?249个。
为了与ASCII兼容,Unicode设计成ASCII的超集,即Unicode字符集中的前256个字符的编码与扩展ASCII字符集完全一样。
3. 字符的输出
西文是拼音文字,计算机的键盘就是按照这一特点设计的。在采用ASCII的系统中,从键盘上输入一个字符,在计算机内部存储的是一个ASCII码值——机内码(在机器内部存储字符的码)。但是,如何再将这个字符输出呢?并且如何由一个ASCII码得到某种字体的该字符呢?
实际上,不同字体的字符都是一个图形。存储这个图形的方法是在一个栅格中用方块组成的点阵画出一个字符的图形——称为字模。图?3.5?为字符 A的字模。它是一个8×8的点阵。字模的点阵数越多,字形就越好看,但占用的存储空间越大。如一个8×8点阵字模占用的存储空间8B,一个16×16点阵字模占用的存储空间32B。一般的点阵类型有16×16、24×24、32×32、48×48等。除了点阵组成的字模外,还可以采用矢量或曲线画出的字模。
一种字体的所有字符的字模,构成一个字模库。要进行输出某种字体的一个字符,就须驱动该字模库中需要调用的字模的存储地址(或者干脆把某字符对应的ASCII码值当作字库的地址),然后控制打印机的针头或显示器的像素(发光点),打印或显示出要求字体的要求字符。
3.1.3 汉字的0、1编码
1. 几种常用的汉字机内编码方案
汉字是世界上符号最多的文字,历史上流传下来的汉字总数有七八万之多。为了解决汉字的编码问题,人们推出了多种汉字编码方案。下面介绍常用的几种常用的汉字编码方案。
1)GB 2312—1980和GB 2312—1990
GB 2312—1980是1980年发布的中文信息处理的中国国家标准,全称是GB 2312—1980《信息交换用汉字编码字符集 基本集》,共收录6763个简体汉字、682个符号,其中汉字分为两级:一级字3755,以拼音排序;二级字3008,以偏旁排序。
GB 2312—1980为基本汉字编码,在中国大陆及海外使用简体中文的地区(如新加坡等)是强制使用的唯一中文编码。1990年又制定了繁体字的编码标准GB 12345—1990《信息交换用汉字编码字符集 第一辅助集》,目的在于规范必须使用繁体字的各种场合,以及古籍整理等。该标准共收录6866个汉字(比GB 2312多103个字,纯繁体的字大概有2200余个。
GB 2312—1980和GB 2312—1980都是采用双字节编码。为了与系统中基本的ASCII字符集区分开,所有汉字编码的每个字节的第一位都是1。例如,“啊”字的编码为0xB0A1。
2)Big5编码
Big5编码是目前中国台湾、香港地区普遍使用的一种繁体汉字的编码标准,包括440个符号,一级汉字5401个、二级汉字7652个,共计13?053个汉字。Big 5 是一个双字节编码方案,其第一字节的值在十六进制的 A0~FE 之间,第二字节在 40~7E 和 A1~FE 之间。因此,第一字节的最高位是 1,第二字节的最高位则可能是 1,也可能是 0。
3)GBK编码
GBK全称“汉字内码扩展规范”(俗称大字符集),是中国大陆地区制定的。GBK工作小组于1995年12月完成GBK规范。该编码标准兼容GB?2312,共收录汉字21?003个、符号883个,并提供1894个造字码位,简、繁体字融于一库。
4)Unicode编码
如前所述,Unicode字符集包含汉字20?902个。
5)GB 18030—2000
2000年3月,信息产业部和质量技术监督局在北京联合发布了《信息技术和信息交换用汉字编码字符集、基本集的扩充》,国家标准号为GB?18030—2000,收录了27?484个汉字,还收录了藏、蒙、维等主要少数民族的文字,总编码空间超过150万个码位,为解决人名、地名用字问题提供了方案,为汉字研究、古籍整理等领域提供了统一的信息平台基础。该标准于2000年12月31日强制执行。 GB 18030—2000 作为 GBK for Unicode 3.0 的更新而诞生,并且 作为GB 2312—1980《信息交换用汉字编码字符集基本集》的扩展,向下兼容 GBK 和 GB?2312—1980 标准。
GB 18030是1-2-4字节变长编码。
单字节,其值从0到0x7F。
双字节,第一个字节的值从0x81到0xFE,第二个字节的值从0x40到0xFE(不包括0x7F)。
四字节,第一个字节的值从0x81到0xFE,第二个字节的值从0x30到0x39,第三个字节的值从0x81到0xFE,第四个字节的值从0x30到0x39。
这几种编码都是机内码。
2. 汉字的输入——汉字外码
现在使用的计算机键盘是根据英文设计的,而汉字形状复杂,没有确切的读音信息,且一字多音、一音多字,要像输入西文字符那样在现有键盘上利用机内码进行输入非常困难。为此,不得不设计专门用来进行输入的汉字编码——汉字外码。常见的输入法有以下几类。
(1)按汉字的排列顺序形成的编码(流水码),如区位码。
(2)按汉字的读音形成的编码(音码),如全拼、简拼、双拼等。
(3)按汉字的字形形成的编码(形码),如五笔字型、郑码等。
(4)按汉字的音、形结合形成的编码(音形码),如自然码、智能ABC。
输入码在计算机中必须转换成机内码,才能进行存储和处理。
3. 汉字的字模
汉字字模的原理与西文字符的字模基本相同,只是由于汉字笔画复杂,为了表达清晰,要比西文字符需要更多的点阵。图3.6为一个24×24点阵的汉字字模 示例。
4. 汉字系统的工作过程
图3.7描画了一个计算机上从汉字的输入到输出(显示)的过程。
……