信息技术导论
上QQ阅读APP看书,第一时间看更新

2.1 计算机中的数制

众所周知,无论一座小房子,还是一座宏伟壮观的建筑,都是通过一块块最基本的元素(砖块、石块等)堆积起来的。如果将功能丰富、高深莫测的计算机比喻为一座“建筑”,那么它的基本元素是什么呢?答案是:0和1。

无论功能多么强大的计算机,最基本的元素都是0和1,因为在计算机中采用的是二进制。

下面通过类比来理解二进制。在日常生活以及数学领域中,人们习惯采用十进制进行计数;时间上,1小时有60分钟,1分钟有60秒,采用六十进制;每年有12个月,采用十二进制;每周有7天,采用七进制;诸如此类,人们在现实生活中可以发现很多进制。为了能更好地理解二进制,首先要理解不同进制之间的相同和不同之处。

所谓“进制”,其实是“进位计数制”的简称,后面也简称“数制”。数制的本质是用一组固定的数码符号和一套统一的规则来表示数值的方法。本章将重点讨论日常生活中使用的十进制、计算机中使用的二进制。此外,在使用计算机过程中有时为了表示方便,还有八进制和十六进制(注意:八进制和十六进制只是为了书写方便而引入的,并不是计算机中使用的)。

2.1.1 数制的本质特征

数制的本质特征有以下几点:

① 使用一组固定的单一数字符号来表示数目的大小。例如:

· 十进制数有0~9共10个阿拉伯数字符号。

· 二进制数有0、1两个数字符号。

· 八进制数有0~7共8个数字符号。

· 十六进制数有0~9、A~F共16个数字符号。

② 有统一的规则:以N为基数,逢N进一。例如:

· 十进制是以10为基数,逢十进一。

· 二进制是以2为基数,逢二进一。

· 八进制以8为基数,逢八进一。

· 十六进制以16为基数,逢十六进一。

③ 权值大小不同。例如:50和500中“5”,虽然符号相同,但是含义却不同,前者表示5个10,后者表示5个100,为什么会不同呢?因为这两个5分别在不同的位置上,所以大小就会不同。处在不同位置上的数字符号,它所代表的数值大小也不同,为了形象地表示这种位置差异,我们引入一个术语“权”。

权的规则:如图2-6所示,若有一个r进制数,那么其基为r。从小数点左侧第一位开始定义权,其权为r0。从这一位开始向左,权的幂逐渐增一,依此为r1、r2、…、rn;从这一位开始向右,权的幂逐渐减一,依此为r-1、r-2、…、r-n

图2-6 权的规则

那么这样一个r进制数,到底多大呢?如何衡量?为了衡量不同进制数的大小,通常将它们转换成十进制再比较大小。所以一个r进制数的大小可以表示为:

· 十进制数101.1的大小为:1×102+0×101+1×100+1×10-1

· 二进制数101.1的大小为:1×22+0×21+1×20+1×2-1

· 八进制数101.1的大小为:1×82+0×81+1×80+1×8-1

· 十六进制数101.1的大小为:1×162+0×161+1×160+1×16-1

因此,一个r进制数的大小为:将每个数位上的符号乘以权,然后相加得到的和。

2.1.2 数制的表示

为了区分不同的数制,并便于书写,数制通常有两种表示方法:下标法和后缀法。

1.下标法

将数制的基数以下标的形式写在数的右下方,例如:

① 十进制数101.1可记为:(101.1)10

② 二进制数101.1可记为:(101.1)2

③ 八进制数101.1可记为:(101.1)8

④ 十六进制数101.1可记为:(101.1)16

2.后缀法

将代表数制的一个字母写在数的后面。例如:二、八、十和十六进制分别用字母B、O、D、H代表,分别取其英文单词(Binary、Octal、Decimal、Hexadecimal)的首字母。

例如,上面各个进制数可依次记为101.1D、101.1B、101.1O、101.1H。

当没有后缀或者下标时,默认数制为十进制。例如,101.1,表示十进制数。

