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

任务1-3
了解信息在计算机中的表示

数据是计算机处理的对象,计算机内部所能处理的数据是“0”和“1”,即二进制编码,这是因为二进制数具有便于物理实现、运算简单、工作可靠、逻辑性强等特点;人们在日常生活中常采用十进制来表示事物的量,即逢 10 进 1,不论是哪一种数制,其计数和运算都有共同的规律和特点。

1.进位计数制

数制(计数制)是指用一组固定的数字和统一的规则来表示数值的方法。进位计数制是按进位的方法进行计数的,它包含 3 个要素:数位、位权、基数。

1)十进制

①每个数位上能使用的数码符号是 0、1、2、3、4、5、6、7、8、9,共 10 个。基数是 10。

②每一个数码符号根据它在这个数中所处的位置(数位),按“逢十进一”来决定其实际数值,即各数位的位权是以 10 为底的幂次方。

2)二进制

①每个数位上能使用的数码符号是 0、1,共 2 个。基数是 2。

②每一个数码符号根据它在这个数中所处的位置(数位),按“逢二进一”来决定其实际数值,即各数位的位权是以 2 为底的幂次方。

3)八进制

①每个数位上能使用的数码符号是 0、1、2、3、4、5、6、7,共 8 个。基数是 8。

②每一个数码符号根据它在这个数中所处的位置(数位),按“逢八进一”来决定其实际数值,即各数位的位权是以 8 为底的幂次方。

4)十六进制

十六进制数的特点是“逢十六进一”,因此其基数为 16,位权则变为 16 的幂次方。十六进制数用 0~9 这 10 个数码加上A、B、C、D、E、F这 6 个字母码来表示,A~F分别对应 10~15这几个数,这是国际上通用的表示法。

2.进位计数制的特点

综上所述,计数制的特点可归纳如下:

①计数制都有一个固定的基数P(P≥1),每个数位可取P个不同的数值。

②计数制都有自己的位权,按“逢P进一”决定其实际数值。

3.不同进位计数制间的转换

1)十进制数转换成非十进制数

(1)十进制数转换成二进制数

十进制数转换成二进制数,可以将其整数部分和小数部分分别转换后再组合到一起。

整数部分转换,“除 2 取余法,直到商为 0,倒着写”。即将十进制数整数部分一直除以 2,取余数,直到商为 0,第一次得到的余数是二进制数的最低位,最后一次得到的余数是二进制数的最高位。

小数部分转换,“乘 2 取整法,顺着写”。即将十进制数小数部分不断乘以 2,取整数,直到小数为 0 或到达有效精度为止,最先得到的整数为最高位(小数点后第一位),最后一次得到的整数为最低位。

例:把十进制数 195.3125 转换成二进制数。

解:

整数部分转换过程如下:

即(195) 10 =(11000011) 2

小数部分转换过程如下:

即(0.312 5) 10 =(0.010 1) 2

所以,组合结果:(195.3125) 10 =(11000011.0101) 2

【知识小贴士】

一个十进制小数不能完全准确地转换成二进制小数时,可以根据精度要求,只转换到小数点后某一位即可。

(2)十进制数转换成八进制数

整数部分的转换:除 8 取余,直到商为 0;小数部分的转换:乘 8 取整。

例:把十进制数 445.312 5 转换成八进制数。

解:

整数部分转换过程如下:

小数部分转换过程如下:

所以,组合结果:(445.3125) 10 =(675.24) 8

【知识小贴士】

对小数的转换如出现转换无限进行的情况,处理方法同十进制小数到二进制小数的转换。

(3)十进制数转换成十六进制数

整数部分的转换:除 16 取余,直到商为 0;小数部分的转换:乘 16 取整。

例:把十进制数 1990.0123 转换成十六进制数,要求精确到小数点后 4 位。

解:

整数部分转换过程如下:

小数部分转换过程如下:

所以,组合结果:(1990.0123) 10 =(7C6.0326) 16

2)非十进制数转换成十进制数

非十进制数转换成十进制数的方法,是先写出非十进制数的按权展开表达式,然后求按权展开式的值,此值就是与非十进制数等值的十进制数。非十进制数转换成十进制数关系见表 1-2。

表 1-2 非十进制数转换成十进制数关系

