1.1.2 计算机中信息的表示
计算机是对信息(通常包括数字、字符、图像和声音(本书只讨论数字和字符信息)进行处理的机器。由于在计算机内部采用二进制数系统,所以无论何种类型的信息都必须以二进制数的形式在机器中进行处理。要了解计算机如何进行工作就必须了解二进制,及与其他数制之间的关系。
1.进位计数制
在日常生活和工作中,人们在计数时使用不同的记写和命名数字的方法从而构成各种计数制。每一种计数制都使用一组特定的数字符号,通常把这些符号按序排列,由低位到高位进位,以表示一个数,这种计数方法称为进位计数制。人们最习惯和常用的是十进制。在计算机科学中除十进制外,常用的还有二进制、八进制和十六进制。
在采用进位计数的数字系统中,如果用r个基本符号(例如0,1,2,…,r−1)表示数值,则称其为r进制数,r称为该数制的基。例如:我们日常生活中常用的十进制,其基r 为10,即基本符号为0,1,2,…,9。若取基r=2,则基本符号为0和1,称为二进制数。不同的计数制具有的共同特点是:
(1)每一种计数制都有固定的符号集 如十进制数制,其符号有十个:0,1,2,…,9。二进制数制,其符号有两个:0和1。
(2)都使用位置表示法 即处于不同位置的数符所代表的值不同,其值与所在位置的权值有关。
例如:十进制数123.45可表示为
123.45=1×102+2×101+3×100+4×10-1+5×10-2
由此可以看出,各种进位计数制中的权值恰好是基数的i次幂,其中i,∈−∞+∞(),i的大小与该位在数中的位置有关。因此,对任何一种进位计数制r表示的数都可以写成按其位权展开的多项式,任意一个r进制数N可表示为
式中,Dm为该数制采用的基本数符,ri是权值,r是基数,基数不同所表示的进位数制不同。计算机中常用的几种进位数制如表1.1.1所示。
表1.1.1 计算机中常用的几种进位数制的表示
前面我们已经介绍了常用的各种计数制,为什么计算机内采用二进制,而不采用我们熟悉的十进制呢? 其主要原因是:
(1)二进制只使用数字符号“0”和“1”,可用自然界存在的两种对立的物理状态表示。例如,晶体管导通为“1”,截止为“0”;高电压为“1”,低电压为“0”;灯亮为“1”,不亮为“0”;磁性器件磁化在一个方向为“1”,另一个方向为“0”;等等。计算机采用具有两种不同稳定状态的电子或磁性器件表示“0”和“1”。由于二进制状态简单,比十进制容易实现,数据传送不易出错,因此工作可靠。
(2)二进制的运算比十进制数简单。二进制两个整数的“和”的运算规则只有三条:
加法 0+0=0
0+1=1
1+1=10
这种运算规则大大简化了计算机中实现运算的线路。实际上在计算机中减法、乘法及除法运算都可转化为加法这种最基本的运算来完成。
(3)采用二进制可以进行逻辑运算,使逻辑代数和逻辑电路成为计算机电路设计的数学基础。
2.不同进制之间的转换
(1)r进制转换为十进制:采用以下权展开公式实现:
将r进制数转换为十进制数的方法是:将r进制数的基数与相应位置的权值相乘,然后相加即可。比如,把二进制数转换为相应的十进制数,只要将二进制数中出现1的位权相加即可。
例1 把二进制数100110.101转换成相应的十进制数。
(100110.101)B= 1×25+1×22+1×21+1×2−1+1×2−3
=(38.625)D
例2 把八进制数103.2转换成相应十进制数。
(103.2)O= 1×82+3×80+2×8−1=(67.25)D
(2)十进制数转换为r进制
① 十进制数转换为r进制整数。将一个十进制整数反复除以基数r,直到商为0为止,并记下每次所得余数(注:余数始终是介于0到r−1之间的数,包括0和r−1),将最后一个余数到第一余数按从左到右的次序连起来,它们所组成的数字串即为相应的r进制整数。这种方法称为除r取余法。例如:把十进制整数转换成相应的二进制整数,只需将十进制整数反复除以2,直到商为0为止。
例如,把十进制数14转换成二进制数,如下所示。
所以(14)D=(1110)B 。
② 十进制小数转换为r进制小数。将十进制小数转换成r进制小数时,首先将十进制小数反复乘以基数r,并取其整数部分(注:整数部分始终是介于0到r−1之间的数,包括0和r−1)。将从第一个整数到最后一个整数按从左到右的顺序连起来,它们所组成的数字串即为相应的r进制小数,这种方法称为乘r取整法。
例如,将十进制数0.375转换成相应的二进制数。
所以(0.375)D=(0.011)B 。
如果十进制数包含整数和小数两部分,则必须将十进制数整数部分和小数部分分别按除r取余数和乘r取整数进行转换,然后,再把r进制整数和小数部分组合在一起。
例如,将十进制数14.375转换成二进制数,只要将上例整数部分和小数部分组合在一起即可,即1110.011。
(3)非十进制数间的转换
两个非十进制数之间的转换方法一般结合上述两种方法进行转换,即先把被转换数据转换为相应的十进制数,然后再将十进制数转换为其他进制数。由于二进制、八进制和十六进制之间存在特殊关系,即8=23,16=24,因此转换方法就比较容易,如表1.1.2所示。
表1.1.2 二进制、八进制、十六进制之间的关系
根据这种对应关系,二进制转换到八进制十分简单,只需将二进制数以小数点为界,整数从右向左每3位一组,小数部分从左向右每3位一组,最后不足3位补零,然后根据表1.1.2,即可完成转换。
例如,将二进制数(10100101.010111101)B转换成八进制数。
所以(010 100 101.010 111 010)B=(245.272)O。
将八进制转换成二进制的过程正好相反。
二进制同十六进制之间的转换就如同八进制同二进制之间一样,只是4位一组。
例如,将二进制(1111111000111.100101011)B转换成十六进制数。
所以(0001 1111 1100 0111.1001 0101 1000)B=(1FC7.958)H。
3.信息的单位及机器数
如前所述,在计算机中采用具有两种状态的电子器件表示“1”和“0”,每个电子器件代表二进制数中的一位。因此,位(bit)是计算机中的最小信息单位。通常将八位二进制位称为一个字节(byte),字节是信息的基本单位。一个字节可以表示256种状态,它可以存放0~255范围内的一个整数,或一个字符的编码。计算机中常以字节为单位表示文件或数据的长度以及存储容量的大小。例如,内存容量128MB。其中,1MB=102 KB,其他单位之间的关系如下:
1B=8bit
1KB=1024B
1MB=1024KB
1GB=1024MB
1TB=1024GB
二进制数在计算机中的表示形式称为机器数。由于计算机存放一个参与运算的机器数所使用的电子器件的基本位数是固定的,通常把具有固定位的这种二进制串称为字,而把字所包含的二进制数位数称为字长。通常所说多少位的计算机,就是指一个字长有多少位。例如,16位机的字长为16位,能表示216个不同的信息;32位机的字长为32位,能表示232个不同的信息。一般来说,计算机的字长越长,性能也越高。大型机的字长高于128位。
机器数具有的重要特点如下:
(1)机器数的位数固定,能表示的数值范围受到位数限制。例如,字长为8位的计算机,能表示的无符号整数的范围为0~255(28−1);字长为16位的计算机能表示无符号整数的范围为0~65535(216−1)。由于字长的限制,如果计算机运算的结果超过了机器数能表示的范围,就会产生“溢出”,计算机便停止运行,进行溢出处理。
(2)机器数的正、负用“0”和“1”表示。上述的二进制数没有考虑符号问题,所以是无符号的数。在实际应用中,数总是有正负的,在计算机中通常是把最高位作为符号位,其余作为数值位,并规定0表示正数,1表示负数。因此,机器数是连同数据符号一起数字化了的数据。
(3)机器数有定点和浮点两种表示法。
4.字符的表示
为了符合人们的习惯,使用计算机时能用十进制数及常用的字母、字符完成信息的输入和输出,在机器内又能以二进制数进行处理,因此信息必须用二进制编码。所谓编码是用一串二进制数码代表一位十进制数字或一个字符。编码工作由计算机在输入、输出时自动进行。现在国际上广泛采用美国标准信息交换代码(American Standard Code for Information Interchange)表示字符,简称为ASCII码。ASCII码基本字符集包括了128个字符,其中包括数字(0~9),英文大小写字母,一些在算式中常用的符号,以及控制字符,每个字符用一个字节表示。由于基本ASCII码的最高位为0,因此128个字符的编码范围为00000000~01111111,即十进制的0~127。字符的二进制编码表如附录C所示。从表中可看出,从A到Z的26个大写字母,是由01000001~01011010(十进制的65到90)的26个连续代码来表示的,而0到9的数字,则由00110000~00111001(十进制的48到57)的10个连续代码来表示。从NUL到US的控制字符,用00000000~00011111(十进制的0到31)的32个连续代码来表示,控制字符(包括最后一个删除字符DEL)是非显示和非打印字符,其他为可显示、可打印字符。
这些字符通常是用计算机的键盘输入的。键盘上的每个字符都由其ASCII码代表,通过这些字符的不同组合,就可以实现对各种信息的表示、传递和处理。由此可见,编码的作用就是把要计算机处理的数据(数值或字符)转换成二进制数字串,以便在机器中存储和处理,输出时再通过机器转换成对应符号。
例如,用键盘上按键输入“CHINA”的字符串,传送进计算机的,则是01000011、01001000、01001001、01001110、01000001这五个二进制数字串;反之,存储器内存储的二进制数字串01010111、01010000、01010011在显示器或打印机输出时,可转换成“WPS”字符串。
必须指出的是,由7位编码构成的ASCII码基本字符集能表示的字符只有128个,不能满足信息处理的需要,近年来,对ASCII码字符集进行了扩充。采用8个二进制位表示一个字符,编码范围:00000000~11111111,一共可表示256种字符和图形符号,这称为扩充的ASCII码字符集,但通常使用的仍是基本ASCII码字符集。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。