信息的表示与存储

1.4信息的表示与存储

计算机加工的对象是数据信息,而指挥计算机操作的是控制信息,因此计算机内部的信息可以分成二大类:

┌ 指令

┌ 控制信息 ─┤

│ └ 控制字

信息 ┤

│ ┌ 定点数

│ ┌ 数值信息 ─┤

└ 数据信息 ─┤ └ 浮点数

│ ┌ 字符数据

└ 非数值信息 ─┤

└ 逻辑数据

本节主要介绍数据信息,有关控制信息的细节请参考有关硬件书籍。

1.4.1计算机的数字系统

人们最熟悉十进制数系,但是,几乎所有的计算机采用的都是二进制数系,所有的外界信息在被转化为不同的二进制数后,计算机才能对其进行传送、存储和加工处理。当我们进行程序设计时,与二进制之间进行转换比较方便的八进制、十六进制系统表示法也经常使用。无论哪种数系,其共同之处都是进位记数制。

一般说来,如果数制只采用R个基本符号,则称为基R数制,R称为数制的 “基数”,而数制中每一固定位置对应的单位值称为 “权”。

进位记数制的编码符合“逢R进位”的规则,各位的权是以R为底的幂,一个数可按权展开成为多项式。例如,一个十进制数256.47可按权展开为:

256.47=2×102 +5×101 +6×100 +4×10-1 +7×10-2

对任意一个 R进制的数X,其值V(X)可表示为:

V(x)xiRxiRii

n1m

这里 m,n,为正整数,R

是第i位的权,在 X0 与 X-1 之间用小数点隔开。通常,数字 Xi 应满足下列条件:

0 ≤ Xi < R

换句话说,R进制中的数使用0~(R-1)个数字符号。

表1-1是我们需要熟悉的几种进位数制。

 2  C++语言程序设计

表 1-1 几种进位数制

其中,十六进制的数符 A~F 分别对应十进制的 10~15。

对于二进制来说,基数为2,每位的权是以2 为底的幂,遵循逢二进一原则,基本符号只有两个:0和1。下面是二进制数的例子:

1011.01

几乎所有的计算机都采用二进制的数系,采用二进制码表示信息,有如下几个优点: ① 易于物理实现

因为具有二种稳定状态的物理器件是很多的,如门电路的导通与截止,电压的高与低,而它们恰好对应表示1和0两个符号。假如采用十进制,要制造具有十种稳定状态的物理电路,那是非常困难的。

② 二进制数运算简单

数学推导证明,对R进制的算术求和、求积规则各有 R(R+1)/2 种。如采用 十进制,就有55种求和与求积的运算规则; 而二进制仅各有3种,因而简化了运算器等物理器件的设计。

③ 机器可靠性高

由于电压的高低,电流的有无等都是一种质的变化,两种状态分明。所以基2码的传递抗干扰能力强,鉴别信息的可靠性高。

④ 通用性强

基2码不仅成功地运用于数值信息编码(二进制),而且适用于各种非数值信息的数字化编码。特别是仅有的两个符号0和1正好与逻辑命题的两个值“真”与“假”相对应,从而为计算机实现逻辑运算和逻辑判断提供了方便。

虽然计算机内部均用基2码(0和1)来表示各种信息,但计算机与外部交往仍采用人们熟悉和便于阅读的形式,如十进制数据、文字显示以及图形描述等。其间的转换,则由计算机系统的硬件和软件来实现。

自然,基2码也有其不足之处,如它表示数的容量最小。表示同一个数,二进制较其他进制需要更多的位数。

1.4.2几种进位记数制之间的转换。

1.R 进制转换为十进制

基数为R的数字,只要将各位数字与它的权相乘,其积相加,和数就是十进制数。例如:

第1章 概 述

7 6 543 2 3  (11111111.11)2=1×2+ 1×2+1× 2 +1× 2 + 1× 2+ 1× 2 +1

10-1-2 × 2+ 1× 2 +1×2+1×2

=(255.75)10

3 2 1 0-1(3506.2)8=3×8+ 5×8+ 0×8+ 6×8 +2×8=(1862.25)10

(0.2A)16=2×16-1 +10×16-2=(0.1640625)10

从上面几个例子可以看到:当从R进制转换到十进制时,可以把小数点作为起点,分别向左右两边进行,即对其整数部分和小数部分分别转换。对于二进制来说;只要把数位是1的那些位的权值相加,其和就是等效的十进制数。因此,二—十进制转换是最简便的,同时也是最常用的一种。

2.十进制转换为R进制

将十进制数转换为基数为R的等效表示时,可将此数分成整数与小数两部分分别转换,然后再拼接起来即可。

①十进制整数转换成R进制的整数

十进制整数转换成R进制的整数,可用十进制数连续地除以R,其余数即为相应 R进制数的各位系数。此方法称之除R取余法。

我们知道,任何一个十进制整数N,都可以用一个R进制数来表示:

N=X0 +X1 R1 +X2 R2 +...+Xn-1 Rn-1

=X0 +(X1 +X2 R1 +...+Xn-1 Rn-2 )R

=X0 +Q1 R

由此可知,若用N除以R,则商为Q1 ,余数是X0。同理:

Q1 =X1 +Q2 R

Q1 再除以 R,则商为Q2 ,余数是X1。依此类推:

Qi =Xi +(Xi+1 +Xi+2 R1 +...+Xn-1 Rn-2-i )R

=Xi +Qi+1 R

Qi 除以 R,则商为Qi+1 ,余数是Xi

这样除下去,直到商为0时为止,每次除R的余数X0 ,X1 ,X2 ...Xn-1 即构成 R 进制数。例如,将十进制数68转化为二进制数,用除2取余法:

余 数

┄┄┄┄┄┄┄┄┄┄┄┄低位

┄┄┄┄┄┄┄┄┄┄┄ 0

┄┄┄┄┄┄┄┄┄┄┄ 1

┄┄┄┄┄┄┄┄┄┄ 0

┄┄┄┄┄┄┄┄┄┄ 0

┄┄┄┄┄┄┄┄┄ 0

0 ┄┄┄┄┄┄┄┄┄高位

所以 6810=10001002

将 16810 转换为八进制数,用除8取余法:

 4  C++语言程序设计

余 数 ┄┄┄┄┄┄┄┄┄┄┄低位

┄┄┄┄┄┄┄┄┄┄┄ 5

0 ┄┄┄┄┄┄┄┄┄┄┄高位

所以 16810 = 2508

②十进制小数转换成R进制小数

十进制小数转换成R进制数时,可连续地乘以R,得到的整数即组成R进制的数,此法称为 “乘 R 取整”。

我们可将某十进数小数用 R 进制数表示:

VXmX1X2X3R1R2R3Rm

XmX2X3R1R2Rm1

X3X4XmR1R2Rm2等式两边乘以 R 得到 VRX1X1F1X2F2X-1是整数部分,即R进制数小数点后第一位,F1是小数部分。小数部分再乘以R:: F1RX2

X-2 是整数部分,即R进制数小数点后第二位。

依次乘下去,直到小数部分为0,或达到所要求的精度为止(小数部分可能永不为0)。 例如:将0.312510 转换成二进制数:

高位

0.3125× 0.625 × 0.25 × 0.5 ×所以 0.312510 = 0.01012

需要注意的是,十进制小数常常不能准确地换算为等值的二进制小数(或其他R进制数),有换算误差存在。

若将十进制数 68.3125 转换成二进制数,可分别进行整数部分和小数部分的转换,然后再拼在一起:

68.312510=1000100.01012

3.二、八、十六进制的相互转换

二、八、十六进制三种进制的权值有内在的联系,即:每位八进制数相当于三位二进制数(23=8),每位十六进制数相当于四位二进制数(24)=16。下面我们结合实际例题来学习他们之间的转换。

第1章 概 述  5 

二进制数,从小数点开始,向左右分别按三(四)位为一个单元划分,每个单元单独转换成为一个八进制(十六进制)数,就完成了二进制到八、十六进制数的转换。在转换时,位组划分是以小数点为中心向左右两边延伸,中间的0不能省略,两头不够时可以补0。

八(十六)进制数的每一位,分别独立转换成三(四)位二进制数,除了左边最高位,其他位如果不足三(四)位的要用0来补足,按照由高位到低位的顺序写在一起,就是相应的二进制数。例如:

(1000100)2=(1 000 100 )2=(104)8

(1000100)2=(100 0100)2=(44)16

(1011010.10)2=(001 011 010 . 100)2=(132.4)8

(1011010.10)2=(0101 1010 . 1000)2=(5A.8)16

(F)16=(1111)2

(7)16=(0111)2

(F7)16=(1111 0111)2=(11110111)2

1.4.3信息的存储单位

在计算机内部,各种信息都是以二进制编码形式存储,因此这里有必要介绍一下信息存储的单位。

信息的单位通常采用“位”、“字节”、“字”。

·位(bit):度量数据的最小单位,表示一位二进制信息。

· 字节(byte):一个字节由八位二进制数字组成(1 byte = 8 bit)。字节是信息存储中 最常用的基本单位。

计算机的存储器(包括内存与外存)通常也是以多少字节来表示它的容量。常用的单位有:

K 字节 1 K = 1024 byte

M(兆)字节 1 M = 1024 K

G 字节 1 G = 1024 M

· 字(word):字是位的组合,并作为一个独立的信息单位处理。字又称为计算机字,它的含义取决于机器的类型、字长以及使用者的要求。常用的固定字长有8位、16位、32位等。

信息单位用来描述机器内部数据格式,即数据 (包括指令)在机器内的排列形式,如单字节数据,可变长数据(以字节为单位组成几种不同长度的数据格式)等。

·机器字长:在讨论信息单位时,还有一个与机器硬件指标有关的单位,这就是机器字长。机器字长一般是指参加运算的寄存器所含有的二进制数的位数,它代表了机器的精度。如32位,64位等。

1.4.4二进制数的编码表示

 6  C++语言程序设计

一个数在机内的表达形式称为“机器数”,而它代表的数值称为此机器数的“真值”。 前面已经提到,数值信息在计算机内是采用二进制编码表示。数有正、负之分,在计算机中如何表示符号呢? 一般情况下,用“0”表示正号,“1”表示负号,符号位放在数的最高位。

例如:8位二进制数A=(+1011011) B=(-1011011) 它们在机器中可以表示为: A: B:其中最左边一位代表符号位,连同数字本身一起作为一个数。

数值信息在计算机内采用符号数字化处理后,计算机便可以识别和表示数符了。为了改进符号数的运算方法和简化运算器的硬件结构,人们研究了符号数的多种二进制编码方法,其实质是对负数表示的不同编码。

下面我们就来介绍几种常用的编码──原码,反码和补码。

1.原码

将符号位数字化为 0 或 1,数的绝对值与符号一起编码,即所谓“符号──绝对值表示”的编码,称为原码。

首先介绍如何用原码表示一个带符号的整数。

如果我们用一个字节存放一个整数,其原码表示如下:

X=+0101011 [X]原 =00101011

X=-0101011 [X]原 =10101011

这里,“[X]原 ”就是机器数,X 称为机器数的真值。

而对于一个带符号的纯小数,它的原码表示就是把小数点左边一位用作符号位。 例如:X=0.1011 [X]原 =0.1011

X=-0.1011 [X]原 =1.1011

当采用原码表示法时,编码简单直观,与真值转换方便。但原码也存在一些问题: 一是零的表示不唯一,因为:

[+0]原 =000...0 [-0]原 =100...0

零有二义性,给机器判零带来麻烦。

二是用原码进行四则运算时,符号位需单独处理,且运算规则复杂。例如加法运算,若两数同号,两数相加,结果取共同的符号;若两数异号,则要由大数减去小数,结果冠以大数的符号。还要指出,借位操作如果用计算机硬件来实现是很困难的。正是原码的不足之处,促使人们去寻找更好的编码方法。

2.反码

反码很少使用,但作为一种编码方式和求补码的中间码,我们不妨先介绍一下。 正数的反码与原码表示相同。

负数的反码与原码有如下关系:

负数反码的符号位与原码相同(仍用1表示),其余各位取反(0变1,1变0)。例如:

X=+1100110 [X]原 =01100110 [X]反 =01100110

第1章 概 述  7 

X=-1100110 [X]原 =11100110 [X]反 =10011001

X=+0000000 [X]原 =00000000 [X]反 =00000000

X=-0000000 [X]原 =10000000 [X]反 =11111111

和原码一样,反码中零的表示也不唯一。

当X为纯小数时,反码表示如下:

X=0.1011 [X]原 =0.1011 [X]反 =0.1011

X=-0.1011 [X]原 =1.1011 [X]反 =1.0100

3.补码

⑴ 模数的概念

模数从物理意义上讲,是某种计量器的容量。例如,我们日常生活中用的钟表,模数就是12。钟表计时的方式是:达到12就从零开始(扔掉一个12),这在数学上是一种“取模(或取余)运算(mod)”。“%”是C++语言中求除法余数的算术运算符。例如:

14 % 12 = 2

如果现在的准确时间是 6 点整,而你的手表指向 8 点,怎样把表拨准呢? 可以有二种方法:把表往后拨 2 小时,或把表往前拨 10 小时,效果是一样的,即:

8-2=6

(8+10) mod 12 = 6

在模数系统中:

8-2=(8+10) mod 12

上式之所以成立,是因为 2 与 10 对模数 12 是互为补数的 (2+10=12)。

因此,我们可以认可这样一个结论:在模数系统中,一个数减去另一个数,或者说一个数加上一个负数,等于第一个数加上第二个数的补数:

8+(-2)=8+10 (在对12取模的情况下)

我们称10为-2在模12下的“补码”。负数采用补码表示后,可以使加减法统一为加法运算。

在计算机中,机器表示数据的字长是固定的。对于 n 位数来说,模数的大小是:n位数全为 1,且最末位再加 1。实际上模数的值已经超过了机器所能表示的数的范围,因此模数在机器中是表示不出来的(关于数的表示范围,将在1.4.6节中介绍)。若运算结果大于模数,则模数自动丢掉,也就等于实现了取模运算。

n如果有n位整数(包括一位符号位),则它的模数为 2 ,如果有n位小数,小数点

前一位为符号位,则它的模数为 2。

⑵ 补码表示法

由以上讨论得知,对一个二进制负数可用其模数与真值做加法(模减去该数的绝对值)求得其补码。

4例: X = -0110 [X]补 = 2 +(-0110)=1010

X = -0.1011 [X]补 = 2+(-0.1011)=1.0101

由于机器中不存在数的真值形式,用上述公式求补码在机器中不易实现,但从上式

 8  C++语言程序设计

可推导出一个简便方法。

对于一个负数,其补码由该数反码的最末位加 1 求得。

例:求 X = -1010101 的补码

[X]原 = 11010101

[X]反 = 10101010

[X]补 = 10101011

例:求 X = -0.1011 的补码

[X]原 = 1.1011 (求反码:保留符号位,其余各位求反)

[X]反 = 1.0100 (求补码:反码+0.0001)

[X]补 = 1.0101

对于正数来说,其原码、反码、补码形式相同。

补码的特点之一就是零的表示唯一: ┌─┐

[+0]补 = 0 0 ...0 [-0]补 = 1 1 ...1 + 1=│1 │ 0 0... 0

└───┘ └───┘ └┬┘└───┘

n 位 n 位 │ n 位

└───── 自动丢失

这种简便的求补码方法经常被简称为“求反加1”。本书不打算对此做推导和证明,读者也只要初步了解补码的表示方法,在学习后续章节时对内存中数据的存储形式不感到费解就可以了。

⑶ 补码运算规则

采用补码表示的另一个好处就是,当数值信息参与算术运算时,采用补码方式是最方便的。首先,符号位可作为数值参加运算,最后仍可得到正确的结果符号,符号无需单独处理;其次,采用补码进行运算时,减法运算可转换为加法运算,简化了硬件中的运算电路。

例:计算 67-10= ?

让我们看一下计算机中的运算过程(这里用下脚标的方式表明数的进制):

[+6710]原 = 010000112 [+6710]补 = [+6710]原

[-1010]原 = 100010102 [-1010]补 = 111101102

0 1 0 0 0 0 1 12 [+6710]补

+ 1 1 1 1 0 1 1 02 [-1010]补

────────────────────

1 0 0 1 1 1 0 0 12 = 5710

└───最高位的进位自然丢失

由于字长只有8位,因此加法最高位的进位自然丢失,达到了取模效果(即,丢掉一个模数)。

应当指出:补码运算的结果仍为补码。上例中,从结果符号位得知,结果为正,所以补码即为原码,转换成十进制数为57。

第1章 概 述  9 

如果结果为负,则是负数的补码形式,若要变成原码,需要对补码再求补,即可还原为原码。

例:10-67= ?

[+1010]原 = 000010102 = [+1010]补

[-6710]原 = 110000112 [-6710]补 = 101111012

0 0 0 0 1 0 1 02

+ 1 0 1 1 1 1 0 12

────────────

1 1 0 0 0 1 1 12

[结果]补 = 110001112 [结果]原 = 101110012

所以结果的真值为-0111001,十进制为-57。

用上面两个例子是否就可以说明,补码运算的结果总是正确的呢?下面再看一个例子:

例:8510 + 4410 = ?

0 1 0 1 0 1 0 12

+ 0 0 1 0 1 1 0 02

────────────

1 0 0 0 0 0 0 12

从结果的符号位可以看出,结果是一负数。但两个正数相加不可能是负数,问题出在什么地方呢? 原来这是由于“溢出”造成的,即结果超出了一定位数的二进制数所能表示的数的范围(关于数的表示范围,将在1.4.6节中介绍)。

1.4.5定点数和浮点数

数值数据既有正、负之分,又有整数和小数之分,本节要介绍小数点如何处理。在计算机中通常都采用浮点方式表示小数,下面我们就来介绍数的浮点表示法。

一个数 N 用浮点形式表示(即科学表示法),可以写成:

E N=M×R

其中R表示基数,一旦机器定义好了基数值,就不能再改变了。因此基数在数据中不出现,是隐含的。在人工计算中,一般采用十进制,10就是基数。在计算机中一般用二进制,因此以2为基数。

E表示R的幂,称为数N的阶码。阶码确定了数N的小数点的位置,其位数反映了该浮点数所表示的数的范围。

M表示数N的全部有效数字,称为数N的尾数。其位数反映了数据的精度。

阶码和尾数都是带符号的数,可以采用不同的码制表示法,例如尾数常用原码或补码表示,阶码多用补码表示。

浮点数的具体格式随不同机器而有所区别。例如,假设有一台16位机,其二进制浮点数组成为阶码4位,尾数12位,则浮点数格式如下:

 10  C++语言程序设计

15 14 12 11 10 0

下面是一个实际的例子,其中阶码,尾数分别用补码和原码表示

10……………表示 (-0.11×10)2

-11……………表示 (0.11×10)2

1.4.6数的表示范围

机器中数的表示范围与数据位数及表示方法有关。一个M位整数(包括一位符号位),

m-1m-1如果采用原码或反码表示法,能表示的最大数为2 -1,最小数为-(2 -1)。若用补

m-1m-1码表示,能表示的最大数值为2 -1,最小数为-2 。

这里要说明一点,由于补码中的“0”的表示是唯一的,故[X]补=100……0,对应的

m-1真值X=-2 ,从而使补码的表示范围与原码有一点差异。(注意:补码100……0的形

m-1式是一个特殊的情况,权为2 位的1既代表符号又表示数值)。对补码的表示范围,

本书不做证明,读者如果感兴趣,可以自行验证一下。

例如,设M=8,则原码表示范围为-127~+127,反码的表示范围也是-127~+127。 补码的表示范围是-128~+127。

