微机原理与应用
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

1.2 微型计算机中的数据类型

1.2.1 常用数据类型

日常生活中人们主要使用十进制,也辅以其他进位制,如十二进制(以月计年)、六十进制(以分计时、以秒计分)等。计算机以二进制为基础,在进行输入、输出、存储、显示时也用到其他进位制。

1.进位计数制

每种进位制都有自己的基数,即该进位制中允许选用的基本数码个数。如十进制数每个数位上允许选用0、1、2、…、9共10个不同数码中的一个,十进制的基数为10,每位计满10向高位进1。

同一个数码处在数中不同位置时,它所代表的数值是不同的。如十进制数6666.66,最高位在小数点左边第四位,是千位,该位上的6代表的数值是数码6乘以103,小数点左边第三位到第一位依次是百位、十位、个位,其上的6代表的数值分别是数码6乘以102、10(即101)和1(即100),小数点右边的2个6分别在十分位和百分位上,所代表的数值分别是6乘以10−1和10−2。一般而言,每个数码所代表的数值等于该数码乘以一个常数,这个常数以基数为底,以数码所在位置的序号(小数点向左从0开始递增,小数点向右从−1开始递减)为指数的整数次幂,这就是该数位的“权”。十进制的千、百、十、个、十分、百分位的权依次是103、102、10、1、10−1、10−2

(1)r进制。r进制数数码有r个:0、1、2…、(r−1);计数或运算时逢r进1,借1当r;各位的权为r的相应次幂;左移i位相当于该位乘以ri,右移i位相当于该位除以ri

n位整数、m位小数的r进制数N的数值都可以按权(ri)展开成多项式之和:

其中整数部分n位,小数部分m位,nir个数码0、1、…、(r−1)个中的某一个,ri是第i位的权。

任何一个数N,若小数点不动,数码整体向左移i位,则相当乘以ri;数码整体向右移i位,则相当除以ri(即乘以r−i)。

计算机中数据移位,都是指组成数据的整个数码移动,小数点保持不动。

(2)十进制。十进制数数码有10个:0、1、2、…、9;计数或运算逢10进1,借1当10;各位的权为10的相应次幂;左移i位相当乘以10i,右移i位相当除以10i

n位整数、m位小数的十进制数X的按权展开式为,其中di是第i位的数码,10i是第i位的权。如。表示十进制数时,在数的末尾加D(Decimal system)或不加任何标记。

(3)二进制。二进制数数码有两个:0、1;计数或运算时逢2进1,借1当2;各位的权为2的相应次幂;左移i位相当乘以2i,右移i位相当除以2i

n位整数、m位小数的二进制数X的按权展开式为:,其中bi是第i位的数码,2i是第i位的权。如。表示二进制数时,在数的末尾加B(Binary system)。

(4)十六进制。十六进制数数码有十六个:0、1、2、…、9、A、B、C、D、E、F;计数或运算时逢16进1,借1当16;各位的权为16的相应次幂;左移i位相当乘以16i,右移i位相当除以16in位整数、m位小数X的按权展开式为:,其中hi是第i位的数码,16i是第i位的权。如11+12×16−1+7×16−2。表示十六进制数时,在数的末尾加H(Hexadecimal system)。

(5)八进制。八进制数数码有八个:0、1、2、3、4、5、6、7;计数或运算时逢8进1,借1当8;各位的权为8的相应次幂;左移i位相当乘以8i,右移i位相当除以8in位整数、m位小数X的按权展开式为:,其中qi是第i位的数码,8i是第i位的权。如。表示八进制数时,在数的末尾加Q(Octal system,其中O易与0混淆,用Q代O)。

二进制只有两个数码,很容易用有两种稳定状态的物理器件表示,运算规则简单,易用逻辑代数化简,而且节省设备,因此现代计算机无例外地采用了二进制。但二进制数书写冗长、易错、难记,因此一般用十六进制或八进制来缩写之。

2.常用进位计数制间的转换

(1)任意进制到十进制的转换

基本方法:按权值展开相加。

如:15.23=1×101+5×100+2×10−1+3×10−2

0.A27FH=A×16−1+2×16−2+7×16−3+F×16−4=0.6347503

10011.101B=1×24+1×21+1×20+1×2−1+1×2−3=19.625

(2)十进制转换为任意进制

整数部分:除以基数取余数;小数部分:乘以基数取整数。如十进制转换为二进制,整数部分除2取余,小数部分乘2取整。

因此,36.8125=100100.1101B。

(3)二进制与八进制、十六进制间的转换

1位八进制数相当3位二进制数,1位十六进制数相当4位二进制数。故二→八或二→十六的方法为:以小数点为基准,整数部分向左3位或4位二进制数化为1位八进制或十六进制数,不足3或4位添前0;小数部分向右3位或4位二进制数化为1位八进制或十六进制数,不足3或4位补后0;我们将二→八或二→十六的转换方法形象地叫做三合一或四合一。

