第 1 章 走入计算机世界 3 关灯啦 图1-1 大楼里灯的亮灭构成的图案 小明:难道我用的计算机、手机、iPad里,也有这么多灯吗? 这可放不下啊! 老师:哈,你说得太对了,计算机里是没办法放下这么多灯的。 因此,计算机不是用灯的“灭”与“亮”来表达世间万物的,而是 用计算机最擅长处理的两个数字“0”和“1”来描述所有事物的。 我们可以类比,灯的“灭”就是计算机里的数字“0”,灯的“亮” 就是计算机里的数字“1”。通过“0”和“1”的组合,计算机就 可以像图1-2这样描绘出类似图1-1这样的图画了。 00110011000111001110111111111111111111111111111111011111111000111111000001111000000011000000001100000000000000 图1-2 “0”和“1”构成的图案 小明:那我理解了,灯的“灭”和“亮”就是计算机里的“0” 和“1”,大楼的窗户就是计算机的屏幕。可是,控制这些灯的“总 开关”是什么呢? 老师:这又是一个很好的问题!我们一起来想想,计算机为什 第 1 章 走入计算机世界 所以十进制数对应的二进制表示就是“10”了。十进制数3呢? 对应的二进制表示就是“11”。我们再来看看二进制下的计算。比 如,十进制的计算1+2=3,在二进制下就是01+10=11;十进制计 算1+3=4,在二进制下就是01+11=100。 小明:好的,我现在基本明白二进制了。可是,这个二进制计 算看起来比十进制计算麻烦好多啊,为什么计算机不用我们都熟悉 的十进制进行计算,而非要用这么麻烦的二进制进行计算呢? 老师:是的,二进制看起来确实比十进制要麻烦。之所以计算机 内部一定要用二进制计算,是因为计算机比我们人类“笨”啊!这听 起来有点儿不可思议吧,计算机居然比人类要笨?!事实确实如此。 我们人类的大脑在进行十进制计算时,可以使用0~9这十个数字,是 因为我们人类的大脑里有十种不同的状态或者符号来进行对应表示。 如果计算机内部也采用十进制来计数的话,我们就需要找到一种元件, 这种元件须具有十种互不相同的状态。很遗憾的是,目前世界上还没 有这样一种电子元件能用于计算机。计算机使用的计算器件叫晶体管 [见图1-3(a)],它只有电流的“通”和“断”两种状态。计算机使 用的存储器件叫硬盘[见图1-3(b)],它只有“磁化”和“非磁化” 两种状态。你看,计算机就是这么笨笨的,所以只能用二进制啦。 看源图像 (a) (b) 图1-3 晶体管和硬盘 第 1 章 走入计算机世界 老师:是的,当二进制数的位数确定时,我们就能计算出其能 表达的最大二进制数了。下面我们来看一下表1-2(具体过程,你 可以试试自己计算哦)。 表1-2 二进制位数与最大二进制数 位 数 最大二进制数 对应的十进制数 3 111 7 6 111111 63 8 11111111 255 小明:二进制数到十进制数的转换,我现在学会了,可是一个 位一个位地数,好像有点儿太慢了,有没有更快的计位方法呢? 老师:一个二进制位只能表示0和1这两个非常小的数,八个 二进制位能表示0~255范围内的数。当需要处理更大的数据(比如大 于255的数字)时,我们需要引入一个新的单位:字节。在现代计算 机应用中,我们一般将8个连续存储的二进制位称为1字节(英文为 byte,简写为B)。为什么1字节是8位呢?这是因为早期的计算机处 理连续存储的8位数据比较便捷,所以约定1字节等于8位,沿用至今。 小明:我现在知道二进制数的表达方式了,那么计算机是怎么 对二进制数进行相加计算的呢? 老师:跟十进制类似,二进制加法就是两个二进制数的每一 位自右向左对应位的数字相加,逢二进一。例如,10+11=101,1100+0010=1110。 【1.1习题】 1.已知二进制数101011,求其对应的十进制数。 第 1 章 走入计算机世界 小明:好吧,那先来一个简单的图片,这是我刚刚手写的一个 数字“8”的照片(见图1-5),用这个图片可以吗? 图1-5 手写数字“8” 老师:这张图不错,为了更好地展示计算机对图像的表达,我 们把这张图放大看一看,如图1-6所示。 图1-6 手写数字“8”的放大图 从图1-6可以看出,一张图像在计算机里实际上是由一大堆的 小方块构成的。这些小方块共同拥有一个很好听的名字——像素[1]。 像素是整个图像中不可分割的单位,不可分割意味着它不能够再切 割成更小的单位。 小明:有意思,一张图像放大后看,每个像素就很像大楼里那 些方方的窗户了,对吗? 老师:是的,这个比喻非常生动。我们先给这个图像加上一个 类似大楼的边框,并且给每个像素加上窗框,就像图1-7一样。 第 1 章 走入计算机世界 表1-9 解码表 十 进 制 值 19 20 21 4 5 14 20 对应十六进制值 12 13 14 03 04 0D 13 字 母 S T U D E N T 小明:可是,上面26个数字只能表达大写的26个字母,我 们写英文作文的时候,还需要用到小写字母、空格、标点符号,甚 至还有阿拉伯数字等其他符号,这怎么办呢? 老师:是的,26个数字的表达空间是不足以支撑我们在计算 机上写出一篇英文作文的。我们可以知道,表达26个数字,仅仅 使用5个二进制位就够了(为什么呢?这个问题留给大家思考)。 如果我们需要表达更多的符号,我们就需要使用更多的二进制位来 存储一个符号的信息。实际上,现在计算机通用的ASCII码(全 称为美国信息交换标准代码)就使用了8位(即1字节)。ASCII 码是20世纪60年代由美国制定的一套通用字符编码,主要用于显 示现代英语和一些西欧国家的语言。这套编码对常用英语字符与二 进制的转换关系做了统一规定,一直沿用至今[6]。 标准ASCII码使用7位来表示所有的字母(包括大写字母、 小写字母)、数字0~9、标点符号及一些控制字符(如空格、回车 等),一共规定了128个字符的编码。由于ASCII码只用了7位, 所以其最高位(最左边一位)并未使用,因此最高位统一为0。 表1-10是一些字符的ASCII码编码示例。 表1-10 ASCII码编码示例 字 符 A 8 = [ 回车 ASCII码 00001101 00111000 00111101 01011011 00001101 小明:ASCII码只有128个字符,表达英文是没问题了。可是,