一个n位定点小数,小数点左边一位表示数的符号,采用原码或反码表示时,表数

-n-n-n范围为-(1-2 )~(1-2 )。采用补码表示时,表数范围为-1 ~(1-2 )。

至于浮点数的表示范围,则由阶码位数和尾数位数决定。

若阶码用r位整数(补码)表示,尾数用n位定点小数(原码)表示,则浮点数范围是: 为了扩大数的表示范围,应该增加阶码的位数,每加一位,数的表示范围就扩大一

-(1-2-n )2(2r-1-1)-1 ~ (1-2-n )2(2r-1 -1)

倍。而要增加精度,就需要增加尾数的位数,在定长机器字中,阶码位数和尾数位数的比例要适当。但为了同时满足对数的范围和精度的要求,往往采用双倍字长甚至更多个字长来表示一个浮点数。

1.4.7非数值信息的表示

在计算机内部,非数值信息也是采用“0”和“1”两个符号来进行编码表示的。下面我们着重介绍一下中、西文的编码方案。

西文字符的最流行编码方案是“美国信息交换标准代码”,简称ASCII码。包括了10个数字,大小写英文字母和专用字符共95种可打印字符和33个控制字符。ASCII码

7用一个字节中的七位二进制数来表示一个字符,最多可以表示2=128个字符。

第1章 概 述  11 

由于ASCII采用七位编码,所以没有用到字节的最高位。而很多系统就利用这一位作为校验码,以便提高字符信息传输的可靠性。

除了常用的ASCII编码外,用于表示字符的还有另一种EBCDIC码,即Extended Binary Coded Decimal Interchange Code (扩展的二—十进制交换码),采用8位二进制表示,有256个编码状态。

汉字在计算机内如何表示呢?自然,也只能采用二进制的数字化信息编码。

汉字的数量大,常用的也有几千个之多,显然用一个字节(八位编码)是不够的。目前的汉字编码方案有二字节、三字节甚至四字节的。应用较为广泛的是“国家标准信息交换用汉字编码”(GB2312-80标准),简称国标码。

国际码是二字节码,用二个七位二进制数编码表示一个汉字。

在计算机内部,汉字编码和西文编码是共存的,如何区分它们是个很重要的问题,因为对不同的信息有不同的处理方式。

方法之一是:对于二字节的国标码,将二个字节的最高位都置成“1”,而ASCII码所用字节最高位保持“0”,然后由软件(或硬件)根据字节最高位来作出判断。

1.5程序的开发过程

在学习编程之前,我们首先来简单了解一下程序的开发过程及基本术语,在后续章节的学习和以后的编程实践中,读者将对这些有不断深入的理解。

1.5.1基本术语

源程序:用源语言写的、有待翻译的程序,称为“源程序”。源语言可以是汇编语言,也可以是高级程序设计语言(比如C++语言),用它们写出的程序都是源程序。

目标程序:是源程序通过翻译加工以后所生成的程序。目标程序可以用机器语言表示(因此也称之为“目标代码”),也可以用汇编语言或其它中间语言表示。

翻译程序:是指用来将源程序翻译为目标程序的程序。对翻译程序来说,源程序是它的输入数据,而目标程序则是其输出结果。

翻译程序有三种不同类型:汇编程序、编译程序,解释程序。

汇编程序:其任务是把用汇编语言写成的源程序,翻译成机器语言形式的目标程序。所以,用汇编语言编写的源程序先要经过汇编程序的加工,变为等价的目标代码。

编译程序:若源程序是用高级程序设计语言所写,经翻译程序加工生成目标程序,那么,该翻译程序就称为“编译程序”。所以,高级语言编写的源程序要上机执行,通常首先要经编译程序加工成为机器语言表示的目标程序。若目标程序是用汇编语言表示,则还要经过一次汇编程序的加工。

解释程序:这也是一种翻译程序,同样是将高级语言源程序翻译成机器指令。它与编译程序不同点就在于:它是边翻译边执行的,即输入一句、翻译一句、执行一句,直至将整个源程序翻译并执行完毕。解释程序不产生整个的目标程序,对源程序中要重复执行的语句(例如循环体中的语句)需要重复地解释执行,因此较之编译方式要多花费

 12  C++语言程序设计

执行时间,效率较低。

1.5.2程序的开发过程

C++程序的开发通常要经过编辑、编译、连接、运行调试这几个步骤。编辑是将源程序输入到计算机中,生成后缀为.cpp的磁盘文件。编译是将程序的源代码转换为机器语言代码。但是编译后的程序还不能由计算机执行,还需要连接。连接是将多个目标文件以及库中的某些文件连在一起,生成一个后缀为.exe的可执行文件。最后,还要对程序进行运行调试。

在编译和连接时,都会对程序中的错误进行检查,并将查出的错误显示在屏幕上。编译阶段查出的错误是语法错,连接时查出的错误称连接错。

图1- 1是C++程序的开发过程。

图1- 1 C++程序的开发过程

1.4信息的表示与存储

计算机加工的对象是数据信息,而指挥计算机操作的是控制信息,因此计算机内部的信息可以分成二大类:

┌ 指令

┌ 控制信息 ─┤

│ └ 控制字

信息 ┤

│ ┌ 定点数

│ ┌ 数值信息 ─┤

└ 数据信息 ─┤ └ 浮点数

│ ┌ 字符数据

└ 非数值信息 ─┤

└ 逻辑数据

本节主要介绍数据信息,有关控制信息的细节请参考有关硬件书籍。

1.4.1计算机的数字系统

人们最熟悉十进制数系,但是,几乎所有的计算机采用的都是二进制数系,所有的外界信息在被转化为不同的二进制数后,计算机才能对其进行传送、存储和加工处理。当我们进行程序设计时,与二进制之间进行转换比较方便的八进制、十六进制系统表示法也经常使用。无论哪种数系,其共同之处都是进位记数制。

一般说来,如果数制只采用R个基本符号,则称为基R数制,R称为数制的 “基数”,而数制中每一固定位置对应的单位值称为 “权”。

进位记数制的编码符合“逢R进位”的规则,各位的权是以R为底的幂,一个数可按权展开成为多项式。例如,一个十进制数256.47可按权展开为:

256.47=2×102 +5×101 +6×100 +4×10-1 +7×10-2

对任意一个 R进制的数X,其值V(X)可表示为:

V(x)xiRxiRii

n1m

这里 m,n,为正整数,R

是第i位的权,在 X0 与 X-1 之间用小数点隔开。通常,数字 Xi 应满足下列条件:

0 ≤ Xi < R

换句话说,R进制中的数使用0~(R-1)个数字符号。