反之亦然,八→二或十六→二方法为:以小数点为基准,整数部分向左、小数部分向右将1位八进制或十六进制数化成3或4位二进制数,再去掉无意义的前0和后0;同样,我们将八→二或十六→二的转换方法形象地叫做一分三或一分四。

常用进位计数制之间的转换方法如图1-1所示。

图1-1 常用进位计数制之间的转换

3.数的码制

带符号数在机器中一般有原码、反码和补码三种表示法。

(1)原码。最高位表示符号:0为正,1为负,数值的尾数部分不变。这就是原码的表示法。用+、−表示符号正负的二进制数称为真值。

以8位字长为例,若:X=+45=+101101B,则[X]=00101101B

          Y=−45=−101101B,则[Y]=10101101B

当字长为8(即n=8)时,整数原码的表示范围为:−127≤X≤127;当字长为16时,表示范围为−32767≤X≤32767。

不管n为多少,0的原码有两种表达形式,以n=8为例:

[+0]=00000000B, [−0]=10000000B。

计算机中加减运算是用得最多的算术运算,而原码作两数的加减运算时相当麻烦:以加法为例,要先判两数符号的异同,相同时两数直接相加;若不相同再判两数的绝对值大小,然后以绝对值大的数减去绝对值小的数,得到结果的绝对值,最后将绝对值大的数符赋给结果。减法原码运算同样麻烦。为了简化运算,先后发展了有符号数的反码和补码表示方法。

(2)反码。正数的反码与原码相同,符号位为0,尾数不变;负数的反码符号位为1,数值的尾数逐位变反。

若真值X=+1010100B求X的反码:

X为正数,[X]=[X]=01010100B

若真值X=−1010100B求X的反码:

X为负数,[X]=10101011B

n=8时,整数反码的表示范围为:−127≤X≤127;当n=16时为:−32767≤X≤32767。

0的反码有两种表达形式,以8位为例:[+0]=00000000B,[−0]=11111111B。

由反码求真值,若符号位为0,尾数即其真值;若符号位为1,尾数逐位变反,再加上负号。也可以先由反码求原码:[X]]=[X],再从原码求真值。

(3)补码。一个绝对值小于模的数,若为正,其补码就是该数本身;若为负,其补码就是该数与模的和。

若真值X=+010100B求X的补码:

X为正数,[X]=[X]=[X]=00010100B

若真值X=−010100B求X的补码:

X为负数,[X]=10010100B,[X]=11101011B,[X]=11101100B

整数补码表示的范围:n=8时为−128≤X≤127,n=16时为−32768≤X≤32767。

按模的运算规则,0的补码只有一种形式。以8位为例:

[+0]=00000000B

