1.3 计算机中的数制和编码

任务6 计算机中数据的表示

一、任务描述

本任务讲述计算机中常用的几种数据单位,并介绍数据在计算机系统中的表示方式。

二、相关知识与技能

数据是指能被计算机接收和处理的符号集合。在计算机中,所有被处理的数据可以分为数值型数据和非数值型数据。例如字母、图像、声音和视频等数据,就属于非数值型数据。这两类数据在计算机中都是以二进制方式存储的。

三、知识拓展

计算机内部存储和处理的数据都是采用二进制表示的。下面介绍位、字节、字长的相关概念。

1.位

位 (bit),也称为比特,常用小写字母“b”表示。位是计算机存储设备的最小单位。一个二进制位只能表示两种状态,即用0或者1来表示一个二进制数位。

2.字节

一个字节 (Byte)由8位二进制数构成,常用大写字母“B”表示。字节是最基本的数据单位。在计算机内部,数据传送也是以字节为单位进行的。

常用的字节单位有KB、MB、GB、TB和PB,其相互之间的换算关系如下:

1 KB=210B=1024 B; 1 MB=210KB=1024 KB;

1 GB=210MB=1024 MB; 1 TB=210GB=1024 GB;

1 PB=210TB=1024 TB。

3.字长

字长 (Word)是指CPU在单位时间内一次处理的二进制位数的多少。对于计算机硬件来讲,字长与数据总线的数目相对应。不同的计算机,其字长是不同的,常用的字长有8位、16位、32位和64位。字长是衡量计算机性能的一个重要标志。字长越长,则计算机的性能越好。

注意:这些数据单位之间的进制并不是1000,而是1024,即2的10次方。

四、探索与练习

(1)简述位、字节及字长的含义。

(2)哪些数据属于非数值型数据?

(3)在计算机内部,存储和处理的数据是怎样表示的?

任务7 数制及其特点

一、任务描述

本任务讲述数制的基本概念及数制的特点

二、相关知识与技能

数制也称计数制,是指用一组固定的符号和统一的规则来表示数值的方法。若按进位的方法进行计数,则称为进位计数制。计算机系统其实就是一种信息处理系统,计算机以二进制的形式进行信息的存储和处理。在计算机中,采用二进制是由计算机电路所使用的元器件的性质决定的。在计算机中采用了具有两个稳态的二值电路,且二值电路只能表示两个数码:0和1。低电位表示数码0;高电位表示数码1。

三、知识拓展

常用的数制有十进制、二进制、八进制和十六进制。一种进位计数制包含一组数码符号和三个基本因素:基数、数位、位权。

(1)数码:一组用来表示某种数制的符号。例如,二进制的数码符号是0、1,八进制的数码符号是0、1、2、3、4、5、6、7。

(2)基数:指该进制中允许选用的基本数码的个数。

十进制有10个数码符号:0、1、2, …、9;

二进制有2个数码符号:0、1;

八进制有8个数码符号:0、1、2、…、7;

十六进制有16个数码符号:0、1、2、…、9、A、B、C、D、E、F (其中A-F 对应十进制的10~15)。

(3)数位:一个数中的每一个数字所处的位置称为数位。

(4)位权:在某种进位计数制中,每个数位上的数码所代表的数值的大小,等于这个数位上的数码乘上一个固定的数值,那么这个固定的数值就是这种进位计数制中的该数位上的位权。

1.十进制数

十进制计数 (D)简称十进制。十进制数具有以下特点:

(1)具有10个不同的数码符号,分别为0~9。

(2)每个数码符号根据它在这个数中的数位,按照“逢十进一”来决定其实际数值。十进制的位权是10的整数次幂。例如,十进制数348.52可表示为:

(348.52)10=3×102+4×101+8×100+5×10-1+2×10-2

2.二进制数

二进制计数 (B)简称二进制。二进制数具有以下特点:

(1)有2个不同的数码符号,分别为0和1。

