计算机中信息的表示方法

2018-01-24

计算机中信息的表示方法

计算机所能处理的数据、信息在计算机中都是以数字编码形式表示的。那么这些数字编码是以什么形式表示的、与日常表示的数有何区别、相互之间如何转换?字母、符号又如何表示等等。


1 计算机中的数制

1.1 数制的概念

1.1.1 十进制数

   十进制数用0、1、2、3、4、5、6、7、8、9十个数字表示。十进制数的特点是逢十进一。例如十进制数5067可以用如下数学式表示:5067=5×103+0×102+6×101+7×100

   一个n位十进制数ala2a3…an,可以表示为:

                              a1×10n-1+a2×10n-2+…+an×100

这里的10n-1,10n-2…100称为该位上的权。相邻两位中高位的权与低位的权之比称为基数,所以十进制数的基数为10


1.1.2 二进制数

   基数为2的计数制称为二进制。二进制数用0、1两个数字表示。二进制数的特点是逢二进一。

   一个n位二进制数ala2a3…an可以表示为:

                           N=(a1a2a3…an)2

   N为这个二进制数所代表的十进制数的值。把二进制数按权展开求和所得到的值即为这个二进制数代表的十进制数的值。

                           N=a1×2n-1+a2×2n-2+a3×2n-3+…+an×20

   例如,二进制数11011按权展开为:

               (11011)2=1×24+1×23+0×22+1×21+1×20=(27)10

   所以二进制数11011代表的十进制数为27

   二进制数的运算规则为:

   ①加法  0+0=0 0+1=1  1+0=1  1+1=0(有进位)

   ②减法  0-0=0 0-1=1(有借位)  1-0=1  1-1=0

   ⑨乘法  0×0=0  0×1=0  1×0=0  1×1=1

   ④除法  0÷1=0  1÷1=1

与十进制数的数学式相比,二进制数的基数为2,二进制数的权值变化为2n-1,2n-2,2n-3,…,20


1.1.3 十六进制数

基数为16的计数制称为十六进制。十六进制数用O、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F(大小写字母均可)表示。其中,A、B、C、D、E、F分别表示十进制数10、11、12、13、14、15。十六进制数的特点是逢十六进一。

一个n位十六进制数ala2a3…an可以表示为:

                                     N=(a1a2a3…+an)16

   例如,十六进制数A2F按权展开为:

          (A2F)16=A×162+2×161+F×160=10×162+2×161+15×160=(2607)10

   所以十六进制数A2F代表的十进制数为2607

   十六进制数的权值变化为16n-1,16n-2,16n-3,…,160

二进制数与十进制数、十六进制数之间的对应关系如下表所示。

1.png


1.2 各种数制间的相互转换

1.2.1 十进制数转换为二进制数

整数部分:用除2取余的方法转换,先余为低,后余为高;

小数部分:用乘2取整的方法转换,先整为高,后整为低。

例如,把十进制数18.6875转换为二进制数,可以用以下方法:

整数部分:用“除2取余法”先求出与整数18对应的二进制数。

2.png


1.2.2 十进制数转换为十六进制数

整数部分:用除16取余的方法转换,先余为低,后余为高;

小数部分:用乘16取整的方法转换,先整为高,后整为低。

例如,把十进制数1023转换为十六进制数,可以用以下方法:

3.png


1.2.4  十六进制数转换为二进制数

将十六进制数转换成二进制数的方法是:将每一位十六进制数用四位二进制数表示,即可得到相应的二进制数。

例如:将十六进制数4C3F转换成二进制数:

4.png

由以上例题可见,从二进制数很容易直接写成十六进制数,比用十进制数表示方便得多。


2 计算机中数的表示

在十进制数中,可以在数字前面加上“+”、“-”号来表示正负数,显然,计算机不能直接识别“+”、“-”号,那么可以用“0”来表示“+”,用“1”来表示“-”,这样数的符号也可以数字化了。

在计算机中,通常将二进制数的首位(最左边那一位)作为符号位,若二进制数是正的则其首位是0,二进制数是负的则首位是1。像这种符号也数码化的二进制数称为“机器数”,原来带有“+”、“-”号的数称为“真值”。例如:

十进制               +67        -67

二进制(真值)      +1000011 -1000011

计算机内(机器数)  01000011 11000011

机器数在机内也有三种不同的表示方法,这就是原码、反码和补码。