3)二进制数、八进制数、十六进制数间的相互转换

(1)二进制数与八进制数之间的相互转换

由于 2 3 = 8,8 1 = 8,因此 1 位八进制数可用 3 位二进制数表示,或者 3 位二进制数可用 1位八进制数表示。二进制数转换为八进制数,可概括为“三位并一位”,即以小数点为基准,整数部分从右到左,每 3 位一组,最高位不足 3 位时,添 0 补足 3 位;小数点部分从左到右,每 3位一组,最低有效位不足 3 位时,添 0 补足 3 位。然后,将各组的 3 位二进制数按权展开后相加,得到 1 位八进制数。同理,八进制数转换为二进制数,可概括为“一位拆三位”。

例:把二进制数 10011101111001.1001 转换成八进制数。

解:

分组: 10011101111001 . 1001

补 0: 010011101111001 . 100100

转换:2 3 5 7 1.4 4

所以,(10011101111001.1001) 2 =(23571.44) 8

(2)二进制数与十六进制数之间的相互转换

由于 2 4 = 16,16 1 = 16,因此 1 位十六进制数可用 4 位二进制数表示,或者 4 位二进制数可用 1 位十六进制数表示。二进制数转换为十六进制数,可概括为“四位并一位”,即:以小数点为基准,整数部分从右到左,每 4 位一组,最高位不足 4 位时,添 0 补足 4 位;小数点部分从左到右,每 4 位一组,最低有效位不足四位时,添 0 补足 4 位。然后,将各组的 4 位二进制数按权展开后相加,得到 1 位十六进制数。同理,十六进制数转换为二进制数,可概括为“一位拆四位”。

例:把二进制数 10010100111101.1011 转换成十六进制数。

解:

分组: 10010100111101 . 1011

补 0: 0010010100111101 . 1011

转换:2 5 3 D. B

所以,(10010100111101.1011) 2 =(253D. B) 16

数据的表示:

一串数符,如果不加以说明,很难知道它表示的是哪种进制的数。例如:“10”这两个数符在一起组成数,既可以把它看成是二进制数,也可以把它看成是十进制数,还可以把它看成是八进制数或者是十六进制数。当把它看成不同进制数时,它的值是不同的。为了避免混淆,在书写进制数时需采用一定的约定,在计算机应用中的约定如下:

二进制数(Binary):在数符的末尾加上字母B或b,如 1011B、1001.11B。

十进制数(Decimal):在数符的末尾加上字母D或d,或者不带任何字符,如 18D、3.14。

八进制数(Octal):在数符的末尾加上字母O或o,如 36O、27.5O。

十六进制数(Hexadecimal):在数符的末尾加上字母H或h,如 59H、78.5H。

另外,各种进制数还可以用以下书写方式表示:用圆括号括住数,在圆括号外用下标表示数的进制,如(1001.11) 2 表示 1001.11B,(52.7) 16 表示 52.7H。

【知识小贴士】

不同进制的数进行转换时,如果待转换的数为整数,可以使用Windows 10 中的计算器进行转换。利用计算器进行进制转换的操作步骤如下:

步骤 1 启动计算器。在Windows 10 桌面上单击左下角按钮“ ”,打开如图 1-17 所示的“开始”菜单。然后在“开始”菜单中滚动到J字母开头的程序单击“计算器”菜单命令。Windows 10 的桌面会出现如图 1-18 所示的“计算器”窗口。

图 1-17“开始”菜单

步骤 2 切换计算器至程序员模式。初次使用计算器时,计算器是标准型的,需要切换至程序员模式并在程序员模式下进行操作才能进行数据的进制转换。切换计算器至程序员模式的操作方法是,在图 1-18 所示的标准型计算器窗口中单击菜单栏符号打开“程序员”菜单命令,如图 1-19 所示。这时计算器窗口会展开为程序员计算器窗口,如图 1-20 所示。如果启动计算器时,计算器已经处于程序员模式,则跳过步骤 2 直接进入步骤 3。

图 1-18 标准型计算器窗口

图 1-19 切换计算器至程序员模式

步骤 3 选择待转换数据的进制并输入数据。在图 1-20 所示的计算器窗口中单击“十进制”单选按钮,选择输入数据的进制。然后按键盘上的数字键或者用鼠标单击计算器窗口中的数字按钮输入待转换数据,如图 1-20 所示。

