购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

任务1.2
数制与计算机编码

1.2.1 任务描述

本任务主要介绍计算机的运行原理,了解计算机数制与计算机专业术语、数制间的转换、常用的信息单位、计算机中数与文字的表示等知识。通过本任务的学习,学生要掌握数制的转换,了解计算机常用的信息单位、计算机中数与文字的表示等知识。

1.2.2 相关知识

目前计算机的基本元件是超大规模集成电路。不管集成电路如何发展,它无非是把成千上万的晶体管制作在一小片导体芯片上。

晶体管有两种稳定的状态:导电和截止。计算机就是利用晶体管的这个特性来进行运算的。这种状态分别可以表示数据0和1,所以在计算机中采用二进制来表示信息最直接也最方便。

1.数制与术语

(1)数制。数制,即表示数的方法,按进位的原则进行计数的数制称为进位数制,简称进制。例如,1斤等于10两(十进制),1年有12个月(十二进制)等。对于任何进位数制,都有以下3个基本特点。

①每一进制都有固定数目的计数符号(数码)。在进制中允许选用基本数码的个数称为基数。例如,十进制的基数为10,有10个数码:0~9;二进制的基数为2,有2个数码:0和1;八进制的基数是8,有8个数码:0~7;十六进制的基数为16,有16个数码:0~9及A~F。

②逢 R 进1。例如,十进制中逢10进1,二进制中逢2进1,八进制中逢8进1,十六进制中逢16进1。

③采用位权表示法。每个数码在不同的位置上所代表的值不同,如数码3,在个位数上表示3,在十位数上表示30,而在百位数上表示300。这里的个(10 0 )、十(10 1 )、百(10 2 )等,称为位权。位权的大小是以基数为底,数码所在的位置的序号为指数的整数次幂。一个进制数可按位权展开成一个多项式。例如:

5 761.689 = 5×10 3 +7×10 2 + 6×10 1 +1×10 0 +6×10 -1 +8×10 -2 + 9×10 -3

(2)数码。进位计数制中用来计数的符号称为数符或数码,如十进制的数码有0~9,二进制的数码有0和1。

(3)基数。基数是进制所使用的数码个数,用 R 表示,如十进制可表示为 R = 10。

(4)位权。在任何一种进制中,一个数的每个位置上所代表的数字大小称为位权值。

(5)常用数制及其特点。在计算机领域,常用的计数制有二进制、八进制、十进制和十六进制。其中,十进制是我们所熟知和日常使用的计数制;而二进制是计算机内部的计数制。用二进制表示一个很大的数时,写起来很长,看起来也不直观,容易出错,因此,经常采用八进制、十进制和十六进制表示数据。各种常用数制以及特点如表1-2-1所示。

表1-2-1常用数制及其特点

注意:

①为了区分不同进制的数,可在数的末尾加符号,称为尾符,如八进制数45可表示为45O,也可表示为(45) 8 。对于十进制数,尾符可以省略。

②十六进制数的数码为:0~9、A~F共16个数码。

2.数制的转换

(1)十进制数转换为非十进制数。分两种情况进行:整数部分和小数部分。具体规则如下。

整数部分:除以基数取余,直到商为0;先取的余数在低位,后取的余数在高位。

小数部分:乘以基数取整,直到值为0,或达到精度要求。先取的整数在高位,后取的整数在低位。

【例1-2-1】将十进制数518转换为二、八、十六进制数。

①转换为二进制数。

因此,518 = 1000000110B,或表示为(1000000110) 2

②转换为八进制数。

因此,518 = 1006O,或表示为(1006) 8

③转换为十六进制数。

因此,518 = 206H,或表示为(206) 16

【例1-2-2】将十进制小数0.625转化为二、八、十六进制小数。

①转换为二进制数。

因此,0.625 = 101B,或表示为(0.101) 2

②转换为八进制数。

0.625×8 = 5………………5

因此,0.625 = 0.5 O,或表示为(0.5) 8

③转换为十六进制数。

0.625×16 = 10(A)………………A

因此,0.625 = 0.AH,或表示为(0.A) 16

(2)非十进制数转换为十进制数。只需以非十进制数为基数,按权相乘相加,即各数位与相应位权值相乘以后再相加所得数就是对应的十进制数。