(2)每个数码符号根据它在这个数中的数位,按照“逢二进一”来决定其实际数值。二进制数的位权是2的整数次幂。例如,二进制数11010.11可表示为:

(11010.11)2=1×24+1×23+0×22+1×21+0×20+1×2-1+1×2-2

二进制的优点是:运算简单,物理实现容易,存储和传送方便,可靠。

因为在二进制中只有0和1两个数字符号,并可以用电子器件的两种不同状态来表示一位二进制数,例如,可以用晶体管的截止和导通分别表示1和0,或者用电平的高和低分别表示1和0等,所以数字系统普遍采用二进制。

二进制的缺点是:数的位数太长且字符单调,并且书写、记忆和阅读不方便。为了克服二进制的缺点,人们在进行指令书写、程序输入和输出等工作时,通常采用八进制数和十六进制数作为二进制数的缩写。

3.八进制数

八进制计数 (O或Q)简称八进制。八进制数具有以下特点:

(1)有8个不同的数码符号,分别为0~7。

(2)每个数码符号根据它在这个数中的数位,按照“逢八进一”来决定其实际数值。八进制数的位权是8的整数次幂。例如,八进制数123.45可表示为:

(123.45)8=1×82+2×81+3×80+4×8-1+5×8-2

4.十六进制数

十六进制计数 (H)简称十六进制。十六进制数具有以下特点:

(1)有16个不同的数码符号,分别为0~9、A~F。由于十六进制数只有0~9这10个字符,因此16进制还要用其他的字母共计16个数字、符号,以便“逢十六进一”。

(2)每个数码符号根据它在这个数中的数位,按照“逢十六进一”来决定其实际数值。十六进制数的位权是16的整数次幂。例如:十六进制数3AB.48可表示为:

(3AB.48)16=3×162+10×161+11×160+4×16-1+8×16-2

各种数制的特点如表1-1所示。

表1-1 计算机中常用的几种计数制

四、探索与练习

(1)(345)8= ( )10

(2)(13.25)10= ( )2

(3)(1101.01)2= ( )10

(4)(B5.9)16= ( )2

(5)(AB)16= ( )2

任务8 二进制的运算

一、任务描述

本任务讲述二进制数的算术运算和逻辑运算

二、相关知识与技能

在计算机中,采用由“0”和“1”这两个基本符号所组成的二进制数。“1”和“0”正好与逻辑命题的“是”和“否”或“真”和“假”相对应,其为计算机实现逻辑运算和程序中的逻辑判断提供了便利的条件。

三、知识拓展

1.二进制算术运算

二进制算术运算与十进制算术运算类似,并且同样可以进行四则运算,且其操作简单、直观,更容易实现。

二进制求和法则如下:

0+0=0;

0+1=1;

1+0=1;

1+1=10 (逢二进一)。

二进制求差法则如下:

0-0=0;

1-0=1;

0-1=1 (借一当二);

1-1=0。

二进制求积法则如下:

0×0=0;

0×1=0;

1×0=0;

1×1=1。

二进制求商法则如下:

0 ÷0=0;

0÷1=0;

1 ÷0 (无意义);

1 ÷1=1。

提示

在进行两数相加时,应先写出被加数和加数,然后按照由低位到高位的顺序,根据二进制求和法则,把两个数逐位相加即可。

【例1-1】 求1001101+10010=?

解: 1001101+) 10010=1011111

答:1001101+10010=1011111。

【例1-2】 求1001101-10010=?

解: 1001101-) 10010=0111011

答:1001101-10010=0111011。

2.二进制逻辑运算

计算机的逻辑运算和算术运算的主要区别是:逻辑运算是按位进行的,并且位与位之间不像加减运算那样有进位与借位的联系。

逻辑运算主要包括三种基本运算:逻辑加法 (又称“或”运算)、逻辑乘法 (又称“与”运算)和逻辑否定 (又称“非”运算)。此外,“异或”运算也很有用。