本书以十进制数据 2025 为例,这时HEX、OCT、BIN会显示转换后的结果,如图 1-21所示。

图 1-20 程序员计算器窗口

图 1-21 转换后的结果

4.机器数

在计算机中所能表示的数或其他信息都是数码化的,正、负号分别用一位数码“0”和“1”来表示。把连同符号一起数码化的数,称为机器数。在计算机中根据实际需要,机器数的表示方法往往会不同,通常有原码、反码和补码 3 种表示法。

1)原码

原码表示法是一种比较直观的机器数表示法。数X的原码标记为[X]原,正数的符号位用“0”表示,负数的符号位用“1”表示,数值部分用二进制形式表示。

例如,使用 8 位二进制数描述为[+66]原= 01000110,[-66]原= 11000110。

2)反码

数X的反码标记为[X]反,对于正数来说,反码与原码相同。对于负数来说,符号位与原码相同,只是将原码的数值位“按位变反”。

例如,使用 8 位二进制数描述为[+66]反= 01000110,[-66]反= 10111001。

3)补码

由于补码在做二进制加、减运算时比较方便,所以在计算机中广泛采用补码来表示二进制数,数X的补码标记为[X]补。正数的补码与原码相同,负数的补码由该数的原码除符号位外其余位“按位取反”,然后在最后一位加 1 而得到。

例如,使用 8 位二进制数描述为[+66]补= 01000110,[-66]补= 10111010。

5.定点数与浮点数

计算机处理的数据多带有小数点,小数点在计算机中可以有两种方法表示:一种小数点固定在某一位置,称为定点表示法,简称为定点数;另一种小数点可以任意浮动,称为浮点表示法,简称为浮点数。

1)定点数

所谓定点数,就是约定计算机中数据的小数点的位置固定不变,如图 1-22 所示。定点数分为定点小数(纯小数,小数点在符号位之后)和定点整数(纯整数,小数点在数的最右方)。

图 1-22 定点数

定点数的小数点在机器中是不表示出来的,一旦确定了小数点的位置,就不再改变。定点小数是把小数点固定在数值部分最高位的左边,每个数都是绝对值小于 1 的纯小数。定点整数是把小数点固定在数值部分最低位的右边,每个数都是绝对值在一定范围内的整数。

2)浮点数

使用定点数表示小数时,存在数值范围、精度范围有限的缺点,所以在计算机中,一般使用“浮点数”来表示小数。之前学习了定点数,其中“定点”指的是约定小数点位置固定不变。那浮点数的“浮点”就是指其小数点的位置是可以是漂浮不定的。

(1)理解浮点数的小数点是漂浮不定的

浮点数是采用科学计数法的方式来表示的,如十进制小数 8.345,用科学计数法表示,可以有多种方式:

8.345 = 8.345×10 0

8.345 = 83.45×10 -1

8.345 = 834.5×10 -2

看到了吗?用这种科学计数法的方式表示小数时,小数点的位置就变得“漂浮不定”了,这就是相对于定点数,浮点数名字的由来。

使用同样的规则,对于二进制数,也可以用科学计数法表示,也就是说把基数 10 换成 2即可。

(2)浮点数如何表示数字

已知,浮点数是采用科学计数法来表示一个数字的,其格式可以写成这样:

V=(-1) S ×M×R E

式中S——符号位,取值 0 或 1,决定一个数字的符号,0 表示正,1 表示负;

M——尾数,用小数表示,如前面所看到的 8.345×10 0 ,8.345 就是尾数;

R——基数,表示十进制数R就是 10,表示二进制数R就是 2;

E——指数,用整数表示,如前面看到的 10 -1 ,-1 即是指数。

如果要在计算机中用浮点数表示一个数字,只需要确认这几个变量即可。

假设现在用 32bit表示一个浮点数,把以上变量按照一定规则,填充到这些bit上就可以了,如图 1-23 所示。

图 1-23 浮点数

假设定义如下规则来填充这些bit:

符号位S占 1bit;

指数E占 10bit;

尾数M占 21bit。

按照这个规则,将十进制数 25.125 转换为浮点数,转换过程就是这样的(D为十进制,B为二进制)。