【例1-2-3】将二进制数(11001101.1101) 2 、八进制数(237.4) 8 、十六进制数(A85) 16 转换为十进制数。

(11001101.1101) 2 = 1×2 7 + 1×2 6 + 0×2 5 + 0×2 4 + 1×2 3 + 1×2 2 + 0×2 1 + 1×2 0 + 1×2 -1 + 1×2 -2 + 0×2 -3 + 1×2 -4 = 27 + 26 + 23 + 22 + 20 + 2 -1 + 2 -2 + 2 -4 = 128 + 64 + 8 + 4 + 1 + 0.5 + 0.25 + 0.0625 = 205.8125

(237.4) 8 = 2×8 2 + 3×8 1 + 7×8 0 + 4×8 -1 = 128 + 24 + 7 + 0.5 = 159.5

(A85) 16 = 10×16 2 + 8×16 1 + 5×16 0 = 2693

(3)八进制、十六进制数转换为二进制数。由2 3 = 8和2 4 = 16可以看出每位八进制数可用3位二进制数表示,每位十六进制数可用4位二进制数表示,如表1-2-2和表1-2-3所示。

表1-2-2每位八进制数对应的二进制数

表1-2-3每位十六进制数对应的二进制数

根据表1-2-2和表1-2-3可知,只要将八进制数或十六进制数的每一位表示为3位或4位二进制数,再去掉整数首部的0或小数尾部的0即可得到二进制数。

【例1-2-4】将八进制数(53.65) 8 转换为二进制数,将十六进制数(A85.76) 16 转换为二进制数。

(53.65) 8 =(101011.110101) 2

(A85.76) 16 =(101010000101.01110110) 2

(4)二进制数转换为八进制、十六进制数。以小数点为中心,分别向左、右每3位或4位分成一组,不足3位或4位的则以0补足,然后将每组用一位对应的八进制数或十六进制数代替即可。

【例1-2-5】将二进制数(11101.101) 2 转换为八进制数和十六进制数。

(11101.101) 2 =(35.5) 8

(11101.101) 2 =(1D.A) 16

3.计算机中常用信息单位

各种信息在计算机内部都以二进制形式存储。计量存储信息的基本单位是字节。但由于现代计算机存储容量的激增,原有的计量单位有了进一步的扩展。

(1)位。计算机中所有的数据都是以二进制来表示的,一个二进制代码称为一位,记为bit。位是计算机中最小的信息单位。

(2)字节。在对二进制数据进行存储时,以8位二进制代码为一个单元存放在一起,称为一个字节,记为Byte。

(3)字。字是指计算机中CPU能同时处理的二进制位数,如一条指令或一个数据信息。字是计算机进行信息交换、处理、存储的基本单位。

(4)字长。计算机CPU在单位时间内(同一时间)能一次处理的二进制数的位数称为字长。所以能处理字长为8位数据的CPU通常就叫8位的CPU。同理,32位的CPU能在单位时间内处理字长为32位的二进制数据。目前的CPU都是32位或64位的。

(5)容量单位。计算机存储器的容量常用B(Byte,字节)、KB(千字节)、MB(兆字节)、GB(吉字节)、TB(太字节)、PB(帕字节)、EB(艾字节)、ZB(泽字节)和YB(尧字节)来表示,它们之间的关系如下。

1 KB = 2 10 B = 1024 B

1 MB = 2 10 KB = 1024 KB = 2 20 B

1 GB = 2 10 MB = 1024 MB = 2 30 B

1 TB = 2 10 GB = 1024 GB = 2 40 B

1 PB = 2 10 TB = 1024 TB = 2 50 B

1 EB = 2 10 PB = 1024 PB = 2 60 B

1 ZB = 2 10 EB = 1024 EB = 2 70 B

1 YB = 2 10 ZB = 1024 ZB = 2 80 B

4.计算机中数的表示

计算机中所有的信息都是以二进制数的形式存在的。我们日常使用的十进制数值,在计算机中也需要转换为二进制形式表示。但是数的存在形式,不仅仅只有整数形式,还有小数、正负数、指数等形式。所以在计算机中,不但要考虑表示一个数的值,还要考虑正负符号、小数点和指数幂次的表示。