十进制数0~15对应的二进制、八进制和十六进制数如表2-1所示。

表2-1 进制对应表

2.1.3 二进制

1.缘何采用二进制

根据数制的知识,我们知道:100D=1100100B,显然用二进制表示后,数变得更复杂了,那么为什么计算机中还要采用二进制,而不是十进制呢?主要基于如下几个原因:

(1)可行性

二进制数的实现最容易。计算机设计的初衷是要实现能自动运算的机器,因此运算必须能通过机械装置自动实现,这就需要用到电子元器件。由于二进制数只有0、1两个基本符号,正好与很多电子器件的物理现象一致,例如,电平的高与低、晶体管的导通与截止等,所以找到能表示二进制数的电子元器件非常容易。

(2)可靠性

二进制数只有两个状态,数字的转移和处理不易出错。而十进制有十种状态,相对而言,出错概率要远远高于二进制,因此二进制更可靠。

(3)简易性

二进制的运算法则少,运算简单,使得计算机运算器的硬件结构大大简化(十进制加法有55条法则,而二进制加法只有3条法则)。

(4)逻辑性

二进制的1、0两个代码,正好可以代表逻辑代数的“真”“假”,用二进制表示2个逻辑很自然。

2.二进制的运算法则

电子计算机具有强大的运算能力,但无论多么复杂的运算最终都通过两种运算实现,那就是:算术运算和逻辑运算。

(1)二进制数的算术运算

二进制数的算术运算包括:加、减、乘、除四则运算,下面分别予以介绍。

① 二进制数的加法。根据“逢二进一”规则,二进制数加法的法则为:

0+0=0

0+1=1+0=1

1+1=0(进位为1)

例如:1110和1011相加过程如下:

② 二进制数的减法。根据“借一有二”的规则,二进制数减法的法则为:

0-0=0

1-1=0

1-0=1

0-1=1(借位为1)

例如:1101减去1011的过程如下:

③ 二进制数的乘法。二进制数乘法过程可仿照十进制数乘法进行。但由于二进制数只有0或1两种可能的乘数位,导致二进制乘法更为简单。二进制数乘法的法则为:

0×0=0

0×1=1×0=0

1×1=1

例如,1001和1010相乘的过程如下:

④ 二进制数的除法:二进制数除法与十进制数除法很类似。

例如,100110÷110的过程如下:

所以,100110÷110=110余10。

(2)二进制数的逻辑运算

二进制数的逻辑运算主要包括“或”运算、“与”运算、“非”运算。

① 逻辑“或”运算:常用符号“∨”来表示。运算规则如下:

0∨0=0

0∨1=1

1∨0=1

1∨1=1

可见,两个相“或”的逻辑变量中,只要有一个为1,“或”运算的结果就为1。仅当两个变量都为0时,或运算的结果才为0。

② 逻辑“与”运算:常用符号“∧”表示。运算规则如下:

0∧1=0

1∧0=0

1∧1=1

可见,两个相“与”的逻辑变量中,只要有一个为0,“与”运算的结果就为0。仅当两个变量都为1时,“与”运算的结果才为1。

③ 逻辑“非”运算:又称为逻辑否定,实际上就是将原逻辑变量的状态求反。运算规则如下:

可见,在变量的上方加一横线表示“非”。逻辑变量为0时,“非”运算的结果为1。逻辑变量为1时,“非”运算的结果为0。

2.1.4 数制转换

1.二进制、八进制、十六进制数转换成十进制

方法:按权展开求和。

例如:

(110.101)B=1×22+1×21+0×20+1×2-1+0×2-2+1×2-3=(6.625)D

(73.56)O=7×81+3×80+5×8-1+6×8-2=(59.71875)D

(2B.3C)H=2×161+11×160+3×16-1+12×16-2=(43.234375)D

2.十进制转换成二进制

十进制转换成二进制时,整数部分的转换与小数部分的转换是不同的。