整数部分:25(D)= 11001(B);

小数部分:0.125(D)= 0.001(B)。

用二进制科学计数法表示:25.125(D)= 11001.001(B)= 1.1001001×2 4 (B);

因此符号位S = 0,尾数M= 1.001001(B),指数E = 4(D)= 100(B)。

按照上面定义的规则,填充到 32bit上,如图 1-24 所示。

6.信息编码

数据是信息的载体,计算机所处理的数据除了数学中的数值外,还包括字符、声音、图形、图像等。由于计算机只能识别二进制,因此计算机处理信息时,先要对信息进行二进制编码。常用的编码方式有ASCII编码、GB2312 编码(简体中文)、BCD编码等。

图 1-24 浮点数实例

1)ASCII码

在计算机中,所有的数据在存储和运算时都要使用二进制数来表示,英文字母和一些常用的符号也要使用二进制来表示。ASCII(American Standard Code for Information Interchange,美国标准信息交换码)是使用最广泛的字符编码方案,它用指定的 7 位或 8 位二进制数组合来表示 128 或 256 种可能的字符。附录ASCII码表采用的是 7 位二进制编码,最高位为 0,低7 位用 0 或 1 的组合来表示不同的字符或控制码。例如,字符A的ASCII码为 01000001,字符a的ASCII码为 01100001。

初期,ASCII码主要用于远距离的有线或无线电通信,为了及时发现在传输过程中因电磁干扰引起的代码出错,人们设计了各种校验方法,其中奇偶校验是采用得最多的一种方法,即在 7 位ASCII码之前再增加一位用作校验位,形成 8 位编码。若采用偶校验,即校验位要使包括校验位在内的所有为“1”的位数之和为偶数。例如,大写字母“C”的 7 位编码是 1000011,共有 3 个“1”,则使校验位置为“1”,即得到字母“C”的带校验位的 8 位编码 11000011;若原 7位编码中已有偶数位“1”,则校验位置为“0”。数据接收端对接收到的每一个 8 位编码进行奇偶性检验,若不符合偶数个(或奇数个)“1”的约定就认为是一个错码,并通知对方重复发送一次。

2)GB2312 编码(简体中文)

汉字是世界上使用最多的文字,是联合国的工作语言之一,汉字处理的研究对计算机在我国的推广应用和国际交流的加强都是十分重要的。但汉字属于图形符号,结构复杂,多音字和多义字比例较大,数量太多(据统计字形各异的汉字约有 50 000个,常用的汉字也约有 7 000 个)。依据汉字处理过程,汉字编码可分为输入码、字形码、处理码和国标码(交换码),如图 1-25所示。

图 1-25 汉字编码过程

输入码也称外码,是用来将汉字输入到计算机中的一组键盘符号。目前常用的输入码有拼音码(全拼)、五笔字型码、音形码等。一种好的编码应有编码规则简单、易学好记、操作方便、重码率低、输入速度快等优点。

我国国家标准总局 1980 年发布了《信息交换用汉字编码字符集基本集》(GB 2312—80),即国标码,共对 6763 个汉字和 682 个图形字符进行了编码,其编码原则为汉字用 2 个字节表示,每字节用 7 位码(高位为 0)。

把国标码每字节最高位的 0 改成 1,或者把每字节都再加上 128,就可得到“机内码”,也就是“处理码”。

字形码是汉字的输出码,输出汉字时都采用图形方式,无论汉字的笔画多少,每个汉字都可以写在同样大小的方块中,按图形符号设计成点阵图,就得到了相应的点阵代码(字形码)。显示一个汉字一般采用 16×16 点阵、24×24 点阵或 48×48 点阵。

汉字字形码又称汉字字模,是表示汉字字形信息(结构、形状、笔画等)的编码,以实现计算机对汉字的输出(显示、打印),字形码最常用的表示方式是点阵形式和矢量形式。

用点阵表示汉字字形时,字形码就是这个汉字字形的点阵代码根据显示或打印质量的要求,汉字字形编码有 16×16、24×24、32×32、48×48 等不同密度的点阵编码。点数越多,显示或打印的字体就越美观,但编码占用的存储空间也越大。图 1-26 给出了一个 16×16 的汉字点阵字形和字形编码,该汉字字形编码需占用 16×2 = 32 个字节。如果是 32×32 的字形编码则占用 32×4 = 128 个字节。

