信息在计算机中的存储形式
发布时间:2012.10.11  浏览次数:10476次   来源:尚邦公考

信息在计算机中的存储形式

人类用文字、图表、数字表达和记录着世界上各种各样的信息,便于人们用来处理和交流。现在可以把这些信息都输入到计算机中,由计算机来保存和处理。前面提到,当代冯·诺依曼型计算机都使用二进制来表示数据,本节所要讨论的就是用二进制来表示这些  数据。

1.4.1  计算机中的数据

经过收集、整理和组织起来的数据,能成为有用的信息。数据是指能够输入计算机并被计算机处理的数字、字母和符号的集合。平常所看到的景象和听到的事实,都可以用数据来描述。可以说,只要计算机能够接受的信息都可叫数据。

1.计算机中数据的单位

计算机数据的表示经常用到以下几个概念。在计算机内部,数据都是以二进制的形式存储和运算的。

(1)位

二进制数据中的一个位(bit)简写为b,音译为比特,是计算机存储数据的zui小单位。一个二进制位只能表示0或1两种状态,要表示更多的信息,就要把多个位组合成一个整体,一般以8位二进制组成一个基本单位。

(2)字节

字节是计算机数据处理的zui基本单位,并主要以字节为单位解释信息。字节(Byte)简记为B,规定一个字节为8位,即1B=8bit。每个字节由8个二进制位组成。一般情况下,一个ASCII码占用一个字节,一个汉字国际码占用两个字节。

(3)字

一个字通常由一个或若干个字节组成。字(Word)是计算机进行数据处理时,一次存取、加工和传送的数据长度。由于字长是计算机一次所能处理信息的实际位数,所以,它决定了计算机数据处理的速度,是衡量计算机性能的一个重要指标,字长越长,性能越好。

 

(4)数据的换算关系

1Byte=8bit,1KB=1024B,1MB=1024KB,1GB=1024MB。

计算机型号不同,其字长是不同的,常用的字长有8、16、32和64位。一般情况下,IBM PC/XT的字长为8位,80286微机字长为16位,80386/80486微机字长为32位,Pentium系列微机字长为64位。

例如,一台微机,内存为256MB,软盘容量为1.44MB,硬盘容量为80GB,则它实际的存储字节数分别为:

内存容量=256×1024×1024B=268435456B

软盘容量=1.44×1024×1024B=1509949.44B

硬盘容量=80×1024×1024×1024B=85899345920B

如何表示正负和大小,在计算机中采用什么计数制,是学习计算机的一个重要问题。数据是计算机处理的对象,在计算机内部,各种信息都必须通过数字化编码后才能进行存储和处理。

由于技术原因,计算机内部一律采用二进制,而人们在编程中经常使用十进制,有时为了方便还采用八进制和十六进制。理解不同计数制及其相互转换是非常重要的。

2.进位计数制

在计算机中,二进制并不符合人们的习惯,但是计算机内部却采用二进制表示信息,其主要原因有如下4点:

(1)电路简单

在计算机中,若采用十进制,则要求处理10种电路状态,相对于两种状态的电路来说,是很复杂的。而用二进制表示,则逻辑电路的通、断只有两个状态。例如:开关的接通与断开,电平的高与低等。这两种状态正好用二进制的0和1来表示。

(2)工作可靠

在计算机中,用两个状态代表两个数据,数字传输和处理方便、简单、不容易出错,因而电路更加可靠。

(3)简化运算

在计算机中,二进制运算法则很简单。例如:相加减的速度快,求积规则有3个,求和规则也只有3个。

(4)逻辑性强

二进制只有两个数码,正好代表逻辑代数中的“真”与“假”,而计算机工作原理是建立在逻辑运算基础上的,逻辑代数是逻辑运算的理论依据。用二进制计算具有很强的逻   辑性。

1.4.2  计算机中常用的几种计数制

用若干数位(由数码表示)的组合去表示一个数,各个数位之间是什么关系,即逢“几”进位,这就是进位计数制的问题。也就是数制问题。数制,即进位计数制,是人们利用数字符号按进位原则进行数据大小计算的方法。通常是以十进制来进行计算的。另外,还有二进制、八进制和十六进制等。