表1-1是我们需要熟悉的几种进位数制。

 2  C++语言程序设计

表 1-1 几种进位数制

其中,十六进制的数符 A~F 分别对应十进制的 10~15。

对于二进制来说,基数为2,每位的权是以2 为底的幂,遵循逢二进一原则,基本符号只有两个:0和1。下面是二进制数的例子:

1011.01

几乎所有的计算机都采用二进制的数系,采用二进制码表示信息,有如下几个优点: ① 易于物理实现

因为具有二种稳定状态的物理器件是很多的,如门电路的导通与截止,电压的高与低,而它们恰好对应表示1和0两个符号。假如采用十进制,要制造具有十种稳定状态的物理电路,那是非常困难的。

② 二进制数运算简单

数学推导证明,对R进制的算术求和、求积规则各有 R(R+1)/2 种。如采用 十进制,就有55种求和与求积的运算规则; 而二进制仅各有3种,因而简化了运算器等物理器件的设计。

③ 机器可靠性高

由于电压的高低,电流的有无等都是一种质的变化,两种状态分明。所以基2码的传递抗干扰能力强,鉴别信息的可靠性高。

④ 通用性强

基2码不仅成功地运用于数值信息编码(二进制),而且适用于各种非数值信息的数字化编码。特别是仅有的两个符号0和1正好与逻辑命题的两个值“真”与“假”相对应,从而为计算机实现逻辑运算和逻辑判断提供了方便。

虽然计算机内部均用基2码(0和1)来表示各种信息,但计算机与外部交往仍采用人们熟悉和便于阅读的形式,如十进制数据、文字显示以及图形描述等。其间的转换,则由计算机系统的硬件和软件来实现。

自然,基2码也有其不足之处,如它表示数的容量最小。表示同一个数,二进制较其他进制需要更多的位数。

1.4.2几种进位记数制之间的转换。

1.R 进制转换为十进制

基数为R的数字,只要将各位数字与它的权相乘,其积相加,和数就是十进制数。例如:

第1章 概 述

7 6 543 2 3  (11111111.11)2=1×2+ 1×2+1× 2 +1× 2 + 1× 2+ 1× 2 +1

10-1-2 × 2+ 1× 2 +1×2+1×2

=(255.75)10

3 2 1 0-1(3506.2)8=3×8+ 5×8+ 0×8+ 6×8 +2×8=(1862.25)10

(0.2A)16=2×16-1 +10×16-2=(0.1640625)10

从上面几个例子可以看到:当从R进制转换到十进制时,可以把小数点作为起点,分别向左右两边进行,即对其整数部分和小数部分分别转换。对于二进制来说;只要把数位是1的那些位的权值相加,其和就是等效的十进制数。因此,二—十进制转换是最简便的,同时也是最常用的一种。

2.十进制转换为R进制

将十进制数转换为基数为R的等效表示时,可将此数分成整数与小数两部分分别转换,然后再拼接起来即可。

①十进制整数转换成R进制的整数

十进制整数转换成R进制的整数,可用十进制数连续地除以R,其余数即为相应 R进制数的各位系数。此方法称之除R取余法。

我们知道,任何一个十进制整数N,都可以用一个R进制数来表示:

N=X0 +X1 R1 +X2 R2 +...+Xn-1 Rn-1

=X0 +(X1 +X2 R1 +...+Xn-1 Rn-2 )R

=X0 +Q1 R

由此可知,若用N除以R,则商为Q1 ,余数是X0。同理:

Q1 =X1 +Q2 R

Q1 再除以 R,则商为Q2 ,余数是X1。依此类推:

Qi =Xi +(Xi+1 +Xi+2 R1 +...+Xn-1 Rn-2-i )R

=Xi +Qi+1 R

Qi 除以 R,则商为Qi+1 ,余数是Xi

这样除下去,直到商为0时为止,每次除R的余数X0 ,X1 ,X2 ...Xn-1 即构成 R 进制数。例如,将十进制数68转化为二进制数,用除2取余法:

余 数

┄┄┄┄┄┄┄┄┄┄┄┄低位

┄┄┄┄┄┄┄┄┄┄┄ 0

┄┄┄┄┄┄┄┄┄┄┄ 1

┄┄┄┄┄┄┄┄┄┄ 0

┄┄┄┄┄┄┄┄┄┄ 0

┄┄┄┄┄┄┄┄┄ 0

0 ┄┄┄┄┄┄┄┄┄高位

所以 6810=10001002

将 16810 转换为八进制数,用除8取余法:

 4  C++语言程序设计

余 数 ┄┄┄┄┄┄┄┄┄┄┄低位

┄┄┄┄┄┄┄┄┄┄┄ 5

0 ┄┄┄┄┄┄┄┄┄┄┄高位

所以 16810 = 2508

②十进制小数转换成R进制小数

十进制小数转换成R进制数时,可连续地乘以R,得到的整数即组成R进制的数,此法称为 “乘 R 取整”。

我们可将某十进数小数用 R 进制数表示:

VXmX1X2X3R1R2R3Rm

XmX2X3R1R2Rm1

X3X4XmR1R2Rm2等式两边乘以 R 得到 VRX1X1F1X2F2X-1是整数部分,即R进制数小数点后第一位,F1是小数部分。小数部分再乘以R:: F1RX2

X-2 是整数部分,即R进制数小数点后第二位。

依次乘下去,直到小数部分为0,或达到所要求的精度为止(小数部分可能永不为0)。 例如:将0.312510 转换成二进制数:

高位

0.3125× 0.625 × 0.25 × 0.5 ×所以 0.312510 = 0.01012

需要注意的是,十进制小数常常不能准确地换算为等值的二进制小数(或其他R进制数),有换算误差存在。

若将十进制数 68.3125 转换成二进制数,可分别进行整数部分和小数部分的转换,然后再拼在一起:

68.312510=1000100.01012

3.二、八、十六进制的相互转换

二、八、十六进制三种进制的权值有内在的联系,即:每位八进制数相当于三位二进制数(23=8),每位十六进制数相当于四位二进制数(24)=16。下面我们结合实际例题来学习他们之间的转换。

第1章 概 述  5 

二进制数,从小数点开始,向左右分别按三(四)位为一个单元划分,每个单元单独转换成为一个八进制(十六进制)数,就完成了二进制到八、十六进制数的转换。在转换时,位组划分是以小数点为中心向左右两边延伸,中间的0不能省略,两头不够时可以补0。

八(十六)进制数的每一位,分别独立转换成三(四)位二进制数,除了左边最高位,其他位如果不足三(四)位的要用0来补足,按照由高位到低位的顺序写在一起,就是相应的二进制数。例如:

(1000100)2=(1 000 100 )2=(104)8

