
计算机是20世纪最伟大的科技成果之一。自1946年第一台计算机诞生以来,计算机科学以一日千里的速度向前发展。现在,计算机作为一种现代化的处理信息的工程,已应用于各行各业各个领域之中,数值信息、文字信息、图像信息、动画信息甚至声音信息都可以通过计算机来存储各处理。不过计算机所做的任何工作都是在程序的控制下进行的,从计算机科学技术的发展趋势看,未来的计算机将是半导体技术、光学技术、超导技术和电子仿生技术等相互结合的产物。由于集成光学、超导器伯以及电子仿生技术的开发将为计算机开拓更加广泛的应用领域,从而将出现光学数字计算机、超导计算机以及人工智能计算机等全新的计算机。可以预见新一代计算机主要着眼于机器的智能化,以知识库为基础,采用智能接口,能进行逻辑推理、完成判断决策,具有自然的人机通信能力等。
通过本课程读者将重点学习程序设计的基本方法,同时学习掌握一些关于计算机的基本知识。
第一节计算机系统组成及基本工作原理
一、计算机系统概述
一个完整的计算机系统由硬件系统和软件系统两大部分组成。
硬件系统指的是组成计算机有具体的物理设备。1946年2月,美国宾夕法尼亚大学的ENIAC(Electronic Numerical Integrator And Calculator 电子数值积分器和计算器)开始运行,同年美籍匈牙利数学家冯﹒诺曼在参加第一台计算机的研制中,提出了三个重要的设计思想:计算机由运算器、控制器、存储器、输入设备、输出设备等五个基本部件组成;采用二进制;程序和数据一样都存放在存储器中;冯﹒诺依曼的思想奠定了计算机科学发展的理论基础,并被应用于实际设计中,为计算机的发展立下了不朽的功勋。按照冯﹒诺依曼的思想设计的计算机被称为冯﹒诺依曼型计算机。50多年来,计算机的性能、速度、应用领域等都发生了翻天覆地的变化,但是计算机的基本结构一直没有变。概括地说计算机由五大部件组成,其基本结构如图1-1所示。
计算机各部件的功能为:
(1)运算器。算术逻辑运算部件,又称ALU。负责完成所有算术运算、逻辑运算任务。
(2)控制器。如同是人的大脑,负责控制指挥计算机各部件按照指令指定的功能进各种操作,使计算机能够按照程序的安排,自动完成规定的任务。
(3)存储器。计算机的重要部件之一,是计算机能够实现“存储程序”功能的硬件基础。程序和数据以及运算的中间和最终结果均以二进制形式存储在其中。
(4)输入设备。用来接受用户输入的原始数据各程序,并将它们变为计算机能够识别的代码形式存放到存储器中
(5)输出设备。用于将存储器中经计算机处理得到的运算结果转变为人们所能接受的形式,输出到相应的介质上,供使用者观看、分析和保存。
上面所述的五大部件构成了计算机的硬件部分。我们通常把运算器和控制器统称为CPU,CPU是处理器(Central Processing Unit)的英文缩写,并把CPU和存储器合称为主机。
计算机软件系统包括了计算机运行所需的各种程序及其有关的文档资料。计算机系统是在硬件(裸机)的基础上,通过一层层软件的运行,向用户呈现出友好的使用界面和强在的功能。根据程序的不同用途,通常把软件分为系统软件和应用软件两大部分。
系统软件是计算机设计制造者提供的管理计算机全部软硬件资源的软件。通常包括操作系统、语言处理程序、数据库管理系统、网络管理程序、工具和服务程序等。这些系统程序中,操作系统是最核心的软件,其他所有程序都要在它的支持下工作。
应用软件是专门为某一应用目的而编制的通用或专用程序。应用软件必须在系统软件的支持下才能工作。
需要指出的是,计算机的硬件系统各软件系统之间是相辅相成、缺一不可的。可以想象,如果没有软件系统,计算机就是一个死的躯壳;如果没有硬件系统,软件系统出就没有立身之地。图1-2反概括了计算机系统的组成,图1-3反映了用户和软件、硬件之间的关系。
二、计算机的基本工作原理
从图1-1可见,计算机种有两股信息流在流动,一股是数据流,它包括参加运算的原始数据、运算过程中的中间结果和最终结果,还包括程序中的指令;另一股是控制流,是由控制器发往各部件的命令。在计算机内部,这些信息都用以0和1组合而成的二进制代码来表示,因为计算机能理解、识别和执行的只能是二进制信息。我们把程序和数据同时存储存储器中,在发出运行命令以后,计算机能够自动完成运算,就是因为在存储器中存储了程序。计算机是在程序的控制下自动完成相应操作的,这就是所谓“存储程序”的原理,它是计算机的基本工作原理,又称为冯﹒诺依曼原理。为深刻理解这一原理,下面介绍一下指令和程序的概念。
(1)指令。指令由一串二进制代码组成,是控制计算机完成一个基本操作的命令,如:传送、加法、移位、停机等都是一个基本操作。指令应能由控制器中的指令译码器所识别,因此,不同类型的计算机由于硬件的差异,指令代码也不同。
(2)指令系统。某一台计算机所能识别的所有基本指令的集合称为指令系统。指令系统的丰富与否,决定了计算机对数据的运算和理能力的强调。
(3)程序。程序就是解题步骤的实现。使用者根据解决某一问题的过程和步骤,选用一条条指令进行有序的排列,这一指令就是程序。
例如:1)取一个运算数a;
)再取一个运算数b;
)做a+b运算;
)结果存入存储器中;
)将存储器中的结果送显示器显示;
)结束
这就是一个完成某两数求和运算的程序。
(4)程序在计算机中执行过程。完成程序编写之后,要通过输入设备输入到存储器中。计算机执行程序是依规定顺序执行一条条指令,每一条指令的执行部分为两个阶段:一是从存储器瓷将指令码取到CPU中;二是CPU对取入的指令进行分析译码,判断该指令要做什么,然后向各部件发出完成该操作的控制信号,使各部件产生相应的动作,这样就完成了一条指令的执行过程。
程序是一系列指令的有序集合,因此程序的执行,就是依次不断地对程序中所有指令取出、执行的全过程。
第二节微型机的系统结构
年代初以来,随着大规模集成电路技术的发展,微型机以它体积小、功能强、软件丰富、价格便宜等卓越的特点,在各个领域得到了广泛的应用,PC(Personal Computer)机走出实验室、办公室来到了家庭,成为名副其实的个人计算机,也成为了计算机市场的主流。那么,微型机和其他规模的计算机相比到底有什么不同呢?从基本结构来说,并没有本质上的区别,它们都具有冯.诺依曼计算机的基本属性,但是微型机又有着它自己所独具的结构特点。
一、微型机的硬件系统
微型机的运算器和控制器被集成在一片大规模集成电路芯片中,一般称其为微处理
器,即微型机的CPU。CPU的大规模集成是微型机结构上的一个主要特点,目前微型机的微处理器大都采用Intel公司的80x86系列芯片,通常CPU的型号也代表了微型机的类型。微型机硬件系统一般分为主机和外设两大部分,其结构形式不同而已,主要体现在CPU大规模集成在一起和采用总线结构方面。根据微型机结构的特点,我们一般说微型机是由重微处理器、内存、外存、I/O接口及I/O设备、总线等几大部分组成,图中虚线以上的部分称为主机,虚线以下的部分叫做个设。下面分别介绍微型机的部件的功能与作用。
(一)微处理器(CPU)
微处理器是整个微型计算机的核心部件,其中包含了冯.诺依曼结构的运算器和控制
器二大部分,用来执行指令,完成各种运算和控制功能。现代的微型处理器均由一片超大规模集成电路制成,其集成度越来越高,性能也越来越高。
从内部结构看微处理器一般都包含下部件:算术逻辑部件ALU;累加器及通用寄存器组;程序计数器、指令寄存器和指令译码器;时序和控制部件。
(二)存储器
存储器是计算机存储信息的“仓库”,所谓“信息”是指计算机系统所要处理的数据
和程序,所以说存储器是用来存储程序和数据的部件。
微型机的存储器,按照存储器与与CPU的关系,被分为内部存储(简称内存)和外部存储(简称外存)
内存用来存放当前计算机运行立刻就需要的程序和数据,内存的大小直接影响程序的运行效果。内存的存取速度与CPU相当,因此在图1-4中,它直接通过系统总路线和CPU相连;外存用来存放不立刻运行的程序和数据,它可以与内存进行大量信息交换,既可以将外存中的信息调入内存进行运算,也可以将内存中处理过的程序和数据写入外存,以便保存。外存在系统中同外设一样是通过接口和CPU相连接的。因此内存属于主机的一部分,而外存是属于外设的范畴。内存的主要特点是:容量小、速度快,但价格较贵;外存的特点是:容量大、速度慢,但价格较便宜。
1.内部存储器
目前内存均采用高速的半导体存储器,从功能来看,内存一般分为ROM和RAM两类
(1)ROM(Read Only Memory只读存储器)。ROM存储器的特点是只能从中读出信息,而不能向其中写入信息,在关机和断电后,ROM中的内容仍能保存,不会丢失。ROM的写入,需要用专门的编程器完成。一般ROM中存储的是由厂家装入的系统引导程序、自检程序、输入输出驱动程序等。
(2)RAM(Random Access Memory随机存储器)。RAM的特点是其中存放的内容可随机读写,但RAM中的信息具有易失性,关机或断电后信息会全部丢失。计算机在运行时,系统程序、用户程序以及所用数据都存放在RAM中。
(3)有关存储器的概念。一般用户直接使用的是RAM,通常我们所说的内存大小也是指的RAM。下面根据存储器的结构示意图(见图1-5)介绍一些与存储器有关的概念。
图中可能见,存储器由若干个单元组成,每个单元有一个唯一的编号,称为地址。信
息的最小单位是二进制的位(bit),每8个二进制位定义为一个字节(Byte),存储器以字节为单位来进行编址。CPU访问内存时,一次读写几个字节取决于字长是多少,字长一般是8的倍数,与数据总线的根数有关,字长反映了计算机处理数据的能力与效率。例如:字长为16位的CPU,它的数据总线是16条,一次读写某地址开始连续二个字节的16位数;字长为32位的CPU,则数据总线是32条,一次读写某地址开始连续四个字节的32位数。我们把若干字节称为一个字(Word)。存储器的存储单元总数,称为存储器的容量,微型机中以B、KB、MB、GB、TB作为表示存储器容量的单位,B表示一个字节,1KB=1024B(B)1MB=1024KB(B),1GB=1024MB(B),1TB=1024GB(B)。存储器容量及单位也适于外存。
2.外部存储器
外存是相对于内存而言的一种存储设备。目前常用的外存有软盘、硬盘和CD-ROM光盘。软盘和硬盘上的信息都是可以读写的,并可以长期保存,断电也不会消失。硬盘比软盘容量大,常用的3.25英寸高密软盘容量是1.44MB,而硬盘的容量则有数百MB到几个GB之大。硬盘比软盘读写速度快,通常要高一二个数量级。不过软盘和软盘驱动器是可分的,而硬盘各硬盘驱动器则被密封在一起,它们各有特色。目前软盘和硬盘存储器都是微机系统中不可缺少的设备。需要说明的是,外存是一种特殊的设备,如果站在存储器的角度看,它是外存,但如果站在外设的角度看,它是一种特殊的输入输出设备。既可以输入,也可以输出。
光盘也是一种外存,目前常用的CD-ROM是一种只读光盘,它的容量很大,可达600多MB,常常用来存放一些信息很大的软件。
(三)I/O接口与I/O设备
1.I/O接口(输入输出接口)
I/O接口是微处理器与I/O设备之间交换信息的连接电路,外设必须通过接口连接到系统总线上再与CPU相连。I/O接口的作用,主要是协调CPU与外设间的速度、信息格式、信息类型等差异,使之能正确完成CPU与I/O设备间的信息交换。因此I/O接口又常被称为适配器,适配器一般作为插板形式,故也称适配卡或接口卡,常用的接口卡有:显示器适配卡、多功能适配卡、软盘接配卡、硬盘接口卡等。
2.I/O设备(输入输出设备)
I/O设备是指那些用于输入或输出的具体设备,每一台设备都需要有与之匹配的接口卡。I/O设备通过I/O接口、总线和CPU之间建立联系。微型机常用的I/O设备有键盘、鼠标器、显示器、打印机。对于多媒体计算机,还常用语音输入机、扫描仪、绘图机、录像机、VCD机、音箱等设备。
(四)系统总线
采用总线结构是微型机组成结构的显著特点之一。所谓总线(BUS)就是指计算机部件与部件之间进行信息传输的一组公共信号线及相关的控制逻辑电路。它是一组能为计算机多个部件服务的公共信息传输通路,能分时地发送或接收各部件的信息。
在系统总线上通常传输三种信号:数据、地址和控制信号民,相应地总线也分为数据总线、地址总线、控制总线三类。系统总线被恰当地比作“高速公路”,总线上的数据流则视为公路处的“车辆”。显然,交通是否畅通直接依赖于总线,因此总线技术成为微机系统结构的一个重要方面。经过十几年的发展,已形成了多种高性能的总线标准,如PC机上常用的ISA总线、EISA总线、PCI总线等。
(五)单片机、单板机、个人计算机和工程工作站
1.单片机
单片机又称为“微控制器”(Microcontroller)和“嵌入式计算机”(Embedded computer)。
这是一种把构成一微型机的功能部件集成在一块芯片之中的计算机,这些功能部件包括微处理器、RAM、ROM(有的单片机中不包括ROM)、I/O接口电路、定时器/计数器等,有的单片机还包括A/D转换器和D/A转换器。单片机的体积小、功耗低,在智能化仪器仪表及控制领域应用极广。
2.单板机
将微处理器、RAM、ROM以及I/O接口电路,再配上相应的外设(小键盘、发光2极管显示器)和监控程序固件等,安装在一块印刷电路板上构成的微型计算机系统称为单板机。例如以Z80微处理器为核心的TP-801单板机,以8086微处理器为核心的TP-86单板机等。单板机可广泛应用于生产过程的实时控制和教学实验。
3.个人计算机(Personal Computer,pc)
个人计算机是一种通用的微型计算机系统,通常由主机箱(包括主板、软盘驱动器、硬盘驱动器、CD-ROM和电源)、键盘、显示器以及打印机等外部设备组成,其特点是价格低、性能好、体积小,可广泛应用于办公室和家庭使用。如Apple机、IBM pc机及其兼容机等。个人计算机在科学、工业、教学、商业和家庭等各领域都得到广泛的应用。
4.工程工作站(Emgineering Work Station ,EWS)
工程工作站是一种微型化的功能很强的计算机系统,简称为“工作站”,它的运行速度快、内在容量大,图形和图像处理能力强,外设接口能力强,易于联网,适合于进行较复杂的科学和大型工程计算。工作站由高性能主机、高分辨率显示器、高速的I/O设备,以及其他必要的仪器设备组合而成,置于终端台上。它本身可以作为一台计算机使用,能完成工程业务、技术业务和管理业务,并能作为一个工作站加入到网络中。
二、微型机的软件系统
我们已经知道没有任何软件的计算机称为“裸机”,裸机是不能完成任何工作的,可以
说软件是计算机工作的“灵魂”。近年来微型机迅速普及的原因之一,虽然有硬件性能价格比变化的因素,但更重要的原因是由于微机丰富的软件,满足了各类用户、各种领域的应用需求,而且微型机的软件产业仍在飞速发展。
软件系统是由系统软件和应用软件两大部分组成的。
1.微型机的系统软件
系统软件一般由生产厂家或公司在出售计算机时提供给用户的。微机上常用的系统
软件有:
(1)操作系统。这是指对计算机系统的全部软、硬件资源进行管理的大型、多模块程序。如单用户单任务的磁盘操作系统DOS、基于图形界面的多任务操作系统Windows、多用户多任务的UNIX操作系统、Windows NT及IBM OS/2等流行的网络操作系统等。
(2)语言处理程序。这是指汇编程序、解释程序、编译程序等对各种汇编语言、高级语言源程序进行翻译的系统程序。如MASM汇编程序、Turbo C 2.0系统等。
(3)数据库管理系统。这是指对数据库进行维护和管理的系统程序。如FoxBASE、Foxpro、Oracle、Access等都是微型机上应用比较广泛的关系型数据库管理系统。
(4)常用服务性程序。这包括编辑程序、调试程序、装配与连接程序、系统的维护与测试程序。
下面以磁盘操作系统(DOS)为例介绍系统软件中操作系统的功能。
所谓操作系统是一个功能强大的,能对计算机物软硬件资源进行管理的软件。它是系统软件的核心,其他所有程序都要在它的支持下工作。操作系统一般应具备处理机管理、存储器管理、文件管理、设备管理、作业管理等五大功能。当然对于用途不同的操作系统,不一定要具备全部功能。
( Disk Operating System)是基于文字界面的单用户、单任务操作系统。最初是由美国Microsoft公司于1981年研制的,所以叫MS-DOS,同年被IBM公司选择为其新制造的个人计算机IBM-PC上的操作系统,改名为PC-DOS,因此MS-DOS和PC-DOS是同一个操作系统,只是核心模块名略有区别而已。MS-DOS从1.0版发展到今天的6.22版,功能不断加强,是PC机用户广泛使用的操作系统。
(1)MS-DOS的基本组成。MS-DOS是由许多模块组成的程序组,但其中最主要的模块有4个,称为DOS的核心模块。
一是引导程序(BOOT)。它是一个很小和程序,存放在系统盘的0磁道1扇区
上。它的主要作用是检查系统上是否有操作系统,若没有,则在屏幕上给出提示信息。若有,则将IO.SYS和MSDOS.SYS模块调入内存。
二是输入输出管理模块(IO.SYS)。该模块包含两部分:由ROM中的基本输入输出系统BIOS和系统盘上的IO.SYS文件组成,该模块的主要作用是检查外设的状态,对设备进行初始化并包含一组设备驱动程序等。
三是文件管理模块(MSDOS.SYS)。这是DOS的核心部分,主要作用是对磁盘上的文件进行管理,进行磁盘信息的读写等。
四是键盘命令处理程序(COMMAND.COM)。该模块的作用是接受用户从键盘上输入的DOS命令,检查该命令是否正确。如果正确则调用相关程序,完成用户的操作要求;如果不正确,则在屏幕上显示错误的原因。
(2)DOS的启动。所谓DOS的启动就是指把系统盘(C盘或A盘)上的四个系统模块装入内存。DOS的启动方法有冷启动和热启动。
当我们给计算机加电后,计算机会自动完成启动过程,这就是冷饮启动。
如果在使用过中出现“死机”等现象时,可同时按下Ctrl+Alt+Del三个键,即可实现热启动。
DOS启动成功以后,会出现C:\\>提示符,表明系统已经启动成功,等待输入键盘命令。
目前不少用户使用Win95或Win98操作系统,如要进入MS-DOS,可在Win95或Win98程序组菜单中选择MS-DOS方式,切换到MS-DOS环境使用。
(3)文件的概念。文件是一组相关信息的集合。文件可以是高级语言的一个源程序、一篇文稿、一封信、一组数据、一个表格或其他一组信息。DOS系统的数据信息绝大多数都是存放在磁盘上的,并且以文件的形式进行组织和管理。DOS从磁盘上读取信息或向磁盘写入信息,都是以文件为单位,文件是DOS管理的基本对象。
DOS文件的命名是有规则的。在DOS命令中,大多数都要指出操作的文名,如
COPYFILEL.C A:命令,该命令的作用是把名为FILEL.C的文件拷贝到A盘上去。为了区别不同的文件,每一个文件都要取一个不同的名字。DOS文件命名规则采用8.3结构,即主文件名由1~8个字母(或1~4个汉字)组成,扩展名用0~3个字符组成。可用的字符有:26个英文字母,10个数字和专用字符!、@、#、$、&、(、)、-、—、{、}等,主文件名和扩展文件名中间用“.”隔开。主文件名是必须的,扩展文件名是可选的。
需要说明的是扩展名通常用来表示文件的类型,用户可以自己取,但DOS有不少约定的扩展名,如.EXE、.COM、.BAT、.FOR、.TXT等分别表示可执行文件、命令文件、批处理文件、FORTRAN源文件、文本文件等,C语言源文件的扩展名为.C。如无特别需要,一般采用DOS约定的扩展名。
下面是一组正确的文件名:DISKCOPY.COM,P145.C,通知.doc,1.1,zhouli_1.wj。
下列文件名则是非法的:zhanghu.aaa,z ,bat ,UI.FOR1 ,COM。
如果你在DOS命令中给出了一个不合法的文件保,DOS便会显示如下出错信息:
File not found –XXXXX.XX
这里还有个通配符的使用概念。如有时想对几个文件做相同的操作,一次复制一组文件或列出一组文件名等。DOS的通配符“*”和“?”可以帮助你达到这个目的。在文件名和扩展名中,“?”可以代替任意一个字符,“*”可以代替剩余的任意字符。
例如,假设磁盘上有文件,则有
A?.C代表A1.C、A2.C、
A?.*代表A1.C、A2.C、A3.BAS、A4.BAS
代表A3.BAS、A4.BAS、AEXAM001.BAS、AEXAM101.BAS
在一个DOS命令中,我们常常可以使用通配符来操作多个文件。
(4)DOS对磁盘文件的管理采用目录及其树型结构。如前所述,DOS处理磁盘上的信息是以文件为单位的。磁盘上的文件成千上万,为了便于管理及提高搜索文件的速度,DOS采用多级目录结构进行文件管理,通常把系统软件、各种应用软件、用户程序和数据文件等磁盘文件分类存于不同的目录下。
磁盘在进行格式化的时候,自动建立了一个根目录,之后我们可以根据需要在根目录下建立若干不同级别的子目录,磁盘上的目录结构好像一棵倒置的“树”,根目录是“树根”,各层子目录是“树枝”,文件就是“树叶”,因此常称其为树型目录结构,如图1—6所示。
在树型目录结构中,只有一个根目录,处于最顶层,用“\”表示。树型目录结构的每一层上既可以有子目录,也可以有文件存在。每一个子目录只有一个上级目录,但可以有多下下级目录。相对于某个目录,我们把它的上一级目录称为它的父目录,把它的下一级目录称为它的子目录。父、子目录的概念都是相对而言的。例如图1-6中,子目录3是子目录4的父目录,又是子目录1的子目录。根目录是没有父目录的。需要注意的是,在同一目录下,不允许有相同的子目录名或文件名,但在不同的子目录下,即使重名也不必担心。
在这里我们还要了解“当前盘”和“当前目录”的概念。
在系统启动成功后,自动显示包含系统盘符的提示符,如C:\\>,此时对磁盘的操作默认是对C盘操作,这时C盘就是“当前盘”。
当一个盘建立了目录结构,操作时就需要指明,要找的文件在哪众目录下,DOS对每个磁盘都记忆一个目录,操作一个文件时,如果没有指明目录,则自动到DOS记忆的这个目录中去找,该目录被称为“当前目录”,DOS启动后系统默认的当前目录是根目录。
当前盘是可以改变的,如C:\\>A:↙(回车键),则A盘变为当前盘。
当前目录也是可以改变的,如C:\\>CD UCDOS↙ ,则UCDOS子目录变为当前目录。
每个子目录都有一个目录名,命名规则与文件命名规则相同。但DOS允许用一个小圆点“.”表示当前目录,如C:\\>COPY A:\↙ (注意: 表示空格)表示当前目录的父目录,如C:\\>CD..↙,表示当前目录的父目录被置为当前目录。
(5)路径及文件标识。所谓路径是指从根目录或当前目录到指定的目录或文件所要经过的路线的描述。依次所经过的各个目录之间要用反斜杠“\\”隔开。
当我们要对一个文件操作时,必须先确定它处在什么位置上,如果它不在当前目录下,则必须指出找到它需经过的路径。
对路径的描述方法有两种:绝对路径和相对路径。从根目录开始的路径,称为绝对路径;从当前目录开始的路径,称为相对路径。现在假设,在图1-6所示的目录结构中,当前目录是子目录1,要操作的是文件7,如何描述文件7的路径呢?
[盘符] [路径]<[文件名[.扩展名]>
(6)DOS命令的一般格式。一个DOS命令的格式为:<命令动词>[参数]
例1:type c:\c\examl.c↙显示C盘tc子目录的名为examl.c的C源文件内容
例2:copy a:\\*.doc c:↙把A盘根目录下user子目录下所有的.doc文件拷贝到C盘当前目录下。
DOS提供了对磁盘文件、目录进行管理操作的各种命令,有关命令的格式、功能和使用方法请参考有关参考书。
2.微型机的应用软件
所谓应用软件是指在系统软件的支持下,为解决各类实际问题,针对用户需要而设计的通用或专用程序。通用型的应用程序如:WPS及WORD等字处理软件,CCED及EXCEL等电子表格软件,各种绘图及动画制作软件,各种开发工具软件,网络通信软件等。专用型的应用程序如:进行某工程设计的计算程序,某单位的工资管理程序,也包括本课程中同学们用C语言设计的解决某一具体问题的程序等。
第三节计算机中数据的表示及存储形式
因为计算机只能识别和处理二进制信息,所以计算机内部处理的数据都是二进制的。但是在用高级语言编写程序时,为适应人们的使用习惯通常使用十进制形式,在输入数据或输出运行结果时,也多采用十进制,有时也用八进制式或十六进制形式进行输入输出,其实八进制式或十六进制是为了二进制的一种书写法。因此我们要了解这些表示形式及它们之间的关系,以及数据如何在计算机内部存储,这是学习C语言程序设计必备的基础知识。
一、数的位置记数法及进制式的概念
进制的种类很多,在日常生活中我们经常遇到,如常用的十进制,一周七进制,一小时
60分有六十进制等,而计算机内部采用的则是二进制。
不同的进制有共同的特点:
(1)逢进制(或称基数)进位;
(2)进制的数有0~(X-1)共X个数码;
(3)数的值不仅仅取决于数码的大小,还取决于它所在的位置 。
~9数码排列,0~9可以说明大小不同,但是同样一个数码,如这里的9,它在个位代表9,而在百位则代表9×=900,由此可见各位上数值的大小,除取决于数码本身外,还它所在位置有关,若用N表示这个数的大小,则
N=
没有小数时 N=
式中 n—整数部分的位数;
m—小数部分的位数;
—进制数(基数);
—系数(0~X-1中任意一个数)。
、、、、、、……分别称为十进制的位权。由上例可见,每一位数的数值=数码×位权,这就是所谓的位置记数法,上式称为按权展开式。
由此可见,只要取不同的基数,即可得到不同进制数N用位置记数法表示的按权展开式,从而得到它所代表的十进制数值。例如:
任意二进制式数N=N=,基数是2,代表0~1,各位位权是。
任意八进制式数N=N=,基数是8,代表0~7,各位位权是。
任意十六进制式数N=N=,基数是16,代表0~9、A、B、C、D、E、F,各位位权是。
显然,由于基数不同,同样一个数代表的值不同的,原因在于位权不同,例如:
=1×+1×+0×+1×+1×=11011
=1×+1×+0×+1×+1×=27
=1×+1×+0×+1×+1×=699
二、各种进制数之间的转换
一个数可以用二进制、十进制、八进制、十六进制等各种形式来表示,虽然表示形式不
同,但他们是等的,我们要熟悉它们之间的转换方法。
1.R进制和十进制之间的转换
(1)将(R=2,8,16)进制数转换为十进制数。
方法:按权展开求和。
【例1-1】分别将、、转换为十进制数。
=1×+1×+0×+1×+1×+0×+1×+1×+0×+1×
=3×+5×+0×+6×+2×+4×
=8×+15×+12×+7×+2×
(2)将十进制数转换为R(R=2、8、16)进制数。
方法:整数部分采用除基数取余法;小数部分采用乘基数取整法(“基”即进制的意思)。
【例1-2】 将分别转换为二进制、八进制、十六进制式数(用除基数取余法实现)。
注意:最先得到的余数是整数的最低位。
因此, ===
【例1-3】将转换为二进制数(分别用除2取余法和乘2取整法对整数部分和小数部分进行转换,然后拼接起来即可)。
由【例1-2】已知=下面对进行转换:
因此, =
2.二进制数转换为八进制或十六进制数。3位二进制数可以组合成=8种状态,刚好能表示八进制数0~7;4位二制数可以组合成=16种状态,刚好能表示十六进制数0~F。十进制、八进制、十六进制与二进制组合代码的对应关系如表1-1所示。
表1-1、十、八、十六进制与二进制组合代码的对应关系表
因此,二进制转换成八进制或十六进制数时,只要把二进制数按3位或4位分组,然后写出其对应的八或十六进制数即可。
具体方法是,从小数点处开始向左右两边每3位(或4位)划为一组,向左划分时若最左边的一组不足3位(或4位),在最左边补0,凑齐3位(或4位);向右划分时若最右边的一组不足3位(或4位),就在最右边补0,凑齐3位(或4位),然后把每3位(或4位)二进制转换为一位八进制(或十六进制)数。
【例1-4】 010110111=
10110111 =
【例1-5】011100110101. 110110=
01110011 0101.11011000=
(2)八进制或十六进制数转换为二进制。转换方法是3位或4位分角解法。只要依次把八进制数或十六制数的每一位转换为3位(或4位)二进制数即可,整数部分的高位0和小数部分的低位0可以省略。
【例1-6】=010010101
【例1-7】= 1001 1111 11111000.0111 0110
三、带符号数在计算机内部的表示
前面我们讨论的各有效位都代表数值的二进制数,叫做无符号数,在程序中表示计数值、
人数、数量等可以用,但是在数值计算中,数常常是带符号的。
(一)如何表示一个带符号数的符号
数有正负之分,在计算机中怎样表示数的符号呢?通常,对于n位二进制数,将其
最高位作为符号位,“0”表示正,“1”表示负。
数的符号位连同该数值本身一起作为一个数称为机器数,机器数的二进制编码有原码、反码、补码三种。
(二)关于机器数的原码、反码、补码
在计算机内部存储的带符号数都是以补码形式存储,用补码形式进行运算的。什么是一个数的补码?为什么要用补码?这要从数原码、反码开始讲。下面以整常数为例,且假定字长为8位。
1.原码
整数X的原码是指:其符号位为0表示正,为1表示负;其数值部分就X的绝对值的二进制数。X的原码通常用来表示。例如
==00000001
==10000001
注意:在原码中,零有两种表示形式,即
==10000000
原码表示简单易懂,与真值(带符号数本身)转换方便,只要把符号还即可,但当两个正数相减或不同符号数相加时,必须比较两个数哪个绝对值大,才能决定谁减谁,才能确定结果是正还是负,所以原码不便于加减运算。
2.反码
X的反码是指:对于正数,反码与原码相同;对于负数,符号位不变,其数值位X的绝对值取反(1变0,0变1)。X的反码通常用来表示。例如
==00000001
=10011011=11111110
注意:在反码中,零也有两种表示形式,即
==11111111
反码运算也不方便,通常用来作为求补码的中间过渡。
3.补码
X的补码是指:对于正数,补码与原码相同;对于负数,符号位不变,其数值位X的绝对值取反后在最低位加1。X的补码通常用来表示,实际上通常用=+1。例如
==00000001
=10011100 =11111111
注意:在补码中,0有唯一的编码, ==00000000。
补码运算简单方便,符号位可能作为数据的一位参与运算,不必单独处理;二进制的减法可用其补码的加法来实现,简化了硬件电路。
【例1-8】 8-5=?应得+3 可将+8的补码和-5的补码相加,就可得结果+3的补码。
【例1-9】-123+76=?应得-47
这里运算结果仍然是补码,若要求得真值必须求其原码。根据补码求原码,只要对补码再求补即右可,所以有=。
因为=11010001,所以==10101111=-47
以上我们了解到机器数的补码,可以使减法运算换为其补码的加法运算,因此在微机中均采用补码存储,补码运算。
四、字符数据的编码
字符数据也是计算机经常要处理的数据,如英文字符、标点符号、数字字符等在计算机内部存储时,也要给他们进行二进制编码。