在计算机的数制中,要掌握3个概念,即数码、基数和位权。下面简单地介绍这3个概念。

数码:一个数制中表示基本数值大小的不同数字符号。例如,八进制有8个数码:0、1、2、3、4、5、6、7。

基数:一个数值所使用数码的个数。例如,八进制的基数为8,二进制的基数为2。

位权:一个数值中某一位上的1所表示数值的大小。例如,八进制的123,1的位权是64,2的位权是8,3的位权是1。

1.十进制(Decimal notation)

十进制的特点如下:

(1)有10个数码:0、1、2、3、4、5、6、7、8、9。

(2)基数:10。

(3)逢十进一(加法运算),借一当十(减法运算)。

(4)按权展开式。对于任意一个n位整数和m位小数的十进制数D,均可按权展      开为:

D=Dn-1·10n-1+Dn-2·10n-2+…+D1·101+D 0·10 0+D -1·10 –1+…+D –m·10 –m

例:将十进制数456.24写成按权展开式形式为:

456.24=4×10 2+5×101+6×100+2×10-1+4×10-2

2.二进制(Binary notation)

二进制有如下特点:

(1)有两个数码:0、1。

(2)基数:2。

(3)逢二进一(加法运算),借一当二(减法运算)。

(4)按权展开式。对于任意一个n位整数和m位小数的二进制数D,均可按权展      开为:

D=Bn-1·2n-1+Bn-2·2n-2+…+B1·21+B0·20+B-1·2–1+…+B–m·2-m

例:把(11001.101)2写成展开式,它表示的十进制数为:

1×2 4+1×2 3+0×22+0×21+1×20+1×2-1+0×2-2+1×2-3=(25.625)10

3.八进制(Octal notation)

八进制的特点如下:

(1)有8个数码:0、1、2、3、4、5、6、7。

(2)基数:8。

(3)逢八进一(加法运算),借一当八(减法运算)。

(4)按权展开式。对于任意一个n位整数和m位小数的八进制数D,均可按权展      开为:

D=On-1·8n-1+…+O1·81+O0·80+O-1·8 –1+…+O–m·8-m

例:(5346)8相当于十进制数为:

5×83+3×82+4×81+6×80=(2790)10

4.十六进制(Hexadecimal notation)

十六进制有如下特点:

(1)有16个数码:0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F。

(2)基数:16。

(3)逢十六进一(加法运算),借一当十六(减法运算)。

(4)按权展开式。对于任意一n位整数和m位小数的十六进制数D,均可按权展     开为:

D=Hn-1·16n-1+…+H1·161+H 0·16 0+H -1·16 –1+…+H –m·16 -m

在16个数码中,A、B、C、D、E和F这6个数码分别代表十进制的10、11、12、13、14和15,这是国际上通用的表示法。

例:十六进制数(4C4D)16代表的十进制数为:

4×163+C×16 2+4×161+D×160=(19533)10

二进制数与其他数之间的对应关系如表1-1所示。

表1-1  几种常用进制之间的对照关系

十  进  制

二  进  制

八  进  制

十 六 进 制

0

0000

0

0

1

0001

1

1

2

0010

2

2

3

0011

3

3

4

0100

4

4

5

0101

5

5

6

0110

6

6

7

0111

7

7

8

1000

10

8

9

1001

11

9

10

1010

12

A

11

1011

13

B

12

1100

14

C

13

1101

15

D

14

1110

16

E

15

1111

17

F

1.4.3  常用计数制之间的转换

不同数进制之间进行转换应遵循转换原则。转换原则是:两个有理数如果相等,则有理数的整数部分和分数部分一定分别相等。也就是说,若转换前两数相等,转换后仍必须相等,数制的转换要遵循一定的规律。

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

(1)二进制数转换成十进制数

将二进制数转换成十进制数,只要将二进制数用计数制通用形式表示出来,计算出结果,便得到相应的十进制数。