图 1-26 汉字点阵字形和字形编码

3)BCD码

当十进制小数转换为二进制数时会产生误差,为了精确地存储和运算十进制数,可用若干位二进制数码来表示 1 位十进制数,称为二进制编码的十进制数,简称二-十进制编码(Binary Code Decimal,BCD码)。它用 4 位二进制数来表示 1 位十进制数中 0~9 这 10 个数码。BCD码可分为 8421 码(从高位到低位的权值分别为 8、4、2、1)、2421 码(从高位到低位的权值分别为 2、4、2、1)、5421 码(从高位到低位的权值分别为 5、4、2、1)等。8421 码是最基本的、最常用的BCD码,常用BCD码与十进制数的对应关系见表 1-3。

表 1-3 常用BCD码与十进制数对应表

5421 码和 2421 码的编码方案都不是唯一的,表 1-3 只列出了一种编码方案。例如,5421码中的数码 5,既可以用 1000 表示,也可以用 0101 表示;2421 码中的数码 6,既可以用 1100表示,也可以用 0110 表示。

例:求十进制数 541 的 8421 码。

解:(541) 10 =(0101 0100 0001) BCD =(010101000001) BCD

4)多媒体信息编码

在计算机中,各种多媒体信息也是基于二进制来表示的,只是形式更复杂。

声音是由物体振动产生的声波,是通过介质(空气或固体、液体)传播并能被人或动物的听觉器官所感知的波动现象。声音是一种模拟信号,可以通过采样和量化将其转换为数字信号,然后再对数字信号进行二进制编码,如图 1-27 所示。

图 1-27 声音采样和量化

图像编码,是将图像分解为许多的点,每个点称为“像素”,再将像素对应的信号转换成二进制编码信息,如图 1-28 所示。图像信号也是经过采样、量化、编码过程转换成数字信号的。

图 1-28 位图示例

7.数据的存储单位

目前计算机中常用的数据存储单位有:

位(bit):计算机中最小的存储单位,只能存储 0 或 1 两种状态;

字节(Byte):计算机中常用的存储单位,一个字节等于 8 位;

千字节(KB):一千字节等于 1024 个字节;

兆字节(MB):一兆字节等于 1024 个千字节,即 1048576 字节;

吉字节(GB):一吉字节等于 1024 个兆字节,即 1073741824 字节;

太字节(TB):一太字节等于 1024 个吉字节,即 1099511627776 字节;

拍字节(PB):一拍字节等于 1024 个太字节,即 1125899906842624 字节;

艾字节(EB):一艾字节等于 1024 个拍字节,即 1152921504606846976 字节。

常用的数据存储单位之间的换算关系为

1 KB = 1024 Byte;

1 MB = 1024 KB;

1 GB = 1024 MB;

1 TB = 1024 GB;

1 PB = 1024 TB;

1 EB = 1024 PB。

注意,这里的“1024”是指 2 10 。但是在计算机存储容量的表示中,常常使用的是 1 000 的幂次方,例如硬盘容量的表示,这是因为硬盘制造商使用的是 1 000 的幂次方,而不是 1 024的幂次方。因此,在实际应用中,需要根据不同的场景和目的来选择合适的单位和换算关系。

【知识小贴士】

目前,比艾字节(EB)更大的存储单位有:

赛字节(ZB):一赛字节等于 1024 个艾字节,即 1180591620717411303424 字节;

然字节(YB):一然字节等于 1024 个赛字节,即 1208925819614629174706176 字节;

泽字节(ZiB):一泽字节等于 1024 个吉字节的平方,即 1180591620717411303424313344 字节;

尧字节(YiB):一尧字节等于 1024 个兆字节的平方,即 1208925819614629174706176870912字节。

需要注意的是,赛字节、然字节、泽字节、尧字节等更大的存储单位,目前在实际应用中还比较少见,通常只会在特定领域、极端场景或科学计算中用到。在大多数情况下,艾字节已经足够大,能够满足大部分应用需求。 Pz3AOT3q1uKIQoVY7Hyy2GCMo8Z1rKtR038FJIcc8azjztb9R7kRio6RMeJ5IGUF

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