(1)整数的表示。整数有正负之分,在计算机中是将一个存储单位的最高位拿出来,专门用于存放数的符号,正数为0,负数为1。

如果以一个字节为存储单位,真值数为-01010011,那么机器数为11010011;真值数为+ 01010011,机器数为01010011。可是这样又出现了新问题,就是机器数在具体计算时,若将符号位与数值一并处理,结果必然就会出错;但若将符号位与数值分别处理,又会增加运算的复杂度。

为了便于数的表示,对于带符号数而言,有原码、反码和补码三种表示方法。

对于正整数而言,它的原码、反码、补码都相同,最高位为符号位,值为0,其他位是存放整数二进制形式的数值位。而负整数的三种编码表示方式却各不相同。

①原码。用最高位表示符号,其余位表示数值,这种带符号数的表示方法称为原码表示法。

【例1-2-6】设X 1 =+ 1011010,X 2 = -1011010,则[X 1 = 01011010,[X 2 =1011010。

②反码。原码表示法简单易懂,但由于原码表示的数有正有负,所以运算时常要进行一些判断,从而增加了运算的复杂性,故引入反码和补码。

正数的反码与原码相同,负数的反码是原码除符号位以外其余各位按位取反。

【例1-2-7】设[X 1 = 01011010,[X 2 = 11011010,则[X 1 = 01011010,[X 2 = 10100101。

③补码。一个位数为 n 的二进制数,它能表示的无符号数最大值为2 n -1,逢2 n 进1(2 n 自动丢失),也就是说,在字长为 n 的计算机中,若机器数中的数以补码表示,则数的补码以2 n 为模,即[X] =(2 n x )mod2 n

若X为正,则X的补码与原码相同;若X为负,则X的补码等于反码加1。

【例1-2-8】:设X=(-0111010) 2 ,则[X] = 10111010,则[X] = 11000101,则[X] = 11000110。

根据以上对原码、反码和补码的讨论可知:若X为正数,则X的原码、反码和补码相同;若X为负数,则X的反码是原码除符号位外其余各位按位取反,X的补码是反码加1。

计算机中带符号的数用补码表示后,减法运算可以转化为加法运算来实现。

(2)小数点的表示。在计算机内部,数值数据的小数点的位置是隐含的,且小数点的位置既可以是固定的,也可以是变化的。如果小数点的位置是固定的,则此类数称为定点数。相比之下,如果小数点的位置是可变的,此类数称为浮点数。

①定点数。在定点数中,小数点的位置一旦固定,就不再改变。定点数中又有定点整数和定点小数之分。

a. 定点整数:对于定点整数,小数点的位置约定在最低位的右边,用来表示整数。一个8位二进制的定点整数在计算机中的格式如图1-2-1所示。

在计算机中,整数又有无符号整数和有符号整数之分。无符号整数又称正整数,而带符号的整数可通过符号位来区分整数的正负,它既可以表示正整数,也可以表示负整数。

无符号整数常用来表示地址,它们可以表示8位、16位或32位等。8个二进制位表示无符号数的范围是0~255(0~2 8 -1),16个二进制位表示无符号数的范围是0~65 535(0~2 16 -1),32个二进制位表示无符号数的范围是0~4 294 967 295(0~2 32 -1)。

有符号的整数必须使用一个二进制位表示数的符号,余下的各个二进制位表示数值的大小。例如:(01010011) 2 =(+ 83) 10 ,(11010011) 2 =(-83) 10

b. 定点小数:对于定点小数,小数点的位置约定在符号位之后,用来表示小于1的纯小数。一个8位二进制的定点小数在计算机中的格式如图1-2-2所示。

图1-2-1定点整数的格式

图1-2-2定点小数的格式

②浮点数。如果要处理的数是实数(通常既有整数部分,又有小数部分),则采用浮点表示法。浮点表示法与科学计数法相类似,十进制数指数表示的一般形式是: p m ×10 n p 为十进制数, m 为尾数, n 为指数,10为基数。例如:0.00215可以表示为0.215×10 -3

类似地,计算机中二进制数的浮点表示法主要包括两个部分,一部分是尾数,为一定点小数;另一部分是阶码,为一定点整数,基数约定为2。其中,阶码部分又包括阶符和阶码,尾数部分包括数符和尾数,如图1-2-3所示。

图1-2-3浮点数表示

5.计算机中文字的表示

计算机除了能进行数值信息的处理之外,还可以处理文字、图形、图像及声音等非数值信息。这些非数值信息在计算机内部也表示成二进制的形式。

文字信息由各种符号组成,如西文字符(拉丁文字字符、数字字符、各种运算符号、标点符号等)和中文字符(图形文字和符号等)。由于计算机内部只能识别和处理二进制代码,所以在计算机中,文字符号必须按照一定的规则用一组二进制编码来表示。

编码就是用若干二进制的不同排列组合来标识各种符号。编码所采用的二进制位数由所表示符号集合中的符号总数决定,各种符号所采用的编码应具有唯一性,不能重复,否则符号就无法标识。

(1)十进制数的编码——BCD码。在计算机中,为了适应人们的习惯,采用十进制数方式对数值进行输入和输出。这样在计算机中就要将十进制数变换为二进制数,即用0和1的不同组合来表示十进制数。将十进制数变换为二进制数的方法很多,但是不管采用哪种方法的编码,统称为二—十进制编码,即BCD码。

十进制数有0~9共10个数码。通常计算机中用4位二进制数来表示一位十进制数。在二进制编码中,每4位二进制数为一组,组内每个位置上的位权值从左至右分别为8、4、2、1,故又称为8421码。以十进制数0~15为例,它们的8421BCD编码对应关系,如表1-2-4所示。

表1-2-4十进制数与BCD码的关系

需要注意的是,一个十进制数的BCD码与它对应的二进制数是有区别的。例如:十进制数16的BCD码是00010110,但它对应的二进制数是10000。

BCD码与二进制数之间的转换不是直接进行的,要先经过十进制数,即将BCD码先转换成十进制数,然后再转换成二进制数;反之,亦然。

(2)字符的编码。在计算机中,字符型数据是非常普遍的,字符型数据包括各种文字、字母、数字与符号等,它们在计算机中也是用二进制统一编码的。目前最为通用的字符编码是ASCII码(American Standard Cord for Information Interchange),即美国标准信息交换码。在ASCII码中,每个字符用7位二进制数来表示,故7位二进制数可表示128个字符,其中包括52个英文字母(大、小写各26个)、0~9这10个数字及一些常用符号,如表1-2-5所示。

表1-2-5 ASCII码表

续表

关于ASCII码有以下3点说明。

①通常一个ASCII字符占用一个字节(8 bit),其最高位为0,需要时可用作奇偶校验位。

②ASCII码字符分为两类,一类是可显示打印字符,共有95个;另一类是不可显示控制符,共有33个。

③ASCII码字符根据它们在表中的位置都有一个序号,如字母A的序号是1000001(65),a的序号是1100001(97),所以ASCII码字符都是区分大小写的,小写字母的ASCII码值比相应的大写字母大32。

【例1-2-9】从表1-2-5中查出“COPY”4个字符的ASCII码,并存放在存储单元中。

参看表1-2-5可知,C的ASCII码值=(1000011) 2 =(67) 10 ,O的ASCII码值=(1001111) 2 =(79) 10 ,P的ASCII码值=(1010000) 2 =(80) 10 ,Y的ASCII码值=(1011001) 2 =(89) 10

因为一个字节只能存放一个ASCII码,所以“COPY”要占用4个字节表示。根据ASCII码规定,最高位b7用作奇校验,其余各位由ASCII码值得到,存储情况如表1-2-6所示。

(3)汉字的编码。英文为拼音文字,所有的单词均由英文大小写字母拼组而成,加上数字及其他标点符号,常用的字符仅95个。而汉字为非拼音文字,不可能像英文字母那样一字一码,显然汉字编码比英文要复杂得多。

表1-2-6 “COPY”字符存储单元

①汉字交换码(用于信息交换)。1981年,我国实施了《信息交换用汉字编码字符集基本集》(GB/T 2312—1980),它是汉字交换码的国家标准,所以又称为国标码。国标码共收录了6 763个常用汉字,其中一级汉字3 755个,按汉语拼音排序;二级汉字3 008个,按偏旁部首排序;英、俄、日文字母与其他字符600多个。

国标码规定,每个汉字或字符都是用两个字节表示,每个字节的最高位为0。例如,“大”字的国标码如下:

实际上,在GB/T 2312—1980中,所有的国标汉字与符号组成一个94×94的矩阵。在该矩阵中,每一行称为“区”,每一列称为“位”。汉字的区位码是汉字所在区号和位号相连得到的。在连续的两个字节中,高位字节为区号,低位字节为位号。

国标码和区位码存在以下关系:

国标码高位=(区号) 16 + 20H

国标码低位=(位号) 16 + 20H

例如,某汉字的区位码为1601,则它的国标码高位=(16) 10 + 20H = 10H + 20H =30H,国标码低位=(01) 10 + 20H = 01H + 20H = 21H,因此,它的国标码是3021H(4833)。

②汉字机内码(用于汉字存储)。计算机既要处理中文,也要处理西文。西文的机内码就是它的ASCII码,字符的ASCII码最高位为0。因此为了与西文字符区别,所有汉字的机内码可在国标码的基础上,把两个字节的最高位一律由0改为1,就得到了汉字的机内码。如“大”字的机内码如下:

机内码和国标码存在以下关系:

机内码高位=(国标码高位) 16 + 80H;

机内码低位=(国标码低位) 16 + 80H。

例如,某汉字的国标码是4833,则它的机内码高位=(48) 10 + 80H = 30H + 80H =B0H,机内码低位=(33) 10 + 80H = 21H + 80H = A1H,因此它的机内码是B0A1H。

③汉字输入码(用于汉字输入)。虽然汉字的非键盘输入(如声音输入)已取得了一定的发展,但目前汉字的输入仍以键盘输入为主。汉字输入的方法多种多样,所以键盘上汉字编码的方案也多种多样,归纳起来,大致有下列4种。

a. 等长流水码。等长流水码又称为数字编码或顺序编码。该编码用等长的几位(如4位)数字来表示一个汉字的编码(如区位码、电报码等),其特点是无重码、向内部码转换方便,但难以记忆。

b. 音码。音码是根据汉字的发音来确定汉字的编码(如汉语拼音码),其特点是简单易学,但重码太多,输入速度较慢。

c. 形码。形码是根据汉字的字形结构来确定汉字的编码(如五笔字型、首尾码等),其特点是重码较少,输入速度较快,但熟练掌握较困难,记忆量较大。

d. 音形码。音形码是既根据汉字的发音也根据汉字的形状来确定汉字编码的一种方法,其特点是编码规则简单,重码少。

在英文中,其输入码与机内码是一致的,而汉字输入码是指直接从键盘输入的各种汉字输入法的编码,如区位码、拼音码、五笔字型码等,它与机内码是不同的。不同的汉字输入方法的输入编码是不同的,但存入计算机中的总是它的机内码,与采用的输入法无关。各种输入法的编码称为外码。

④汉字字形码(用于汉字输出)。输出用的汉字编码称为汉字字形码或字模码。计算机对各种文字信息的二进制编码处理后,必须通过自行输出码转换为人们能看懂且能表示为各种字形、字体的文字格式,即字形码,然后通过输出设备输出。

构建各种汉字字体的字形有多种方法,常见的是点阵法,其基本思想是:任一汉字均可在大小一样的方块中书写。该方块可分解为许多点,每个点用一位二进制数表示,这种点阵可用来输出汉字。例如,用16×16点阵表示一个汉字,即一个汉字用16×16 = 256个点表示,每个点占一位二进制数,共需32 B。同理,24×24、32×32及48×48等点阵也可表示一个字。点阵越多,打印的字体越好看,但汉字占用的存储空间也就越大。例如,一个16×16点阵占用的存储空间为32 B(16×16÷8 = 32 B),一个24×24点阵占用的存储空间为72 B(24×24÷8 = 72 B)。用点阵组成的字形如图1-2-4所示。

图1-2-4用点阵组成的汉字字形 wVU6RS4CmcxtQqzcdJGwpJoBTcAUdurqBwZmQERaOa7ZtkGN5P4PC4pEUlu9UIIc

点击中间区域
呼出菜单
上一章
目录
下一章
×