(1)原码

用首位表示数的符号,0表示正,1表示负,其他位则为数的真值的绝对值,这样表示的数就是数的原码。

例如:  X=(+105)   [X]原=(01101001)2

       Y=(-105)     [Y]原=(11101001)2

0的原码有两种,即   [+0]原=(00000000)2

                    [-0]原=(10000000)2

原码简单易懂,与真值转换起来很方便。但若是两个异号的数相加或两个同号的数相减就要做减法,就必须判别这两个数哪一个绝对值大,用绝对值大的数减去绝对值小的数,运算结果的符号就是绝对值大的那个数的符号,这些操作比较麻烦,运算的逻辑电路实现起来较复杂。于是,为了将加法和减法运算统一成只做加法运算就引进了反码和补码。

(2)反码

反码使用得较少,它只是补码的一种过渡。

正数的反码与其原码相同,负数的反码是这样求得的:符号位不变,其余各位按位取反,即0变为1,1变为0。例如:

   [+65]原=(01000001)2    [+65]反=(01000001)2

   [-65]原=(11000001)2     [-65]反=(1011lllO)2

很容易验证:一个数反码的反码就是这个数本身。

(3)补码

正数的补码与其原码相同,负数的补码是它的反码加1,即求反加1。例如:

   [+63]原=(00111111)2   [+63]反=(00111111)2    [+63]补=(00111111)2

   [-63]原=(101111l1)2    [-63]反=(11000000)2    [-63]补=(11000001)2

同样也很容易验证:一个数的补码的补码就是其原码。

引入了补码以后,两个数的加减法运算就可以统一用加法运算来实现,此时两数的符号位也当成数值直接参加运算,并且有这样一个结论,即两数和的补码等于两数补码的和。所以在计算机系统中一般采用补码来表示带符号的数。


2  计算机中信息的编码

从本质上说计算机只“认识”两个数字,这就是1和0。在计算机内部,无论是运算处理的数据、发出的控制指令、数据存放的地址,还是通信时传输的数据都是二进制数。那么计算机为什么会这么“神奇”,这么功能强大呢?原来,计算机计算的数、处理的字母符号、汉字、图形、图像、声音都必须按一定规则变成二进制数,这就是说,任何数据要交给计算机处理都必须用二进制数字1和0表示,这一过程就是数据的编码。


2.1 BCD

人们已习惯了十进制数,而计算机只使用二进制数,为了直观和方便起见,在计算机输入和输出时另外规定了一种用二进制编码表示十进制数的方式,即每一位十进制数数字对应4位二进制数编码,这种编码称为BCD码(Binary Coded Decimal二进制编码的十进制数)或称为8421码。此处所述的8421是这4位二进制数的权,lO个十进制数字对应的BCD码见下表所示。

注意:BCD码仅在形式上将十进制数变成了由1和0组成的二进制形式,实质上它还是表示十进制数,只不过每位十进制数用4位二进制数编码罢了,其运算规则和数值大小都是十进制的。

4.png

例如,设有一序列01100101

   将它理解成二进制数时,对应的十进制数是:

   0×27+1×26+1×25+0×24+0×23+1×22+0×21+1×20=64+32+4=1=(101)10

   若将它理解成BCD码,则对应的十进制数是65,因为前四位表示6,后四位表示5


2.2 字符的编码

   前面所述的是数值数据的编码,而计算机处理的另一大类数据是字符,各种字母和符号也必须用二进制

数来编码后才能交给计算机处理。目前,国际上通用的西文字符编码是ASCII(American Standard Code for Information Interchange美国国家标准信息交换代码),其码表参见下表。


3 计算机中的信息单位

3.1 位(bit)

一位二进制数(1或0)是计算机处理数据的最小单位,音译为“比特”。


3.2 字节(Byte)

   将8位二进制数放在一起就组成了一个字节,音译为“拜特”。字节是计算机内存储数据的基本单位,字节简记为B,1B=8bit

常用的字节单位:

1KB=1024B

1MB=1024KB

1GB=1024MB

1TB=1024GB


3.3 字(Word)和字长

计算机进行数据处理时,一次存取、加工、传送的数据长度称为一个字,一个字一般由若干字节组成。

计算机一次能处理的二进制位数的多少称为计算机的字长,字长决定了计算机处理数据的速率。显然,字长越长,速度越快,所以字长是衡量计算机性能的一个重要标志。