例:(1101100.111)2=1×26+1×25+1×23+1×22+1×2-1+1×2-2+1×2-3

=64+32+8+4+0.5+0.25+0.125

 =(108.875)10

(2)八进制数转换为十进制数

八进制数→十进制数:以8为基数按权展开并相加。

例:把(652.34)8转换成十进制。

解:(652.34)8=6×82+5×81+2×80+3×8-1+4×8-2

=384+40+2+0.375+0.0625

=(426.4375)10

(3)十六进制数转换为十进制数

十六进制数→十进制数:以16为基数按权展开并相加。

例:将(19BC.8)16转换成十进制数。

解:(19BC.8)16=1×163+9×162+B×161+C×160+8×16-1

 =4096+2304+176+12+0.5

 =(6588.5)10

2.十进制转换为二进制数

(1)整数部分的转换

整数部分的转换采用的是除2取余法。其转换原则是:将该十进制数除以2,得到一个商和余数(K0),再将商除以2,又得到一个新商和余数(K1),如此反复,得到的商是0时得到余数(Kn-1),然后将所得到的各位余数,以zui后余数为zui高位,zui初余数为zui低位依次排列,即Kn-1Kn-2…K1K0,这就是该十进制数对应的二进制数。这种方法又称为“倒    序法”。

例:将(126)10转换成二进制数。

结果为:(126)10=(1111110)2

(2)小数部分的转换

小数部分的转换采用乘2取整法。其转换原则是:将十进制数的小数乘以2,取乘积中的整数部分作为相应二进制数小数点后zui高位K-1,反复乘2,逐次得到K-2、K-3、…、K-m,直到乘积的小数部分为0或1的位数达到精确度要求为止。然后把每次乘积的整数部分由上而下依次排列起来(K-1K-2…K-m),即是所求的二进制数。这种方法又称为“顺序法”。

例:将十进制数(0.534)10转换成相应的二进制数。

结果为:(0.534)10=(0.10001)2

例:将(50.25)10转换成二进制数。

分析:对于这种既有整数又有小数部分的十进制数,可将其整数和小数分别转换成二进制数,然后再把两者连接起来即可。

因为(50)10=(110010)2,(0.25)10=(0.01)2

所以(50.25)10=(110010.01)2

3.八进制与二进制数之间的转换

(1)八进制转换为二进制数

八进制数转换成二进制数所使用的转换原则是“一位拆三位”,即把一位八进制数对应于三位二进制数,然后按顺序连接即可。

例:将(64.54)8转换为二进制数。

   6      4     .      5       4

↓      ↓   ↓     ↓      ↓

  110    100    .      101     100

结果为:(64.54)8=(110100.101100)2

(2)二进制数转换成八进制数

二进制数转换成八进制数可概括为“三位并一位”,即从小数点开始向左右两边以每三位为一组,不足三位时补0,然后每组改成等值的一位八进制数即可。

例:将(110111.11011)2转换成八进制数。

   110    111    .     110     110

↓     ↓    ↓    ↓      ↓

    6      7     .      6       6

结果为:(110111.11011)2=(67.66)8

4.二进制数与十六进制数的相互转换

(1)二进制数转换成十六进制数

二进制数转换成十六进制数的转换原则是“四位并一位”,即以小数点为界,整数部分从右向左每4位为一组,若zui后一组不足4位,则在zui高位前面添0补足4位,然后从左边第yi组起,将每组中的二进制数按权数相加得到对应的十六进制数,并依次写出即可;小数部分从左向右每4位为一组,zui后一组不足4位时,尾部用0补足4位,然后按顺序写出每组二进制数对应的十六进制数。

例:将(1111101100.0001101)2转换成十六进制数。

   0011  1110    1100   .   0001   1010

    ↓    ↓      ↓   ↓   ↓      ↓

     3     E       C    .    1       A

结果为:(1111101100.0001101)2=(3EC.1A)16

(2)十六进制数转换成二进制数

十六进制数转换成二进制数的转换原则是“一位拆四位”,即把1位十六进制数写成对应的4位二进制数,然后按顺序连接即可。

