2.1 0和1的思维
计算机系统中将文字、声音、视频等数据转换为简单的电脉冲,并以0和1的形式存储。0和1的思维是计算机系统工作基础。
2.1.1 进位计数制
计数制是指用一组固定的数码和一套统一的规则表示数值的方法。按进位的原则进行计数称为进位计数制。
日常生活中常用的是十进制,而计算机中常用二进制、八进制、十六进制。表2-1所示为十进制、二进制、八进制、十六进制数码的表示方法。
表2-1 十进制、二进制、八进制、十六进制的数码表示方法
进位计数制中表示一位数所能使用的数码符号个数称为基数。例如,十进制数有0~9共10个数码,基数为10,逢10进1。
任何一个数,不同数位的数码表示的值的大小不同。例如,十进制中,323.4可以表示为:
323.4=3×(10)2+2×(10)1+3×(10)0+4×(10)-1
百位上的“3”表示300,个位上的“3”表示3。
每个数位的数码代表的数值,等于数码乘以一个固定数值,这个数值称为位权或权。各种进位制中位权均等于基数的若干次幂。因此,任何一种进位计数制表示的数都可以拆分为多项式的和。
1. 十进制
十进制中,K表示0~9的10个数码中的任意一个数码,则任何一个数(N)可以表示为:
N=±[Kn−1×(10)n-1+Kn−2×(10)n-2+…+K0×(10)0+K-1×(10)-1+K−2×(10)-2+…]
2. 二进制
计算机中信息的存储和处理都采用二进制。二进制数只有0、1两个数码,基数为2,逢2进1。为了便于区分,在二进制数后加“B”,表示数为二进制数。例如:
1101.1B=(1101.1)2=1×23+1×22+0×21+1×20+1×2-1=(13.5)10
3. 八进制
八进制有0~7共8个数码,基数为8,逢8进1。为了便于区分,在八进制数后加“O”,表示数为八进制数。例如:
127.5O=(127.5)8=1×82+2×81+7×80+5×8-1=(87.625)10
4. 十六进制
十六进制有0~9、A、B、C、D、E、F共16个数码,基数为16,逢16进1。用A~F表示十进制中10~15的6种状态。为了便于区分,在十六进制数后加“H”,表示数为十六进制数。例如:
BE23.8H=(BE23.8)16=11×163+14×162+2×161+3×160+8×16-1=(48 675.5)10
2.1.2 不同进制数的转换
计算机中使用二进制,而现实生活一般采用十进制,因此经常需要在不同进制间相互转换。
1. 不同进制数转换为十进制数
将任何进制的数转换为十进制数时,用每个位置上的数码乘以相应的位权,然后求和,就能得到对应的十进制数值。
【例2.1】 将二进制数(110010100111.1)2、八进制数(6 247.4)8、十六进制数(CA7.8)16转换为对应的十进制数。
(110010100111.1)2=1×211+1×210+0×29+0×28+1×27+0×26+1×25+0×24+0×23+1×22+1×21+1×20+1×2-1=(3 239.5)10
(6 247.4)8=6×83+2×82+4×81+7×80+4×8-1=(3 239.5)10
(CA7.8)16=12×162+10×161+7×160+8×16-1=(3 239.5)10
2. 十进制数转换为二进制、八进制、十六进制数
将十进制数的整数部分转换为R进制数,通常采用“除R取余法”,即用十进制整数除以R取余数,将商反复除以R,直至商为零。
得到的第一个余数为最低位,最后一个余数为最高位,将所得余数从高位到低位依次排列,就是对应R进制数。
例如,把十进制数转换为二进制整数采用“除2取余法”,把十进制数转换为八进制或十六进制整数采用“除8取余法”或“除16取余法”。
【例2.2】 将十进制整数(167)10转换为对应的二进制、八进制、十六进制数。
3. 二进制、八进制、十六进制数的相互转换
二进制、八进制、十六进制数之间的转换可以借助十进制数完成,也可以通过简单的方法直接转换。
如表2-1所示,每3位二进制数对应一位八进制数,每4位二进制数对应一位十六进制数。因此,将二进制数转换为八进制数的方法是,从小数点开始向两边,每3位二进制数转换成一位八进制数,数的开始和结尾部分不足3位的均补零。将二进制数转换为十六进制数,则将每4位二进制数转换成一位十六进制数,其余同上。
【例2.3】 将二进制数(10100111.1011)2转换成八进制、十六进制数。
(10100111.1011)2=(010 100 111.101 100)2=(247.54)8=(1010 0111.1011)2=(A7.B)16
相应地,若想把八进制、十六进制数转换为二进制数,只需要把数值的每一位转换为对应的3位、4位二进制数即可。形成的二进制数,可省略开头和结尾处的零。
【例2.4】 将(367.45)8、(E7B2.C8)16转换为二进制数。
2.1.3 二进制与《易经》
《易经》是中国最古老的一部哲学思想著作,它通过阴阳的组合来进行现实世界的语义符号化。语义符号化是指将现实世界使用符号来表达,进而进行基于符号的计算的一种思维。阴用两个短线(或六)来表示;阳用一根长线(或九)来表示,如图2-1所示,阴对应二进制的0,阳对应二进制的1。符号的位置和组合及其演变关系,可以描述现实世界的事物和规律性的含义。
图2-1 阴阳
三画的组合形成一卦,共有8种组合,即八卦,如图2-2和图2-3所示。八卦可以表示自然空间中的8种现象:天(乾)、地(坤)、雷(震)、风(巽)、水或月(坎)、火或日(离)、山(艮)和泽(兑)。
图2-2 三画卦
图2-3 八卦图
六画的组合形成一卦,共有64种组合,即六十四卦。六画卦可以描述人从生到死的变化规律,或者描述一年二十四节气的演变规律。
三画卦和六画卦的每一个阴和阳称为爻,则三画卦包括24爻,六画卦包括384爻。
八卦和六十四卦从本质上来说是二进制数,八卦相当于三位二进制数的8个数;六十四卦相当于6位二进制数的64个数。
2.1.4 二进制与逻辑运算
逻辑指的是事物之间遵循的规律,是现实生活中普适的思维方式。逻辑的基本表现形式是命题和推理。命题是由语句表达的内容为真或假的一个判断。推理就是依据简单命题的判断结论推导出复杂命题的判断结论的过程。
【例2.5】 命题举例,现实生活中小明是一个男的小学生,变量A的值为10。
命题1:小明是男生,结果为真。
命题2:小明是小学生,结果为真。
命题3:小明是男生,并且是个小学生,结果为真。
命题4:A>3,结果为真。
命题5:A<10,结果为假。
命题6:A>3并且A<10,结果为假。
命题和推理可以符号化,用符号来表示命题。
【例2.6】 将【例2.5】的命题符号化。
命题1用X表示。
命题2用Y表示。
命题3用Z表示,则“Z=X AND Y”。
复杂命题的推理可以通过逻辑运算完成。逻辑运算符包括如下。
(1)AND(与):X AND Y,X和Y都为真时,为真。
(2)OR(或):X OR Y,X和Y都为假,才为假。
(3)NOT(非):NOT X,X为真时值为假,X为假时值为真。
(4)XOR(异或):X XOR Y,X和Y不同时为真。
在命题、推理和逻辑运算中,可以用二进制的0表示假,1表示真。从而使逻辑运算很容易被计算机处理。逻辑运算的真值表,如表2-2所示。
表2-2 逻辑运算真值表
2.1.5 二进制与元器件
基本的逻辑运算可以由电子元器件及其电路实现。如高电平为1,低电平为0(见图2-4)。
图2-4 高电平和低电平
电子计算机中,使用电子管来表示十进制的十种状态过于复杂,而使用电子管的开和关两种状态来表示二进制的0和1则非常容易实现。
【例2.7】 使用8个电子管的一组开关状态表示二进制数10100110,如图2-5所示。
图2-5 电子管描述二进制数
硬盘也称为磁存储设备,通过电磁学原理读写数据,存储介质为磁盘或磁带,通过读写磁头改变存储介质中每个磁性粒子的磁极为两个状态,分别表示0和1,如图2-6所示。
图2-6 磁存储介质表示0和1
光盘利用激光束在光盘表面存储信息,根据激光束和反射光的强弱不同,可以实现信息的读写。在写入光盘时会在光盘表面形成小凹坑,有坑的地方记录“1”,反之为“0”,如图2-7所示。
图2-7 光盘表示0和1
提示
计算机中采用二进制数有以下优点。
(1)可行性。计算机中采用二进制编码具有可行性。采用二进制编码,只需要0、1两种状态,因此采用二进制数在技术上容易实现。使用“有脉冲、无脉冲”“高电位、低电位”“电磁南极、电磁北极”这样可对比的状态描述数字而无须准确测量具体值,因此当元器件受到一定程度的干扰时,仍能可靠地分辨出它表述的是什么数值。
(2)简易性。采用二进制有利于各种算法、规则的实现。数值计算是计算机的重要应用领域之一。二进制的算术运算规则简单,如A、B两数相乘,只有0×0=0、0×1=0、1×0=0、1×1=1共4种组合,而相应的十进制却有100种组合。
(3)适合逻辑运算。逻辑代数是逻辑运算的理论依据,二进制的1和0正好与逻辑代数中的“真”和“假”相吻合。
(4)易于转换。二进制数与十进制数、八进制数、十六进制数易于互相转换。
2.1.6 存储单位关系
在计算机中,数据的存储单位有位和字节,具体如下。
(1)位(bit)。它是计算机中最小的信息单位。一“位”只能表示0和1中的一个,即一个二进制位,或存储一个二进制数位的单位。
(2)字节(Byte)。每8个位称为字节(简写为B)。字节是计算机中数据存储的最基本单位,以下是计算机中各存储单位之间的关系。
1B=8bit。
1KB=1024B=210B。
1MB=1024KB=220B。
1GB=1024MB=230B。
1TB=1024GB=240B。
1张JPG格式图片的存储空间大约为1MB,使用传统电子管存储和表示1MB数据需要220×8(约800万)个电子管。