(1000100)2=(100 0100)2=(44)16

(1011010.10)2=(001 011 010 . 100)2=(132.4)8

(1011010.10)2=(0101 1010 . 1000)2=(5A.8)16

(F)16=(1111)2

(7)16=(0111)2

(F7)16=(1111 0111)2=(11110111)2

1.4.3信息的存储单位

在计算机内部,各种信息都是以二进制编码形式存储,因此这里有必要介绍一下信息存储的单位。

信息的单位通常采用“位”、“字节”、“字”。

·位(bit):度量数据的最小单位,表示一位二进制信息。

· 字节(byte):一个字节由八位二进制数字组成(1 byte = 8 bit)。字节是信息存储中 最常用的基本单位。

计算机的存储器(包括内存与外存)通常也是以多少字节来表示它的容量。常用的单位有:

K 字节 1 K = 1024 byte

M(兆)字节 1 M = 1024 K

G 字节 1 G = 1024 M

· 字(word):字是位的组合,并作为一个独立的信息单位处理。字又称为计算机字,它的含义取决于机器的类型、字长以及使用者的要求。常用的固定字长有8位、16位、32位等。

信息单位用来描述机器内部数据格式,即数据 (包括指令)在机器内的排列形式,如单字节数据,可变长数据(以字节为单位组成几种不同长度的数据格式)等。

·机器字长:在讨论信息单位时,还有一个与机器硬件指标有关的单位,这就是机器字长。机器字长一般是指参加运算的寄存器所含有的二进制数的位数,它代表了机器的精度。如32位,64位等。

1.4.4二进制数的编码表示

 6  C++语言程序设计

一个数在机内的表达形式称为“机器数”,而它代表的数值称为此机器数的“真值”。 前面已经提到,数值信息在计算机内是采用二进制编码表示。数有正、负之分,在计算机中如何表示符号呢? 一般情况下,用“0”表示正号,“1”表示负号,符号位放在数的最高位。

例如:8位二进制数A=(+1011011) B=(-1011011) 它们在机器中可以表示为: A: B:其中最左边一位代表符号位,连同数字本身一起作为一个数。

数值信息在计算机内采用符号数字化处理后,计算机便可以识别和表示数符了。为了改进符号数的运算方法和简化运算器的硬件结构,人们研究了符号数的多种二进制编码方法,其实质是对负数表示的不同编码。

下面我们就来介绍几种常用的编码──原码,反码和补码。

1.原码

将符号位数字化为 0 或 1,数的绝对值与符号一起编码,即所谓“符号──绝对值表示”的编码,称为原码。

首先介绍如何用原码表示一个带符号的整数。

如果我们用一个字节存放一个整数,其原码表示如下:

X=+0101011 [X]原 =00101011

X=-0101011 [X]原 =10101011

这里,“[X]原 ”就是机器数,X 称为机器数的真值。

而对于一个带符号的纯小数,它的原码表示就是把小数点左边一位用作符号位。 例如:X=0.1011 [X]原 =0.1011

X=-0.1011 [X]原 =1.1011

当采用原码表示法时,编码简单直观,与真值转换方便。但原码也存在一些问题: 一是零的表示不唯一,因为:

[+0]原 =000...0 [-0]原 =100...0

零有二义性,给机器判零带来麻烦。

二是用原码进行四则运算时,符号位需单独处理,且运算规则复杂。例如加法运算,若两数同号,两数相加,结果取共同的符号;若两数异号,则要由大数减去小数,结果冠以大数的符号。还要指出,借位操作如果用计算机硬件来实现是很困难的。正是原码的不足之处,促使人们去寻找更好的编码方法。

2.反码

反码很少使用,但作为一种编码方式和求补码的中间码,我们不妨先介绍一下。 正数的反码与原码表示相同。

负数的反码与原码有如下关系:

负数反码的符号位与原码相同(仍用1表示),其余各位取反(0变1,1变0)。例如:

X=+1100110 [X]原 =01100110 [X]反 =01100110

第1章 概 述  7 

X=-1100110 [X]原 =11100110 [X]反 =10011001

X=+0000000 [X]原 =00000000 [X]反 =00000000

X=-0000000 [X]原 =10000000 [X]反 =11111111

和原码一样,反码中零的表示也不唯一。

当X为纯小数时,反码表示如下:

X=0.1011 [X]原 =0.1011 [X]反 =0.1011

X=-0.1011 [X]原 =1.1011 [X]反 =1.0100

3.补码

⑴ 模数的概念

模数从物理意义上讲,是某种计量器的容量。例如,我们日常生活中用的钟表,模数就是12。钟表计时的方式是:达到12就从零开始(扔掉一个12),这在数学上是一种“取模(或取余)运算(mod)”。“%”是C++语言中求除法余数的算术运算符。例如:

14 % 12 = 2

如果现在的准确时间是 6 点整,而你的手表指向 8 点,怎样把表拨准呢? 可以有二种方法:把表往后拨 2 小时,或把表往前拨 10 小时,效果是一样的,即:

8-2=6

(8+10) mod 12 = 6

在模数系统中:

8-2=(8+10) mod 12

上式之所以成立,是因为 2 与 10 对模数 12 是互为补数的 (2+10=12)。

因此,我们可以认可这样一个结论:在模数系统中,一个数减去另一个数,或者说一个数加上一个负数,等于第一个数加上第二个数的补数:

8+(-2)=8+10 (在对12取模的情况下)

我们称10为-2在模12下的“补码”。负数采用补码表示后,可以使加减法统一为加法运算。

在计算机中,机器表示数据的字长是固定的。对于 n 位数来说,模数的大小是:n位数全为 1,且最末位再加 1。实际上模数的值已经超过了机器所能表示的数的范围,因此模数在机器中是表示不出来的(关于数的表示范围,将在1.4.6节中介绍)。若运算结果大于模数,则模数自动丢掉,也就等于实现了取模运算。

n如果有n位整数(包括一位符号位),则它的模数为 2 ,如果有n位小数,小数点

前一位为符号位,则它的模数为 2。

⑵ 补码表示法

由以上讨论得知,对一个二进制负数可用其模数与真值做加法(模减去该数的绝对值)求得其补码。

4例: X = -0110 [X]补 = 2 +(-0110)=1010

X = -0.1011 [X]补 = 2+(-0.1011)=1.0101

由于机器中不存在数的真值形式,用上述公式求补码在机器中不易实现,但从上式

 8  C++语言程序设计

可推导出一个简便方法。

对于一个负数,其补码由该数反码的最末位加 1 求得。

例:求 X = -1010101 的补码

[X]原 = 11010101

[X]反 = 10101010

[X]补 = 10101011

例:求 X = -0.1011 的补码