例:将(C41.BA7)16转换为二进制数。

    C       4        1        .        B        A       7

    ↓      ↓       ↓       ↓      ↓        ↓      ↓

    1100   0100     0001       .       1011    1010    0111

结果为:(C41.BA7)16=(110001000001.101110100111)2

在程序设计中,为了区分不同进制,常在数字后加一英文字母作为后缀以示区别。

l          十进制数,在数字后面加字母D或不加字母也可以,如6659D或6659。

l          二进制数,在数字后面加字母B,如1101101B。

l          八进制数,在数字后面加字母O,如1275O。

l          十六进制数,在数字后面加字母H,如CFE7BH。

1.4.4  二进制数的运算

二进制数的运算包括算术运算和逻辑运算。

1.二进制数的算术运算

二进制数的算术运算包括加法、减法、乘法和除法运算。

(1)二进制数的加法运算

二进制数的加法运算法则是:0+0=0,0+1=1+0=1,1+1=10(向高位进位)。

例:求(101101.10001)2+(1011.11001)2的值。

解:      1  0  1  1  0  1  .  1  0  0  0   1

      +        1  0  1  1  .  1  1  0  0   1

          1  1  1  0  0  1  .  0  1  0  1   1

结果为:(101101.10001)2+(1011.11001)2 =(111001.01011)2

总结:从以上加法的过程可知,当两个二进制数相加时,每一位是3个数相加,对本位则是把被加数、加数和来自低位的进位相加(进位可能是0,也可能是1)。

(2)二进制数的减法运算

二进制数的减法运算法则是:0-0=1-1=0,1-0=1,0-1=1(借1当二)。

例:求(110000.11)2-(001011.01)2的值。

解:        1   1  0  0  0   0  .  1  1

      -    0   0  1  0  1   1  .  0  1

            1   0  0  1  0   1  .  1  0

结果为:(110000.11)2-(001011.01)2=(100101.10)2

总结:从以上运算过程可知,当两数相减时,有的位会发生不够减的情况,要向相邻的高位借1当2。所以,在做减法时,除了每位相减外,还要考虑借位情况,实际上每位有3个数参加运算。

(3)二进制数的乘法运算

二进制数的乘法运算法则是:0×0=0,0×1=1×0=0,1×1=1。

例:求(1010)2×(1011)2的值。

解:           1   0    1    0

        ×     1   0    1    1

               1   0    1    0

           1   0   1    0

        0  0   0   0

+  1   0  1   0

    1   1  0   1   1    1    0

结果为:(1010)2×(1011)2=(1101110)2

总结:由以上运算过程可知,当两数相乘时,每个部分积都取决于乘数。乘数的相应位为1时,该次的部分积等于被乘数;为0时,部分积为0。每次的部分积依次左移一位,将各部分积累起来,就得到了zui终结果。

(4)二进制数的除法运算

二进制数除法运算规则是:0÷0=0,0÷1=0(1÷0无意义),1÷1=1。

例:求(111101)2÷(1100)2的值。

解:             1  0  1

    1100√ 1  1  1  1  0  1

       -  1  1  0  0

                 1  1  0  1

             -  1  1  0  0

                          1

结果为:商为101,余数为1。

总结:在计算机内部,二进制的加法是基本运算,利用加法可以实现二进制数的减法、乘法和除法运算。在计算机的运算过程中,应用了“补码”进行运算。

2.二进制数的逻辑运算

在计算机中,除了能表示正负、大小的“数量数”以及相应的加、减、乘、除等基本算术运算外,还能表示事物逻辑判断,即“真”、“假”、“是”、“非”等“逻辑数”的运算。能表示这种数的变量称为逻辑变量。在逻辑运算中,都是用“1”或“0”来表示“真”或“假”,由此可见,逻辑运算是以二进制数为基础的。

计算机的逻辑运算区别于算术运算的主要特点是:逻辑运算是按位进行的,位与位之间不像加减运算那么有进位或借位的关系。