① 整数部分:除2取余法。将十进制数反复除以2,直到商是0为止,并将每次相除之后所得的余数按次序记下来,第一次相除所得余数是K0,最后一次相除所得的余数是Kn-1,则Kn-1Kn-2…K2K1即为转换所得的二进制数。

【案例2-1】 将十进制数(123)10转换成二进制数。

解:

(123)10=(1111011)2

② 小数部分:乘2取整法。将十进制数的纯小数(不包括乘后所得的整数部分)反复乘以2,直到乘积的小数部分为0或小数点后的位数达到精度要求为止。第一次乘以2所得的结果是K1,最后一次乘以2所得的结果是Km,则所得二进制数为0.K1K2…Km

【案例2-2】 将十进制数(0.2541)10转换成二进制。

解:

(0.2541)10=(0.0100)2

【案例2-3】 将十进制数(123.125)10转换成二进制数。

解:对于这种既有整数又有小数的十进制数,可以将其整数部分和小数部分分别转换为二进制,然后再组合起来,就是所求的二进制数。

(123)10=(1111011)2

(0.125)10=(0.001)2

(123.125)10=(1111011.001)2

十进制转换为八进制、十六进制的方法与十进制转换为二进制的方法类似。例如:

· 十进制整数→八进制方法:“除8取余”。

· 十进制整数→十六进制方法:“除16取余”。

· 十进制小数→八进制小数方法:“乘8取整”。

· 十进制小数→十六进制小数方法:“乘16取整”。

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

二进制数转换为八进制数的方法:以小数点为界,分别向左或右将每3位二进制数合成为1位八进制数即可。如果不足3位,可用0补足。八进制数转换为二进制数,将每1位八进制数展成3位二进制数即可。

例如:

(1100101.1101)B=(001100101.110100)B=(145.64)O

(423.45)O=(100010011.100101)B

二进制数转换十六进制数的方法:以小数点为界,分别向左或右将每4位二进制数合成1位十六进制数即可。如果不足4位,可用0补足。十六进制数转换为二进制数,将每1位十六进制数展成4位二进制数即可。

例如:

(10101001011.01101)B=(010101001011.01101000)B=(54B.68)H

(ACD.EF)H=(101011001101.11101111)B

2.1.5 数据的存储单位

从静态的角度看,信息编码后的数据都以二进制的形式存放于计算机中,数据在计算机中存储的基本单位是二进制位。但是使用时,也就是存取数据时却不是以“位”为单位的。就像书籍,无论多厚的书籍都是由字构成的,但是人们阅读时基本单位却不是字,而是以句子、甚至以段落为单位。同理,计算机在存取数据时是以“字节”为基本单位。

此外,当人们衡量一个存储设备的容量或者一个文件的大小时,也是以字节为基本单位的。除了位和字节,还有一个计算机经常用到的数据单位:字。

① 位(bit):是计算机中存储数据的最小单位,指二进制数中的一个位数,其值为“0”或“1”。位的单位称为“比特”,经常用b来表示。

② 字节(Byte):是计算机中存取数据的基本单位,也被认为是计算机中最小的信息单位,计算机存储容量的大小是以字节的多少来衡量的。一个字节等于8位,即1Byte=8bit。字节经常用B表示。

由于B还是太小了,因此在表示容量或者文件大小时,经常会出现非常大的数字。为了表达方便,又引入了KB、MB、GB、TB等单位。这些单位之间的关系如下:

1KB=1024B=210B

1MB=1024KB=220B

1GB=1024MB=230B

1TB=1024GB=240B

③ 字(Word):是计算机存储、传送、处理数据的信息单位,是指计算机一次存取、加工、运算和传送的数据长度,一个字通常由一个字节或若干字节组成(一般为字节的整数倍)。一个字包含的二进制位数叫作“字长”。由于字长是指计算机一次所能处理的实际位数的多少,所以它能极大地影响计算机处理数据的速率,是衡量计算机性能的一个重要标志。通常有8位机、16位机、32位机、64位机等。