[X]原 = 1.1011 (求反码:保留符号位,其余各位求反)

[X]反 = 1.0100 (求补码:反码+0.0001)

[X]补 = 1.0101

对于正数来说,其原码、反码、补码形式相同。

补码的特点之一就是零的表示唯一: ┌─┐

[+0]补 = 0 0 ...0 [-0]补 = 1 1 ...1 + 1=│1 │ 0 0... 0

└───┘ └───┘ └┬┘└───┘

n 位 n 位 │ n 位

└───── 自动丢失

这种简便的求补码方法经常被简称为“求反加1”。本书不打算对此做推导和证明,读者也只要初步了解补码的表示方法,在学习后续章节时对内存中数据的存储形式不感到费解就可以了。

⑶ 补码运算规则

采用补码表示的另一个好处就是,当数值信息参与算术运算时,采用补码方式是最方便的。首先,符号位可作为数值参加运算,最后仍可得到正确的结果符号,符号无需单独处理;其次,采用补码进行运算时,减法运算可转换为加法运算,简化了硬件中的运算电路。

例:计算 67-10= ?

让我们看一下计算机中的运算过程(这里用下脚标的方式表明数的进制):

[+6710]原 = 010000112 [+6710]补 = [+6710]原

[-1010]原 = 100010102 [-1010]补 = 111101102

0 1 0 0 0 0 1 12 [+6710]补

+ 1 1 1 1 0 1 1 02 [-1010]补

────────────────────

1 0 0 1 1 1 0 0 12 = 5710

└───最高位的进位自然丢失

由于字长只有8位,因此加法最高位的进位自然丢失,达到了取模效果(即,丢掉一个模数)。

应当指出:补码运算的结果仍为补码。上例中,从结果符号位得知,结果为正,所以补码即为原码,转换成十进制数为57。

第1章 概 述  9 

如果结果为负,则是负数的补码形式,若要变成原码,需要对补码再求补,即可还原为原码。

例:10-67= ?

[+1010]原 = 000010102 = [+1010]补

[-6710]原 = 110000112 [-6710]补 = 101111012

0 0 0 0 1 0 1 02

+ 1 0 1 1 1 1 0 12

────────────

1 1 0 0 0 1 1 12

[结果]补 = 110001112 [结果]原 = 101110012

所以结果的真值为-0111001,十进制为-57。

用上面两个例子是否就可以说明,补码运算的结果总是正确的呢?下面再看一个例子:

例:8510 + 4410 = ?

0 1 0 1 0 1 0 12

+ 0 0 1 0 1 1 0 02

────────────

1 0 0 0 0 0 0 12

从结果的符号位可以看出,结果是一负数。但两个正数相加不可能是负数,问题出在什么地方呢? 原来这是由于“溢出”造成的,即结果超出了一定位数的二进制数所能表示的数的范围(关于数的表示范围,将在1.4.6节中介绍)。

1.4.5定点数和浮点数

数值数据既有正、负之分,又有整数和小数之分,本节要介绍小数点如何处理。在计算机中通常都采用浮点方式表示小数,下面我们就来介绍数的浮点表示法。

一个数 N 用浮点形式表示(即科学表示法),可以写成:

E N=M×R

其中R表示基数,一旦机器定义好了基数值,就不能再改变了。因此基数在数据中不出现,是隐含的。在人工计算中,一般采用十进制,10就是基数。在计算机中一般用二进制,因此以2为基数。

E表示R的幂,称为数N的阶码。阶码确定了数N的小数点的位置,其位数反映了该浮点数所表示的数的范围。

M表示数N的全部有效数字,称为数N的尾数。其位数反映了数据的精度。

阶码和尾数都是带符号的数,可以采用不同的码制表示法,例如尾数常用原码或补码表示,阶码多用补码表示。

浮点数的具体格式随不同机器而有所区别。例如,假设有一台16位机,其二进制浮点数组成为阶码4位,尾数12位,则浮点数格式如下:

 10  C++语言程序设计

15 14 12 11 10 0

下面是一个实际的例子,其中阶码,尾数分别用补码和原码表示

10……………表示 (-0.11×10)2

-11……………表示 (0.11×10)2

1.4.6数的表示范围

机器中数的表示范围与数据位数及表示方法有关。一个M位整数(包括一位符号位),

m-1m-1如果采用原码或反码表示法,能表示的最大数为2 -1,最小数为-(2 -1)。若用补

m-1m-1码表示,能表示的最大数值为2 -1,最小数为-2 。

这里要说明一点,由于补码中的“0”的表示是唯一的,故[X]补=100……0,对应的

m-1真值X=-2 ,从而使补码的表示范围与原码有一点差异。(注意:补码100……0的形

m-1式是一个特殊的情况,权为2 位的1既代表符号又表示数值)。对补码的表示范围,

本书不做证明,读者如果感兴趣,可以自行验证一下。

例如,设M=8,则原码表示范围为-127~+127,反码的表示范围也是-127~+127。 补码的表示范围是-128~+127。

一个n位定点小数,小数点左边一位表示数的符号,采用原码或反码表示时,表数

-n-n-n范围为-(1-2 )~(1-2 )。采用补码表示时,表数范围为-1 ~(1-2 )。

至于浮点数的表示范围,则由阶码位数和尾数位数决定。

若阶码用r位整数(补码)表示,尾数用n位定点小数(原码)表示,则浮点数范围是: 为了扩大数的表示范围,应该增加阶码的位数,每加一位,数的表示范围就扩大一

-(1-2-n )2(2r-1-1)-1 ~ (1-2-n )2(2r-1 -1)

倍。而要增加精度,就需要增加尾数的位数,在定长机器字中,阶码位数和尾数位数的比例要适当。但为了同时满足对数的范围和精度的要求,往往采用双倍字长甚至更多个字长来表示一个浮点数。

1.4.7非数值信息的表示

在计算机内部,非数值信息也是采用“0”和“1”两个符号来进行编码表示的。下面我们着重介绍一下中、西文的编码方案。

西文字符的最流行编码方案是“美国信息交换标准代码”,简称ASCII码。包括了10个数字,大小写英文字母和专用字符共95种可打印字符和33个控制字符。ASCII码

7用一个字节中的七位二进制数来表示一个字符,最多可以表示2=128个字符。

第1章 概 述  11 

由于ASCII采用七位编码,所以没有用到字节的最高位。而很多系统就利用这一位作为校验码,以便提高字符信息传输的可靠性。

除了常用的ASCII编码外,用于表示字符的还有另一种EBCDIC码,即Extended Binary Coded Decimal Interchange Code (扩展的二—十进制交换码),采用8位二进制表示,有256个编码状态。