逻辑运算主要包括的运算有:逻辑加法(又称“或”运算)、逻辑乘法(又称“与”运算)和逻辑“非”运算。此外,还有“异或”运算。

(1)逻辑与运算(乘法运算)

逻辑与运算常用符号“×”、“∧”或“&”来表示。如果A、B、C为逻辑变量,则A和B的逻辑与可表示成A×B=C、A∧B=C或A&B=C,读作“A与B等于C”。一位二进制数的逻辑与运算规则如表1-2所示。

表1-2  与运算规则

A

B

A∧B(C)

0

0

0

0

1

0

1

0

0

1

1

1

 

由表1-2可知,逻辑与运算表示只有当参与运算的逻辑变量都取值为1时,其逻辑乘积才等于1,即一假必假,两真才真。

这种逻辑与运算在实际生活中有许多应用,例如,计算机的电源要想接通,必须把实验室的电源总闸、USP电源开关以及计算机机箱的电源开关都接通才行。这些开关是串在一起的,它们按照“与”逻辑接通。为了书写方便,逻辑与运算的符号可以略去不写(在不致混淆的情况下),即A×B=A∧B=AB。

例:设A=1110011,B=1010101,求A∧B。

解:

1   1  1  0  0  1  1

∧   1   0  1  0  1  0  1

     1   0  1  0  0  0  1

结果为:A∧B=1010001。

(2)逻辑或运算(加法运算)

逻辑或运算通常用符号“+”或“ ”来表示。如果A、B、C为逻辑变量,则A和B的逻辑或可表示成A+B=C或A B=C,读作“A或B等于C”。其运算规则如表1-3      所示。


表1-3  或运算规则

A

B

A V B(C)

0

0

0

0

1

1

1

0

1

1

1

1

 

由表1-3可知,逻辑或运算是:在给定的逻辑变量中,A或B只要有一个为1,其逻辑或的值为1;只有当两者都为0,逻辑或才为0。即一真必真,两假才假。

这种逻辑或运算在实际生活中有许多应用,例如,房间里有一盏灯,装了两个开关,这两个开关是并联的。显然,任何一个开关接通或两个开关同时接通,电灯都会亮。

例:设A=11001110,B=10011011,求A B。

解:      1  1  0  0  1  1  1  0

     +   1  0  0  1  1  0  1  1

          1  1  0  1  1  1  1  1

结果为:A B=11011111。

(3)逻辑非运算(逻辑否定、逻辑求反)

设A为逻辑变量,则A的逻辑非运算记作 。逻辑非运算的规则为:如果不是0,则惟一的可能性就是1;反之亦然。逻辑非运算的真值表如表1-4所示。

表1-4  非运算规则

A

0

1

1

0

例如,室内的电灯,不是亮,就是灭,只有两种可能性。

例:设A=111011001,B=110111101,求 、 。

解: =000100110, =001000010。

(4)逻辑异或运算(半加运算)

逻辑异或运算符为“ ”。如果A、B、C为逻辑变量,则A和B的逻辑异或可表示成A B=C,读作“A异或B等于C”。逻辑异或的运算规则如表1-5所示。

表1-5  逻辑异或的运算规则

A

B

A B(C)

0

0

0

0

1

1

1

0

1

1

1

0

由表1-5可知,在给定的两个逻辑变量中,只有两个逻辑变量取值相同,异或运算的结果就为0;只有相异时,结果才为1。即一样时为0,不一样才为1。

例:设A=11010011,B=10110111,求A B。

解:         1  1  0  1  0  0  1  1

           1  0  1  1  0  1  1  1

             0  1  1  0  0  1  0  0

结果为:A B=01100100。

当两个变量之间进行逻辑运算时,只在对应位之间按上述规律进行逻辑运算,不同位之间没有任何关系,当然,也就不存在算术运算中的进位或借位问题。



声明:本网站部分内容来源于网络,由本站编辑整理发布,仅用于学习交流,如涉及侵权请联系本站管理员进行删除或修改。

尚邦公考

微信号:dxgwyedu

让学员带着“?”来,带着“!”踏上成“公”之路

立即关注
友情链接