(1)逻辑“与”。

例如:0∧0=0,0∧1=0,1∧0=0,1∧1=1。

逻辑“与”的符号在不同软件中用不同的符号表示,例如AND、∧等。

(2)逻辑“或”。

例如:0∨0=0,0∨1=1,1∨0=1,1∨1=1。

“或”运算通常用符号OR、∨等来表示。

(3)逻辑“非”。

例如:!0=1, !1=0。

对某二进制数进行“非”运算,实际上就是对它的各位按位求反。

四、探索与练习

(1)在计算机内,为什么采用二进制数表示信息?

(2)几位二进制数对应一位十六进制数?

(3)什么是指令?计算机的指令由哪两部分组成?

任务9 不同数制间的相互转换

一、任务描述

本任务讲解各个数制之间的相互转换关系

二、相关知识与技能

在计算机内部,数是以二进制表示的,而人们习惯上使用的是十进制数。计算机从外界接收到十进制数后,要经过翻译,把十进制数转换为二进制数才能对其进行处理。在计算机运行结束后,它再把二进制数换算为人们习惯使用的十进制数输出。虽然,这个过程是由计算机自动完成的,但是对程序员来说,有时需要把十进制数转换为二进制数、把十六进制数或八进制数、把十六进制数转换为十进制数等。

三、知识拓展

使用计算机的人每时每刻都在与数打交道。将数由一种数制转换成另一种数制,称为数制间的转换。下面我们就来看看数制间是如何进行转换的。

1.十进制数转换成R进制数

十进制数转换为R进制数分为整数部分的转换和小数部分的转换。

(1)十进制整数转换成R进制整数。

整数除R取余法:依次除R并取余数,直到商为0;余数由下而上排列形成结果。

十进制转换为二进制

【例1-3】 将十进制整数49转换为二进制整数。

解:

答:(49)10= (110001)2

【例1-4】 将十进制整数49转换为八进制整数。

解:

答:(49)10= (61)8

(2)十进制小数转换成R进制小数

小数乘R取整法:将纯小数部分乘以R取整数,直到小数的当前值等于0或满足所要求的精度,最后将所得到的乘积的整数部分由上而下排列。

【例1-5】 将十进制小数0.6875转换为二进制小数。

答:(0.6875)10= (0.1101)2

【例1-6】 将十进制小数193.12转换为八进制小数。

解:

所以,(193)10= (301)8

所以,(0.12)10= (0.075)8

答:(193.12)10= (301.075)8

2.R进制数转换成十进制数

位权法:把各R进制数按位权展开求和。

转换公式为:(F)Ran-1×Rn-1+ an-2×Rn-2+…+a1×R1+ a0 ×R0+a-1×R-1+…

二进制转换为十进制

【例1-7】 将二进制数1001101.01转化成十进制数。

解: (1001101.01)2=1×26+0×25+0×24+1×23+1×22+0×21+1×20+0×2-1+1×2-2=(77.75)10

【例1-8】 将八进制数144转化成十进制数。

解: (144)8=1×82+4×81+4×80=(100)10

【例1-9】 将十六进制数7 A3 F转化成十进制数。

解: (7A3F)16=7×163+10×162+3×161+15×160=(31295)10

3.二进制数与八进制数、十六进制数之间的转换

二进制和八进制、十六进制相互转换

(1)二进制数转换为八进制数。23=8,也就是说3位二进制数可以表示8种状态,即000~111这8个数分别代表0~7。因为八进制可使用的数恰好是0~7这八个数,所以二进制数的3位与八进制数的1位相对应。以小数点为界,将整数部分从右向左每3位一组,且当最高一组不足3位时,在最左端添0补足3位;将小数部分从左向右每3位一组,且当最低一组不足3位时,在最右端添0补足3位。