汉字在计算机内如何表示呢?自然,也只能采用二进制的数字化信息编码。

汉字的数量大,常用的也有几千个之多,显然用一个字节(八位编码)是不够的。目前的汉字编码方案有二字节、三字节甚至四字节的。应用较为广泛的是“国家标准信息交换用汉字编码”(GB2312-80标准),简称国标码。

国际码是二字节码,用二个七位二进制数编码表示一个汉字。

在计算机内部,汉字编码和西文编码是共存的,如何区分它们是个很重要的问题,因为对不同的信息有不同的处理方式。

方法之一是:对于二字节的国标码,将二个字节的最高位都置成“1”,而ASCII码所用字节最高位保持“0”,然后由软件(或硬件)根据字节最高位来作出判断。

1.5程序的开发过程

在学习编程之前,我们首先来简单了解一下程序的开发过程及基本术语,在后续章节的学习和以后的编程实践中,读者将对这些有不断深入的理解。

1.5.1基本术语

源程序:用源语言写的、有待翻译的程序,称为“源程序”。源语言可以是汇编语言,也可以是高级程序设计语言(比如C++语言),用它们写出的程序都是源程序。

目标程序:是源程序通过翻译加工以后所生成的程序。目标程序可以用机器语言表示(因此也称之为“目标代码”),也可以用汇编语言或其它中间语言表示。

翻译程序:是指用来将源程序翻译为目标程序的程序。对翻译程序来说,源程序是它的输入数据,而目标程序则是其输出结果。

翻译程序有三种不同类型:汇编程序、编译程序,解释程序。

汇编程序:其任务是把用汇编语言写成的源程序,翻译成机器语言形式的目标程序。所以,用汇编语言编写的源程序先要经过汇编程序的加工,变为等价的目标代码。

编译程序:若源程序是用高级程序设计语言所写,经翻译程序加工生成目标程序,那么,该翻译程序就称为“编译程序”。所以,高级语言编写的源程序要上机执行,通常首先要经编译程序加工成为机器语言表示的目标程序。若目标程序是用汇编语言表示,则还要经过一次汇编程序的加工。

解释程序:这也是一种翻译程序,同样是将高级语言源程序翻译成机器指令。它与编译程序不同点就在于:它是边翻译边执行的,即输入一句、翻译一句、执行一句,直至将整个源程序翻译并执行完毕。解释程序不产生整个的目标程序,对源程序中要重复执行的语句(例如循环体中的语句)需要重复地解释执行,因此较之编译方式要多花费

 12  C++语言程序设计

执行时间,效率较低。

1.5.2程序的开发过程

C++程序的开发通常要经过编辑、编译、连接、运行调试这几个步骤。编辑是将源程序输入到计算机中,生成后缀为.cpp的磁盘文件。编译是将程序的源代码转换为机器语言代码。但是编译后的程序还不能由计算机执行,还需要连接。连接是将多个目标文件以及库中的某些文件连在一起,生成一个后缀为.exe的可执行文件。最后,还要对程序进行运行调试。

在编译和连接时,都会对程序中的错误进行检查,并将查出的错误显示在屏幕上。编译阶段查出的错误是语法错,连接时查出的错误称连接错。

图1- 1是C++程序的开发过程。

图1- 1 C++程序的开发过程


相关文章

  • 信息科技知识宝典
  • 信息科技知识宝典 信息与信息技术 信息是消息中有用的内容,信息论创始人香农认为:"信息是能够用来消除不确定性的东西", 信息的主要特征:传载性.共享性.可处理性和时效性等. 信息与物质.能源共同构成了人类社会赖以生存和发 ...查看


  • 理论知识点整理-大学计算机信息技术教程
  • 第1章 信息技术概述 1.1 信息与信息技术 信息 ● 信息的含义:从客观事物立场看,信息是事物运动的状态及状态变化的方式: 从认识主体立场看,信息是认识主体所感知或所表述的事物运动及变化方 式的形式.内容和效用. ● 信息与物质和能量同样 ...查看


  • 数据结构图的建立与输出课程设计
  • 计算机工程学院 数据结构课程 设计报告 题 目: 图的建立与输出 姓 名: 学 号: 专业班级: 指导教师: 设计时间: 目录 1 课题任务与计划„„„„„„„„„„„„„„„3 2 设计方案及原理„„„„„„„„„„„„„„„3 2.1 ...查看


  • 信息技术与计算机文化
  • 第一章 信息技术与计算机文化 1.1 信息与信息技术 1.1.1 信息与数据 所谓数据,是指存储在某种媒体上可以加以鉴别的符号资料.这里所说的符号,不仅指文字.字母.数字,还包括了图形.图像.音频与视频等多媒体数据.由于描述事物的属性必须借 ...查看


  • 第一章计算机基础理论答案
  • 计算机基础知识练习题 一.单选题: 1.计算机的应用领域是(D ). A. 人工自能 B. 过程控制 C. 信息处理 D. 数值计算 2.第二代计算机的主要电子逻辑元件是(B ). A. 电子管 B. 晶体管 C. 集成电路 D. 运算器 ...查看


  • (计算机原理会考试题库)
  • <计算机组成与工作原理>试题库 教材 <计算机组成与工作原理> 电子工业出版社 刘晓川 主编 一.选择题 [0102A] 1.计算机直接存储器存取传送方式就是( ). A .程序查询方式 B.中断处理方式 C .DM ...查看


  • 计算机硬件第三章习题
  • 1. 名词解释 随机存储器:random access memory,存储单元的内容可按需随意取出或存入,且存取的速度与存储单元的位置无关的存储器.掉电后信息会消失. 只读存储器:random only memory,只能读出事先所存数据的 ...查看


  • 计算机应用基础知识试题带答案.
  • 计算机基础知识试题(答案及详细解释) 一. 选择题 1.一个完整的计算机系统包括____. A) 主机.键盘.显示器 B) 计算机及其外部设备 C) 系统软件与应用软件D) 计算机的硬件系统和软件系统 解答:一个完整的计算机系统是由硬件系统 ...查看


  • 地址译码方式详解
  • 存储器是用来存放数据的集成电路或介质,常见的存储器有半导体存储器(ROM .RAM ).光存储器(如CD .VCD .MO .MD .DVD ).磁介质存储器(如磁带.磁盘.硬盘)等.存储器是计算机极为重要的组成部分,有了它计算机才具有存储 ...查看


  • 计算机一级考试理论知识点整理
  • 说明:文中标明的页码均指< 大学计算机信息技术教程(第4版第二次修订) >(南京大学出版社) 考点1 信息技术概况 (第一章1~2节 & 第二章 第1节 & 第六章 第5节) 考点 1.1 集成电路的基本知识 微 ...查看


热门内容