[−0]=100000000B=00000000B (Mod 28

补码表达的范围在负数端扩展了一个,n位补码可表达2n个数。以8位为例,−128这个数原码和反码不能表示(已经溢出),而补码却能表示。按照补码的表达式:

[−128]=28×1+10000000=100000000+10000000=110000000=10000000 (M0d 28

补码求法:正数求补码,符号位为0,尾数不变;负数求补码,符号位为1,尾数各位求反加1。

1.2.2 常用的编码

信息是对人有用的数据。计算机内把数据区分为数值型数据和非数值型数据。信息二进制编码指字符、文字和图像等在计算机内的表示。

1.字符编码

字符(Character)泛指由拉丁字母、数字、标点符号及一些特殊符号所组成的西文。一种文字的所有字符的集合叫做该文字的字符集。字符集中的每一个字符各用一个二进制代码来标识,它们构成了该字符集的代码表,简称码表。

字符集有多种,每种字符集的编码方法也多种多样。计算机中用得最普遍的西文字符集是ASCII码。ASCII是美国信息交换标准码(American Standard Code Information Interchange)的缩写,原是信息交换码的美国国家标准,后被ISO(International Standard Organization:国际标准化组织)接受为国际标准,称为ISO—646。它又称为国际5号码,代号IA5。ASCII码适用于所有拉丁文字字母,已在全世界通用。我国相应的国家标准是GB1988,称为《信息处理交换用的七位编码字符集》标准。

国际上通用的7位ASCII码,包含10个阿拉伯数字、52个大小写英文字母、32个标点符号、34个控制码,共128个字符,用7位二进制数表示(27=128),具体编码如表1-1所示。

7位ASCII码在计算机中以一个字节(8位)存放,多出的一位(最高位)一般保持为0,或用做奇偶校验位。

表1-1 美国信息交换标准七位ASCII码

随着计算机应用的普及,国际标准化组织在兼容ISO 646的基础上,制定出ISO 2022标准——《七位字符集的代码扩充技术》。该标准把原来的7位码扩展成8位码,可以表示256个字符,扩充了希腊字母、数学符号、外语字母、商用图符、游戏符号等。

西文字符集较常用的另一种编码是EBCDIC码,用8位二进制数编码标识一个字符,共有256个。该编码多用于IBM公司的某些计算机中。

2.汉字编码

汉字是中文字符,是汉文字的基本构成单位。汉字数量巨大,总数超过六万,且字型复杂,异体字多,同音字多,这给汉字的编码、处理、传输、交换、输入、输出带来不少困难。

计算机系统中汉字在不同应用界面有不同的编码,如输入、存储、传输、交换、显示等不同场合同一汉字各有不同的编码,同一应用界面也存在多种汉字代码。

以我国为主,世界上许多国家和地区都使用汉字。按实用频度可把汉字分为高频字(约100个)、常用字(约3000个)、次常用字(约4000个)、罕见字(约8000个)和死字(约45000个)。

我国1981年公布了《信息交换用汉字编码字符集·基本集》(GB2312—80)。该标准选取6763个常用汉字和682个非汉字字符,为每个字符规定了标准代码,供这7445个字符在不同计算机系统之间进行信息交换使用。该字符集及其编码称为国标交换码,简称国标码。

GB2312字符集由三部分组成:第一部分是字母、数字和各种常用符号(拉丁字母、俄文字母、日文平假名与片假名、希腊字母、制表符等)共682个;第二部分是一级常用汉字3755个,按汉语拼音顺序排列;第三部分是二级常用汉字3008个,按偏旁部首排列。

GB2312国标字符集构成一个二维平面,分成94行94列,行号称为区号,列号称为位号,分别用七位二进制数表示。每个汉字或字符在码表中都有各自确定的位置,即有一个唯一确定的14位编码(7位区号在左,7位位号在右),用区号和位号作为汉字的编码就是汉字的区位码。GB2312—80字符集中字符二维分布如图1-2所示。

图1-2 GB2312—80字符集二维分布

汉字的区位码与国标码不相同。为了正确无误地进行信息传输,不与ASCII码的控制代码相混淆,在区位码的区号和位号上各自加32(即20H),就构成了该汉字的国标码。

为了存储与处理方便,汉字国标码的高低七位各用一个字节(8位)来表示,即用两个字节表示一个汉字。在计算机中双字节汉字与单字节西文字符混合使用、处理,汉字编码的各个字节若不予以特别标识,就会与单字节的ASCII码混淆不清。为此,将标识汉字的两个字节编码的最高位置为1。这种最高位为1的双字节汉字编码就是大陆普遍采用的汉字机内码,简称内码,是计算机内部存储、处理汉字所使用的代码。内码、国标码、区位码三者的关系是:

高字节内码=高字节国标码+80H=区码+20H+80H=区码+0A0H=区码+160

低字节内码=低字节国标码+80H=位码+20H+80H=位码+0A0H=位码+160

在许多场合GB2312—80基本集汉字不够用,国家先后制定了两个扩充的汉字字符集(两个辅助集)。繁体汉字在一些地区和领域仍在使用,针对上述三个汉字字符集又制定出相应的繁体汉字字符集,国家标准代号是GB12345—90《信息交换用汉字编码字符集·辅助集》,包含了717个图形符号和6866个汉字。

汉字编码字符集有多种,不同的计算机可能选择不同的汉字字符集及其编码,选择不同的内码来表示。BIG5是我国台湾省计算机系统中使用的汉字编码字符集,包含了420个图形符号和13070个繁体汉字(不用简体字)。

3.图像编码

图像表示法用m×n个像点(Pixel,即像素)来表示画面内容,又称为位图表示法或点阵表示法。图像特别适合表现含有大量细节(如明暗、浓淡、层次、纹理等)、色彩丰富的照片、绘画之类的画面。

常用彩色空间(又称彩色模型)来描述图像颜色。常用的彩色空间有RGB(红绿蓝)空间、CMYK(青橙黄黑)空间、YUV(亮度色差)空间。任何一种颜色都可在上述彩色空间中精确描述。图像在彩色空间的每一个分量的所有像素构成一个位平面,彩色图像有三或四个位平面,单色图像只有一个位平面。组成图像的所有位平面中像素的位数之和称为最大颜色数,也叫图像深度。图像的数据量等于图像宽度×图像高度×图像深度/8(字节长度)。表1-2给出几种常用图像的数据量。

表1-2 常用图像的数据量

一幅静止图像的数据量尚且如此,三维动态画面的数据量更是大得惊人,必须经过压缩编码才能有效地传输、存储。