计算机中信息的表示与存储
计算机的主要功能是进行数值运算、信息处理和信息存储。在计算机中对表示数值、文 字、声音、图形、图像等各类信息的数据所进行的运算、处理与存储,是由复杂的数字逻辑 电路完成的。数字逻辑电路只能接收、处理二进制数据代码,因此,计算机中数值和信息的 表示方法,存储方式与我们日常使用的方法是不同的。
十进制与二进制的相互转换
十进制转换成二进制
将十进制数转换成二进制数时,需要对整数部分和小数部分分别进行,然后将各自得到 的结果组合,以获得最后结果。
转换步骤如下:
① 整数的转换:采用除 2 取余法,得到的余数,其高低位顺序由后(下)向前(上)取;
② 小数的转换:采用乘 2 取整法,得到的整数,其高低位顺序由前(上)向后(下)取;
③ 将转换获得的整数和小数部分组合起来,即得转换后的二进制数
例1:将十进制数 (58.375) 10转换为二进制数
需要指出的是,一个十进制的小数不一定能完全准确地转换成二进制的小数。遇到这种 情况,可以根据精度要求转换到小数点后的某一位为止
例2:将十进制小数 (0.6) 10 转换为二进制数,要求精确到二进制数小数点后 4 位
二进制转换成十进制
二进制数转换成十进制数只需采用按权展开乘幂求和的方法即可。
例1:将二进制数 (111010.101) 2转换成十进制数。
二进制与八进制和十六进制的相互转换
二进制数虽然能被计算机直接接受和识别,但因为只有两个数码,表示同等数值时比其 它进位计数制占用的位数要长。如 1 位十进制数 9,用二进制数表示需要 4 位:1001;2 位 十进制数 99,则需要用 6 位二进制数 1100011 表示。由于在日常书写或阅读时,使用二进 制数很不方便,易出错,所以计算机工作者常常使用八进制数或十六进制数来代替二进制数。
二进制转换成八进制、十六进制
因为八进制的基数为 8,十六进制的基数为 16,分别为二进制的基数 2 的 3 次方和 4 次方,即 1 位八进制数可以用 3 位二进制数表示,1 位十六进制数可以用 4 位二进制数表示。 因此二进制数与八进制数、十六进制数之间的相互转换直接而又简便
二进制数转换成八进制数
将二进制数转换成八进制数的方法是:以小数点为界,整数部分向左,小数部分向右, 每三位一组,用相应的八进制数表示,到左端最高位或右端最低位不足三位时,用 0 补足。
二进制数转换成十六进制数
将二进制数转换成十六进制数的方法是:以小数点为界,整数部分向左,小数部分向右, 每四位一组,用相应的十六进制数表示,到左端最高位或右端最低位不足四位时,用 0 补足。
例1:将二进制数 (1011010111.10111) 2 分别转换成八进制数、十六进制数
八进制数、十六进制数转换成二进制数
将八进制数、十六进制数转换成二进制数的方法是上述转换方法的逆操作。只要将每位 八进制数或十六进制数分别用相应的三位或四位二进制数表示即可
例1:将八进制数 (623.54) 8 ,十六进制数 (5F4.A8) 16 分别转换成二进制数
从上述方法的介绍可以看出,二进制数与八进制数、十六进制数之间的相互转换,规则 统一,方法简便,转换快捷。特别是计算机中的存储容量、字长以及字符编码等都是以字节为基本单位,而==一个字节等于 8 位二进制数,正好可以用两个十六进制数表示。==所以,在书 写程序,表示存储地址、数据时经常使用十六进制数。
计算机中常用进位计数制的特点
进位制 | 十进制 | 二进制 | 八进制 | 十六进制 |
---|---|---|---|---|
基数 | R = 10 | R = 2 | R = 8 | R = 16 |
数码 | 0,1,2,3,4,5,6,7,8,9 | 0,1 | 0,1,2,3,4,5,6,7 | 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F |
位权 | 10i | 2i | 8i | 16i |
规则 | 逢10进1 | 逢2进1 | 逢8进1 | 逢16进1 |
缩写字母 | D (Decimal) | B (Binary) | O (Octal) | H (Hexadecimal) |
计算机与二进制
在计算机中采用二进制数表示各种信息数据,进行运算,主要是因为二进制本身具有一些独特的优点:
- 表示方便:二进制数只有 0 和 1 两个数码,在计算机中非常容易用电子元器件、电子线路、磁芯等 物理部件的两种不同的物理状态来表示。如晶体管的导通与截止,电容的充电和放电,开关 的接通与断开,电流的有与无,灯的亮与灭等。
- 运算简单:二进制的运算法则比较简单,如二进制的加法运算法则只有四条: 0+0=0,0+1=1,1+0=1,1+1=10(逢二进一); 而十进制的加法运算法则有 100 条。另外,二进制数的乘、除法运算只需要通过加法运 算和移位操作就可以完成,这比十进制数的乘、除法运算要简便得多,据此设计的计算机运 算器硬件结构大为简化,也为计算机软件的设计带来很大方便。
- 逻辑运算:0和1分别代表逻辑中的真和假
- 可靠性高:只有两个数字,不易出错
- 转换方便:与各个进制转换都很方便
二进制的运算
二进制的运算包括算术运算和逻辑运算
算数运算
加法运算
二进制的加法运算遵循以下法则: 0+0=0,0+1=1,1+0=1,1+1=10(逢二进一)
例1:求 (110101.11) 2 + (1011.01) 2 =?
所以:(110101.01) 2+ (1011.01) 2 = (1000000.10) 2
减法运算
二进制的减法运算遵循以下法则: 0-0=0,0-1=1(借一当二) ,1-0=1,1-1=0
例1:求 (110101.11) 2 - (1011.01) 2 =?
所以:(110101.11) 2 - (1011.01) 2 = (101010.10) 2
乘法运算
二进制的乘法运算遵循以下法则: 0×0=0,0×1=0,1×0=0,1×1=1
例1:求 (10101.1) 2 × (11.01) 2 =?
所以:(10101.1) 2 × (11.01) 2 = (1000101.111) 2
由上述执行乘法运算的过程可以看出,各个部分积的值取决于乘数的相应位是 0 还是 1。 若乘数的相应位为 0,部分积为 0;若乘数的相应位为 1,则部分积等于被乘数。部分积的 个数等与乘数的位数,每个部分积依次向左移动一位,乘积等于各个部分积的累加和。因此, 在计算机中通常采用移位相加的方法来实现二进制数的乘法运算。
除法运算
二进制的除法运算遵循以下法则:0÷0=0,0÷1=0,1÷0(无意义),1÷1=1
求 (101110.01) 2 ÷ (101) 2 =?
所以:(101110.01) 2 ÷ (101) 2 = (1001.01) 2
由上述执行除法运算的过程可以看出,除法运算与乘法运算的执行过程相似,但移动方 向相反(向右移位),运算相异(减法运算)。因此,在计算机中通常采用移位相减的方法来 实现二进制数的除法运算。
逻辑运算
逻辑运算分为逻辑与(逻辑乘)、逻辑或(逻辑加)、逻辑非
逻辑与
又称逻辑乘法,常用“· ”或“×”或“And ”表示,一假全假。
逻辑与运算的运算规则如下: 0·0=0,0·1=0,1·0=0,1·1=1
例1:设 X=10110110,Y=11010011,求 X·Y =?
所以:X·Y = 10010010
逻辑或
又称逻辑加法,常用“+”或“Or ”表示,一真全真。
逻辑或运算的运算规则如下: 0+0=0,0+1=1,1+0=1,1+1=1
例1:设 X=10110110,Y=11010011,求 X+Y =?
所以:X+Y = 11110111
逻辑非
又称逻辑否定或逻辑反,常用在逻辑值或逻辑变量上加一横,或者用“Not”来表示,与条件相反。
例1:设 A=10110110,求 Ā=?
Ā=01001001
数值型数据在计算机中的表示
真值与机器数
我们日常生活中使用的数值都是使用正号(+)、负号(-)来表示正数和负数的。而在计 算机中,只能使用二进制数表示数值和它们的正、负。一般地,我们将计算机使用的==二进制数的最高位作为符号位,用“0”表示正号,“1”表示负号。==用其余位表示数值的大小。这种在计算机内部将正、负号数字化后得到的数称为机器数,而在计算机外部用正、负号表示 的实际数值,称为该机器数所表示的真值。
例如机器数 1101 所表示的真值是-5,而不是 13。
==机器数表示的数值范围受到字长和数据类型的限制。==计算机的字长和数据类型确定后, 机器数能够表示的数值范围也就确定了。例如对字长为 8 位的计算机,因为最高位作为符号 位,所以八位二进制机器数在计算机中所能表示的最大值是 (01111111) 2,对应十进制数为 +127;最小值为 (11111111) 2,对应十进制数为-127,超出这个取值范围的称为溢出。
为了表示较大的数和较小的数,必须引入浮点数的概念。
定点数与浮点数
定点数
在机器数中,小数点的位置固定不变的数称之为定点数。
若将小数点放在机器数的最后一位后面,那么此时的机器数表示的就是一个纯整数。带符号定点整数的一般形式如下:
对于n为带符号的二进制整数,它可表示数值的位数为n-1位,它的取值范围为:|N|<=2n-1-1。
例如:在字长为16位的计算机中用定点整数表示十进制数 (100) 10和 (-100) 10。十进 制整数 100 和-100 的绝对值相同,|(±100) 10|= (1100100) 2,而符号不同,因此在计算 机中的表示也不同。
若将小数点的位置固定在符号位之后,数值最高位之前,此时的机器数表示的就是一个 纯小数,又称定点小数。定点小数的一般形式如下:
在这里插入图片描述
对于 n 位带符号的二进制定点小数,可表示数值的位数为 n-1 位,其取值范围是|N|≤1-2-(n-1)
例如:在字长为 16 位的计算机中用定点小数表示十进制数 (0.8125) 10 和 (-0.8125) 10。 十进制小数 0.8125 和-0.8125 的绝对值相同,|(±0.8125) 10|= (0.1101) 2,而符号不同, 因此在计算机中的表示也不同。
总结
-
定点数表示方法简单直观,但能够表示的数值范围小,运算中易产生溢出。
-
在以数值计算为主要任务的计算机中,在同样字长的情况下,为扩大数值的表示范围, 可以采用浮点数表示法。
浮点数
小数点的位置在数中是可以变动的,这种数值表示法称为浮点表示法。目前的计算机大 多采用的是浮点表示法。浮点表示法与我们日常生活中的科学计数法类似,它将任意一个二进制数表示成阶码和尾数两部分。
例如:二进制数110.011可以写成下列各种不同的形式:
0.110011×2 11 1.10011×2 10 11.0011×2 1 110.011×2 0
1100.11×2 –1 11001.1×2 –10 110011×2 –11
注意:在上述各式中,2 的指数也是二进制数。如:211,指的是二进制的1+1+1
因此,二进制数 N 的浮点表示法的一般形式为:
N = ±M×2±E
其中:E—是 N 的阶码 (Exponent,又称指数),E 前的正负号称为阶符;
M—是 N 的尾数 (Mantissa),为数值的有效数字部分,M 前的正负号称为数符;
2—是二进制数的基数。
浮点数在计算机中的一般表示形式如下:
由上述表示形式可见,小数点的位置隐含在数符与尾数之间,即尾数总是一个小于 1 的数。数符占一位,用于确定该浮点数的正负。阶码总为整数,用于确定小数点浮动的位数。 阶符也占一位,用于确定小数点浮动的方向。若阶符为正,小数点向左浮动;若阶符为负, 小数点则向右浮动。
为了保证精度,通常需要对浮点小数进行规格化处理,所谓规格化处理指的是要保证尾数部分的最高位为 1。
例如:在字长为 16 位的计算机中用浮点小数表示二进制数 (-110.011) 2。 因为,(-110.011) 2=-0.110011×2 11,所以,(-110.011) 2在机器中的表示如下:(在 16 位中,阶码用 4 位表示,尾数用 10 位表示,阶符和数符各占一位)
原码、反码和补码
从上面对机器数的介绍可以看出,二进制数在计算机中以机器数形式存放时,由符号位 和数值两部分组成,符号和数值全部数字化。符号位占一位,用“0”表示正数,“1”表示 负数,因此,计算机在进行数值运算时,也应考虑到符号位的处理。为了便于计算,机器数 一般有三种表示方法:原码、反码和补码。
原码
原码是机器数的一种简单表示法。用 n 位二进制数的最高位 a n作为符号位,符号位的 “0”表示正号,“1”表示负号,其余位表示二进制数的数值。
设有一个数 N 的绝对值是|N|=a n-1 a n-2 …a 1 a 0,则数 N 的机器数的原码可表示为:
[N]原=a n a n-1 a n-2 … a 1 a 0
当N>0时,an=0
当N<0时,an=1
当N=0时,an=0或1
例1:当计算机的字长 n=8 时,有:
在原码表示法中,“0”有两种表示法:
因为在原码中,最高位是符号位,从次高位开始的其余位才是有效数值位,所以 n 位原码能够表示的数值范围是:-(2 n-1 -1)~(2 n-1 -1)。如字长 8 位的原码能够表示的整数范 围是:-(28-1-1)=-(128-1)=-127 ~ +(28-1-1)=+(128-1)=+127
反码
机器数的反码表示可以很容易地从原码得到。当机器数为正数时,其反码与原码相同; 当机器数为负数时,符号位保持不变(仍为“1”),其余数值位全部按位取反,得到的就是反码。
例1:当计算机的字长 n=8 时,有:
在反码表示法中,“0”也有两种表示法:
反码通常作为求补码的中间过程。
补码
机器数的补码表示也同样可以通过原码得到。当机器数为正数时,其补码与原码相同; 当机器数为负数时,符号位保持不变(仍为“1”),其余数值位全部按位取反后再加 1,得 到的就是补码。简单地说,负数的补码就等于该数的反码加 1。
例1:当计算机的字长 n=8 时,有:
在补码表示法中,“0”只有一种表示法:
优点:不仅可以使符号位和有效数值位同时参与数值运算,而且还可以使减法运算转换成加法运算,从而简化计算机运算器的电路设计。所以,在计算机中, 带符号的数一般都用补码表示
例2:补码的加法运算
由上述 4 个例子可以看出,采用补码加法运算得到的计算结果都是正确的。在(2)和(4) 两个例子中,作为符号位的最高位参加运算后向高位的进位虽然因机器字长的限制而自动丢 失,但并未影响运算结果的正确性。
例3:补码的减法运算
由上述 4 个例子可以看出,补码的减法运算实际上是通过对减数求补的方法把减法运算 转换成了加法运算,得到的计算结果也都是正确的。在(3)和(4)两个例子中,与补码加法运 算中一样,作为符号位的最高位参加运算后向高位的进位虽然因机器字长的限制而自动丢 失,但同样未影响运算结果的正确性。
非数值型数据在计算机中的表示
计算机中的数据可以分为数值数据和非数值型数据两大类。数值数据用于表示数量的多 少,可以参与数值计算。非数值型数据则包括英文字母、阿拉伯数字、各种标点符号、专用 符号、汉字符,以及表示声音、图形、图像等音频、视频信息的数据。所有这些数据,在计 算机中也都只能采用二进制数的编码形式来表示,所以必须对各种数据进行编码。 ==所谓编码,指的是使用某种符号的组合,表示特定对象信息的过程。==例如邮电部门使用 的电报明码、邮政编码,以及车辆牌号,路牌号码,运动员号码等。
二 - 十进制数字编码(BCD码)
在生活中,人们习惯于使用十进制,而计算机内部使用二进制来处理运算和信息的处理较方便。在计算机输入、输出数据,对二进制和 十进制进行转换时,常使用二-十进制编码。
所谓二-十进制编码(Binary Coded Decimal 简称 BCD 码)指的是将每一位十进制数用四位二进制数来表示。因为 4 位二进制数共有十六种状态组合,取其中的十种状态组合即 可表示十进制数的 10 个数码,所以 BCD 的编码方案很多。如有 8421 码、2421 码、5211码、余 3 码、格雷码、余 3 循环码、右移码等。最常用的是 8421 码。
8421BCD 码的编码方式最简单,每一位十进制数用四位二进制数表示,自左向右每一 位二进制数对应的==位权分别是 8、4、2、1,故称之为 8421 码。==在 8421BCD 码中,在 4 位 二进制数的 16 种状态组合中,用 0000~1001 十个状态组合表示十进制数 0~9,而 1010~ 1111 六个状态组合未使用。
例如:(29) 10= (0010 1001) BCD = (11101) 2
BCD码 | 十进制数 | 二进制数 |
---|---|---|
0000 | 0 | 0000 |
0001 | 1 | 0001 |
0010 | 2 | 0010 |
0011 | 3 | 0011 |
0100 | 4 | 0100 |
0101 | 5 | 0101 |
0110 | 6 | 0110 |
0111 | 7 | 0111 |
1000 | 8 | 1000 |
1001 | 9 | 1001 |
0001 0000 | 10 | 1010 |
0001 0001 | 11 | 1011 |
0001 0010 | 12 | 1100 |
0001 0011 | 13 | 1101 |
0001 0100 | 14 | 1110 |
0001 0101 | 15 | 1111 |
ASCII 字符编码
字符数据主要指大小写的英文字母、数字、各种标点符号、控制符号、汉字符等。在计 算机中,它们都被转换成能被计算机识别和接受的二进制编码的形式。除了汉字符,在字符 编码中使用最多、最普遍的是 ASCII 字符编码。其全称是 American Standard Code for Information Interchange(美国信息交换标准代码)。ASCII 码现在已经成为西文字符编码的国际通用标准。
标准 ASCII 码用 7 位二进制数表示一个字符。因为 2 7=128,所以可以表示 128 个不同 的字符。在这 128 个字符中有 95 个编码,对应着使用计算机终端设备(如标准键盘)能够 输入并且可以显示,也可以在打印机上打印出来的 95 个字符。这 95 个字符包括:大小写各 26 个英文字母;0~9 十个阿拉伯数字符;常用的标点符号如逗号、点号、分号、引号、问 号、各种括号等;运算符号如加号、减号、等于号、大于号、小于号等;特殊符号如“@”、 “#”、“$”、“∧”、“&”等。它们的二进制编码值从 010 0000~111 1110,对应的十进制 编码值从 32~126。
另外,还有 33 个字符,它们的二进制编码值为== 000 0000~001 1111 和 111 1111==,对应 的十进制编码值为 0~31 和 127。这些字符不能被显示或打印出来。它们被用作控制字符, 以控制计算机某些外围设备的工作特性和某些计算机软件的运行情况。
在计算机中,因为每个 ASCII 码字符占用一个字节(一个字节八个二进制位 8 bit),故称之为单字节字符。标准 ASCII 码字符只使用低 7 位,最高位为 0。有时最高位可以用来存放奇偶校验的值,因此该位也可 称为校验位。
中文字符编码
英文和其它西文都是拼音文字,其基本符号比较少,编码较为容易,如上面介绍的 ASCII 代码,仅用了一个字节中的低 7 位即可表示出来。而且在一个计算机系统中,字符的输入、 内部处理、存储、输出等都可以使用同一代码。
用计算机系统处理中文字符,同样需要将中文字符代码化。但由于汉字是一种象形表意 文字,字的数量巨大,不可能像英文那样使用字母拼写出来,也难以用少量的符号表示出来。 而且在一个计算机的汉字处理系统中,中文字符的输入、内部处理、存储和输出等的要求不尽相同,使用的代码也不尽相同,因此中文字符必须有自己特殊的编码方式。根据汉字在计算机处理过程中的不同要求,汉字的编码主要分为四类:汉字交换码、汉字机内码、汉字输入码和汉字字形码。
汉字交换码
汉字交换码又简称国标码(GB)。它是由国家制定的用于汉字信息交换的标准汉字编码。 1980 年国家标准局公布了 GB2312-80 标准,其全称是“信息交换用汉字编码字符集—基本集”。该基本集中包含了一、二级汉字 6763 个,其它各种字母、标点、图形符号 682 个,共 计 7445 个字符。其中一级汉字 3755 个,按拼音字母顺序排序;二级汉字 3008 个,按部首顺序排序。
交换码规定:每个汉字符采用两个字节表示,故称之为双字节字符。为了与 ASCII 码 兼容,交换码只使用了两个字节的低 7 位,各字节的最高位也为 0。前一个字节称为区码, 后一个字节称为位码。有了统一的国标码,不同系统之间的汉字信息就可以互相进行交换了。
为了统一地表示世界各国的文字,1992 年 6 月,国际标准化组织(ISO)公布了“通用 多八位编码字符集”国际标准 ISO/IEC10646,简称 UCS(Universal Multiple-Octet Coded Character Set)。我国则于 1993 年公布了与 ISO/IEC10646 相适应的国家标准 GB13000。此后, 又于 2000 年 3 月发布了最新的国家标准 GB18030-2000,又称“信息交换用汉字编码字符集——基本集扩充规范(GBK)”。GB18030 标准采用单字节、双字节和四字节三种方式对字符 进行编码,全面兼容 GB2312 和 GB13000,收录了包括中、日、韩(CJK)统一汉字字符在内的繁、简汉字,和其它符号共计二万七千余字。总编码空间达到 150 万个码位以上,为彻底解决邮政、户政、金融、 地理信息系统等迫切需要的人名、地名用字问题提供了解决方案,也为汉字研究、古籍整理等领域提供了一个统一的信息平台。这项标准还同时收录了藏、 蒙、维、彝等多种少数民族文字,为今后计算机中文信息处理的进一步发展和应用奠定了基础。
汉字机内码
汉字机内码就是汉字符在计算机内部存储、处理时的表示代码。每个汉字符仍用两个字节表示,但为了与 ASCII 码字符相互区分,避免混淆,汉字机内码将各字节的最高位设置为 1。因此汉字机内码与汉字交换码之间有确定的对应关系。
汉字交换码和机内码的二进制、十六进制编码及其相互关系如下表所示:
汉字符 | 国标码(交换码) | 机内码 | ||
二进制 | 十六进制 | 二进制 | 十六进制 | |
啊 | 00110000 00100001 | 30 21 | 10110000 10100001 | B0 A1 |
国 | 00111001 01111010 | 39 7A | 10111001 11111010 | B9 FA |
汉字输入码
输入码指的是直接使用计算机终端的西文标准键盘将汉字符输入计算机的各种汉字输 入编码方法。如拼音输入法、区位码输入法、五笔字型输入法、表形码输入法、自然码输入 法等等。输入方法不同,输入码也不同。输入码又常称为外码。 根据汉字输入编码方法的不同,可以分为四大类:数字码、拼音码、字形码和音形码。
数字码
数字码就是==使用数字组合作为汉字符的输入编码。==常用的有区位码、国标码、电报码等。
区位码是将汉字符分成 94 个区,每个区分成 94 位,区和位构成一个二维表,表中每个 格内一个汉字符。使用各两位十进制数字分别代表区码和位码。例如“国”字,位于 25 区, 90 位,则其区位码是 2590。
国标码则使用各两位十六进制数字分别表示机内码的第一字节和第二字节。
电报码使用四位十进制数字表示一个汉字符。
数字码的优点是输入四位数字就可以直接输入一个汉字符,输入码等长,没有重码,并可输入一些特殊的图形符号。而且区位码和国标码与机内码有确切的对应关系,转换简单方便。但缺点是输入码为数字串,难以记忆。
拼音码
拼音码是以汉字读音为基础的输入方法。拼音输入法的使用简单方便,易于学习掌握。 但因为拼音输入码不等长,汉字的同音字较多,在输入时重码率较高,经常需要进行同音字选择,所以影响了输入速度。
随着计算机软硬件技术的不断提高,多种采用简拼、双拼的方法以缩短输入码长,使输入码等长;能够辨识南方等地方口音的模糊音识别法;使用自动组词、组句方法,以词组、 语句为输入单位的智能拼音输入法相继问世,大大提高了拼音输入法的输入速度。拼音输入法因此而成为使用最为广泛的输入方法。
字形码
汉字是一种象形表意文字,数量虽多,但都是由一些基本笔划和用笔划构成的部件组合而成的。据此可以将汉字分解成若干个笔划和部件,用标准键盘上的字母和数字表示。按照 一定的规则输入这些笔划和部件,就可以输入汉字。这种汉字输入法称为字形码。字形码具有==输入码等长,重码率低,输入速度快的特点。==但要掌握拆分汉字的方法与规律,熟悉字形 码与键盘的对应关系,需要付出较多的精力去学习。五笔字型、表形码等均属于字形码。其中五笔字型输入法是最有影响的一种字形输入法。
音形码
音形编码是将拼音码与字形码相结合的编码方法。根据是以拼音为主、字形为辅,还是以字形为主、拼音为辅又可以分为音形码和形音码。自然码、太极码等都属于音形码输入法。
汉字字形码
汉字字形码是用于表示汉字字体形态的字模数据代码,用于汉字符的显示和打印。通常用字形点阵或着矢量函数表示。
用点阵表示字形时,将汉字符分解成在由 n 行×n 列构成的一个点阵中的若干个点。例 如在 16×16 的点阵中,划分了 256 个格,有字形笔划的格对应黑点,用二进制数 1 表示;无 笔划的格对应白点,用 0 表示;每行两个字节,十六行共 32 字节,构成一个汉字符的 16×16 点阵的字形代码。下图是汉字“次”的字形点阵。
汉字的输入,计算机内部的处理,再到汉字输出,需要多种汉字编码的支持和相互转换才能完成。汉字处理系统的工作流程如下图所示
数据在计算机中的存储
名词术语
位(bit)
位(bit)是二进制数字(binary digit)的缩写。是存储在计算机中的最小的数据单位,也就是二进制数的最小单位:有 0 和 1 两个值的一位二进制数。位用小写字母 b 表示。在计算机网络通信中,常用 bits per second(bps,每秒多少位)来衡量数据传输速率的快慢。
位模式
一个位并不能解决数据的表示问题,因为它只能表示 0 或者 1 两个不同的值或者状态。 要存储或者表示更大的数据需要使用位模式。==位模式指的是由若干位组成的一个序列。==位模式的长度取决于要表示的数据的数量。例如 ASCII 码字符一共有 128 个符号,则可以用长度是 7 的位模式表示。
字节
通常将长度为 8 的位模式称之为字节(Byte)。即一个字节由 8 位二进制数构成:1 Byte =8 bit。字节用大写字母 B 表示。字节是用于表示、衡量内存储器或者其他存储设备容量大小的基本单位,常用单位还有:KB、MB、GB、TB、PB、EB 等,换算关系如下:
字(Word)与字长(Word Length)
字指的是 CPU 进行数据处理和运算的单位,字长则是字的长度。字长取决于 CPU 中寄存器存储单元的长度,即 CPU 一次能够直接处理的二进制数据的位数。它的长度直接关系到计算机的计算精度、运算速度和功能的强弱,常用于衡量 CPU 的性能。一般情况下,==字长越长,计算精度越高,处理能力越强。==微处理器的字长已从早期的 4 位、8 位,发展到了 16 位、32 位,目前已达到 64 位。
内存地址(Memory Address)
内存地址指的是内存储器中用于区分、识别各个存储单元的标识符。内存地址使用无符号的二进制整数表示。
地址空间指的是内存储器中可标识的独立地址单元的总数。例如,一个 64K 字节,字长为 1 字节(64=26,1K=210)的内存储器的地址空间需要使用 16 位(2 16)的位模式来表示。用无符号二进制整数表示的起止地址为: 0000 0000 0000 0000~1111 1111 1111 1111;其对应的十进制地址为:0~65535;通常采用十六进制表示为: 0000H~FFFFH。(H指的是16进制)
数据存储
数据在内存储器中是以字为单位存储的。
当计算机 CPU 的字长与内存储器存储单元的字长相同时,则每个存储单元可以存储一个数据(字)。
当 CPU 的字长大于存储单元的字长时,则将一个字按存储单元的字长拆分后顺序存储到连续的存储单元中。例如某计算机 CPU 的字长为 16 位,而内存储器的字长为一个字节。现在要将一个字(1234H)存入存储器时, 需要占用两个连续的存储单元。字的低位字节(34H)存入低地址(0002H)中,高位字节 (12H)存入高地址(0003H)中,在两个存储单元中保存了一个字的数据,如下图所示。 字的存储地址则用存储单元的低地址(0002H)表示。
计算机的工作原理
计算机的工作就是顺序执行存放在内存储器中的一系列指令。
指令、指令系统与程序
指令是一组能被计算机识别并执行的二进制数据代码,是让计算机完成某个操作的命令。 一条指令通常由两个部分组成,前面部分称为操作码,后面部分是操作数,如下图所示。 操作码指明该条指令要完成的操作,如加、减、乘、除,逻辑运算等。操作数是指参加运算的数据或者数据所在的存储单元地址。
==一台计算机的所有指令的集合,称为该计算机的指令系统。==指令系统与计算机的中央处理器 CPU 密切相关,反映、决定了计算机硬件系统的基本功能和主要性能。不同厂家生产 的 CPU 不同,其指令系统也不相同。同一厂家生产的同系列 CPU 的指令系统是向后兼容的。 无论是哪种类型的 CPU,其指令系统都应具有以下功能的指令:
⑴ 数据传送指令:将数据在内存与 CPU 之间进行传送。
⑵ 数据处理指令:对数据进行算术或逻辑运算。
⑶ 程序控制指令:控制程序中指令的执行顺序,如:条件转移、无条件转移、调用子 程序、返回、暂停、终止等。
⑷ 输入/输出指令:用于实现外部设备与主机之间的数据传输。
⑸ 其他指令:对计算机系统的其它管理功能。
用户根据解决某项问题所需的步骤,选择适当的指令,将它们一条一条的按照某种顺序进行有序的排列,计算机依次执行这些指令序列,便可完成预定的任务。按照一定要求组织构成的可完成若干项操作的指令序列就是程序。
计算机的工作原理
计算机的工作过程实际上就是执行指令的过程。计算机在执行指令的过程中,有两种数据在计算机系统的各部件之间流动,它们是数据流和控制流。
数据流指的是计算机处理的原始数据、中间结果和最终结果数据、源程序代码等。控制流是控制器对指令代码进行分析、解释后向计算机系统的各部件发出的控制命令,指挥整个计算机系统协调地进行工作。
下面,以指令的执行过程介绍计算机的基本工作原理。指令的执行过程如下图所示。 计算机执行指令的过程可分为四个步骤:
⑴ 读取指令:根据控制器程序计数器中的地址(0100H),从内存储器中读取指令 (070270H),传送到指令寄存器中。
⑵ 分析指令:对送到指令寄存器的指令(070270H)进行分析,由译码器对操作码(07H) 进行译码,判断该条指令要做的操作,并将其转换成相应的控制电信号;操作数(0270H) 则确定了被操作数据的存放地址。
⑶ 执行指令:操作控制电路根据译码结果向相关部件发出完成该项操作所需的一系列 控制电信号,以完成该项指令所要求的操作。例如,若是做加法的指令,则将内存单元 (0270H)中的数据与累加器中的数据相加,结果仍然放在累加器中。
⑷ 更新计数器:一条指令执行完后,程序计数器自动加 1,或将转移地址码送入程序 计数器后,返回到⑴,进入下一条指令的执行过程。
如此周而复始,CPU 不断的读取指令、分析指令、执行指令 …… 直到整个程序执行 完毕。这就是计算机的工作过程,程序的执行过程。 一般将计算机执行一条指令所需的时间称为一个指令周期。指令周期越短,执行速度越快。计算机系统的所有操作都是在一个统一的脉冲信号的控制下进行的。脉冲信号的频率越高,执行指令的速度就越快。通常所说的计算机工作频率,指的就是同步脉冲信号的频率。