(2)二进制数转换为十六进制数。24=16,也就是说4位二进制数可以表示16种状态,即0000 ~1111这16个数分别代表0 ~9加上A ~F这16个数。因为十六进制可使用的符号恰好是0~F这16个符号,所以二进制数的4位与十六进制数的1位相对应。以小数点为界,将整数部分从右向左每4位一组,且当最高一组不足4位时,在最左端添0补足4位;小数部分从左向右每4位一组,且当最低一组不足4位时,在最右端添0补足4位。

【例1-10】 将二进制数100110110111.0101转换为八进制数

答:(100110110111.0101)2=(4667.24)16

【例1-11】 将八进制数324转化为二进制数

答:(324)8=(011010100)2

各种进制数对照表如表1-2所示。

表1-2 十进制数、二进制数、八进制数和十六进制数之间的对应关系

四、探索与练习

(1)将 (10110.11)2转换成十进制数。

(2)将下列十进制数转换成二进制数:(42)10、(10.25)10

(3)将 (60.75)10转换成二进制数、八进制数和十六进制数。

(4)将 (A2.D6)16转换成等值的二进制数。

(5)将 (27)10转换对应的二进制数。

任务10 字符的表示及编码

一、任务描述

本任务讲解计算机中字符编码的相关知识。

二、相关知识与技能

所谓编码,就是采用少量的基本符号 (例如使用二进制的基本符号0和1),并选用一定的组合原则,表示各种类型的信息 (例如数值、文字、声音、图形和图像等)。为了使信息的表示、交换、存储或加工处理方便,在计算机系统中通常采用统一的编码方式。在输入过程中,系统自动将用户输入的各种数据按编码的类型转换成相应的二进制形式存入计算机存储单元中。在输出的过程中,再由系统自动将二进制编码数据转换成用户可以识别的数据格式,并输出给用户。

三、知识拓展

1.Unicode

世界上存在着多种编码方式。同一个二进制数字可以被解释成不同的符号,因此,要想打开一个文本文件,就必须知道它的编码方式。否则如果用错误的编码方式解读,就会出现乱码。为什么电子邮件常常出现乱码?就是因为发信人和收信人使用的编码方式不一样。

如果有一种编码将世界上所有的符号都纳入其中,并且为每一个符号都给予一个独一无二的编码,那么乱码问题就会消失。这就是Unicode。

在计算机科学领域中,Unicode (统一码、万国码、单一码、标准万国码)是业界的一种标准。Unicode基于通用字符集 (Universal Character Set)的标准来发展,并且它为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言、跨平台进行文本转换、处理的要求。

通用字符集可以简写为UCS (Univeral Character Set)。早期的Unicode标准有UCS-2、UCS-4两种格式。UCS-2用两个字节编码,UCS-4用4个字节编码。Unicode 用数字0-0x10FFFF 来映射这些字符,最多可以容纳1114112个字符,或者说有1114112个码位。码位就是可以分配给字符的数字。UTF-8、UTF-16、UTF-32都是将数字转换为程序数据的编码方案。我们一般提到的Unicode,其实就是指UTF-16编码。所谓Unicode编码转换其实就是指从UTF-16到ANSI 各个代码页编码 (UTF-8、ASCII、GB2312/GBK、BIG5等)的转换。

2.ASCII码

在目前计算机中使用最广泛的字符集及其编码,是由美国国家标准局 (ANSI)制定的ASCII码 (American Standard Code for Information Interchange,美国标准信息交换码)。它已被国际标准化组织 (ISO)定为国际标准,称为ISO 646标准。

ASCII码一共规定了128个字符的编码,比如空格“SPACE”是32(二进制00100000),大写的字母“A”是65(二进制01000001)。这128个符号(包括32个不能打印出来的控制符号),只占用了一个字节的后面7位,而最前面的1位统一规定为0,如表1-3所示。

表1-3 ASCII码表

四、探索与练习

(1)什么叫做Unicode编码?

(2)ASCII是几位二进制字符编码?是什么的缩写?

(3)GB2312简称什么?