1、程序设计基础程序设计基础第第 2 章章 数据的表示和组织数据的表示和组织 数据的存储介质数据的存储介质存储器存储器 数据的组织数据的组织基本数据类型基本数据类型本章的基本内容是:本章的基本内容是:程序设计基础程序设计基础2.1 数据的存储介质数据的存储介质存储器存储器二进制二进制1.进位计数制进位计数制简称进制简称进制 计数方法:计数方法:当某一位的值达到某个固定量时,就要向高位当某一位的值达到某个固定量时,就要向高位产生产生进位进位。不同的进制以基数来区分,若以不同的进制以基数来区分,若以 r 代表基数,则:代表基数,则:r=10为十进制,可使用为十进制,可使用0,1,2,9共共10个个数码
2、数码;r=2为二进制,可使用为二进制,可使用0,1共共2个个数码数码;r=8为八进制,可使用为八进制,可使用0,1,2,7共共8个个数码数码;r=16为十六进制,可使用为十六进制,可使用0,1,2,9,A,B,C,D,E,F共共16个个数码数码。每个位置都对应一个权值,称为每个位置都对应一个权值,称为位权值位权值。r进制数通常写作进制数通常写作(ana1a0.a-1a-m)r,其中,其中ai0,1,r-1(-min)。)。例如:例如:(1101)2,(689.12)10程序设计基础程序设计基础二进制二进制1.进位计数制进位计数制 算术运算:算术运算:遵守遵守“逢逢 r 进进1,借,借1当当 r
3、”的规则。的规则。例如:十进制的运算规则为例如:十进制的运算规则为“逢逢10进进1,借,借1当当10”,二进制的运算规则为二进制的运算规则为“逢逢2进进1,借,借1当当2”。2.1 数据的存储介质数据的存储介质存储器存储器程序设计基础程序设计基础二进制二进制2.进位计数制二进制数与十进制数之间的转换进位计数制二进制数与十进制数之间的转换(1)二进制数转换为十进制数)二进制数转换为十进制数 将二进制数转换为十进制数只需将二进制数按位权值展开然后求和,将二进制数转换为十进制数只需将二进制数按位权值展开然后求和,所得结果即为对应的十进制数。:所得结果即为对应的十进制数。:2.1 数据的存储介质数据的
4、存储介质存储器存储器例例2.1 将二进制数将二进制数1101101.1111转换为十进制数。转换为十进制数。解:解:1101101.11=11=12 23 31 12 22 20 02 21 11 12 20 01 12 2-1-11 12 2-2-2=13.75=13.75则:则:(1101101.11)11)2 2=(13.75)=(13.75)1010程序设计基础程序设计基础二进制二进制2.进位计数制二进制数与十进制数之间的转换进位计数制二进制数与十进制数之间的转换(2)十进制数转换为二进制数)十进制数转换为二进制数十进制十进制整数整数转换为二进制转换为二进制整数整数:除基取余,逆序排列
5、除基取余,逆序排列。2.1 数据的存储介质数据的存储介质存储器存储器例例2.2 将十进制整数将十进制整数46转换为二进制整数。转换为二进制整数。解:解:除数除数 商商 余数余数 46 23 0 23 11 1 11 5 1 5 2 1 2 1 0 1 0 1则:则:(46)10=(101110)2逆序排列程序设计基础程序设计基础二进制二进制2.1 数据的存储介质数据的存储介质存储器存储器十进制十进制小数小数转换为二进制转换为二进制小数小数:乘基取整,正序排列乘基取整,正序排列。例例2.3 将十进制小数将十进制小数0.375转换为二进制小数。转换为二进制小数。解:解:乘数乘数 积积 整数整数 0
6、.375 0.75 0 0.75 1.5 1 0.5 1.0 1则:则:(0.325)10=(0.011)2程序设计基础程序设计基础存储器存储器 存储器分为两种:内存储器存储器分为两种:内存储器(内存)(内存)和外存储器和外存储器(外存(外存或辅存)或辅存),我们通常所说的,我们通常所说的存储器指的是内存储器存储器指的是内存储器。内存储器有两种:随机存储器内存储器有两种:随机存储器RAM和和只读存储器只读存储器ROM。内存储器的最小存储单位是内存储器的最小存储单位是位位(bit),每个位可以存储,每个位可以存储一位二进制数。一位二进制数。存储单元是存储单元是可管理可管理的最小存储单位,典型的存
7、储单元是一的最小存储单位,典型的存储单元是一个个字节字节(Byte)。)。每个存储单元的编号称为每个存储单元的编号称为地址地址,地址一般从地址一般从0开始连续编开始连续编号号线性编址线性编址。2.1 数据的存储介质数据的存储介质存储器存储器程序设计基础程序设计基础存储器存储器001100101110100010101010 .10001101111000110000000000000001111111011111111011111111地址地址存储单元存储单元的信息的信息存储单元存储单元任意时刻存储单元的内容都不会是空的,一定是任意时刻存储单元的内容都不会是空的,一定是0和和1的编码的编码 访
8、问(存取):读出访问(存取):读出/写入写入2.1 数据的存储介质数据的存储介质存储器存储器程序设计基础程序设计基础2.2 数据的组织数据的组织 在计算机内部,任何数据都是以二进制形式存储的,在计算机内部,任何数据都是以二进制形式存储的,那么,程序是如何操作这些数据的?那么,程序是如何操作这些数据的?如果程序需要处理大量的数据,那么,计算机如何是如果程序需要处理大量的数据,那么,计算机如何是组织这些数据的?组织这些数据的?程序设计基础程序设计基础1.二进制形式二进制形式各种数据在计算机底层没有任何含义,程序中的整各种数据在计算机底层没有任何含义,程序中的整数、实数、字符等数据都需要编程人员人工
9、用二进数、实数、字符等数据都需要编程人员人工用二进制表示出来,再输入到计算机的存储单元中,程序制表示出来,再输入到计算机的存储单元中,程序中对数据的处理是基于内存的,即直接操作内存。中对数据的处理是基于内存的,即直接操作内存。2.2 数据的组织数据的组织 0 1 0 1 0 1 1 1 1 1 0 1 0 1 1 1 1 0 0 0 0 内存内存程程 序序 程序设计基础程序设计基础2.基本数据类型基本数据类型数据通常以某种特定形式(整、实、字符串)存在,数据通常以某种特定形式(整、实、字符串)存在,不同形式的数据其处理规则不同。高级程序设计语不同形式的数据其处理规则不同。高级程序设计语言根据数
10、据对象的不同使用规则,在二进制形式存言根据数据对象的不同使用规则,在二进制形式存储的基础上引入了整型、实型、字符型、逻辑型等储的基础上引入了整型、实型、字符型、逻辑型等基本数据类型。基本数据类型。2.2 数据的组织数据的组织 回避了回避了“存储器存储器”的概念的概念0 1 0 1 0 1 1 1 1 1 0 1 0 1 1 1 1 0 0 0 0 内存内存程程 序序 基本数据类型:整型、实型、字符型、逻辑型基本数据类型:整型、实型、字符型、逻辑型程序设计基础程序设计基础3.构造数据类型和自定义数据类型构造数据类型和自定义数据类型复杂程序经常要用到一些基本数据类型的组合,于复杂程序经常要用到一些
11、基本数据类型的组合,于是出现了更加抽象的构造数据类型。是出现了更加抽象的构造数据类型。由于用户的实际需要随着程序的不同而不同,于是由于用户的实际需要随着程序的不同而不同,于是出现了自定义数据类型。出现了自定义数据类型。2.2 数据的组织数据的组织 自行组织数据而自行组织数据而不局限于基本数据类型不局限于基本数据类型 0 1 0 1 0 1 1 1 1 1 0 1 0 1 1 1 1 0 0 0 0 内存内存程程 序序 基本数据类型:整型、实型、字符型、逻辑型基本数据类型:整型、实型、字符型、逻辑型构造数据类型和自定义数据类型构造数据类型和自定义数据类型程序设计基础程序设计基础4.抽象数据类型抽
12、象数据类型可以将抽象数据类型理解为可以将抽象数据类型理解为“数据操作数据操作”,即把一,即把一组数据对象及其上的操作封装成一个整体。组数据对象及其上的操作封装成一个整体。例如,整数的数学概念和施加到整数的运算构成一例如,整数的数学概念和施加到整数的运算构成一个抽象数据类型,个抽象数据类型,C+语言中的基本数据类型语言中的基本数据类型int是是对这个抽象数据类型的物理实现。对这个抽象数据类型的物理实现。2.2 数据的组织数据的组织 程序设计基础程序设计基础2.2 数据的组织数据的组织 内存:数据以二进制形式存储内存:数据以二进制形式存储基本数据类型基本数据类型自定义数据类型自定义数据类型抽象数据
13、类型抽象数据类型抽抽象象级级别别越越来来越越高高数数据据粒粒度度越越来来越越大大数据组织的发展历程数据组织的发展历程数据抽象的过程数据抽象的过程程序设计基础程序设计基础2.3 基本数据类型基本数据类型 整型整型在在C/C+语言中,整型数据的基本类型说明符是语言中,整型数据的基本类型说明符是int(integer的的简写)。简写)。1.存储格式存储格式在微型计算机中,整型数据的存储格式一般采用补码表示。在微型计算机中,整型数据的存储格式一般采用补码表示。1 1 0 0 1 1 1 1 1 1 0 0 0 1 1 1符号符号 -12345的补码的补码存储存储低地址低地址高地址高地址0 0 1 1
14、0 0 0 0 0 0 1 1 1 0 0 1符号符号 12345的补码的补码存储存储0 0 1 1 1 0 0 10 0 1 1 0 0 0 0低地址低地址高地址高地址高字节高字节 低字节低字节高字节高字节 低字节低字节1 1 0 0 0 1 1 11 1 0 0 1 1 1 1程序设计基础程序设计基础2.3 基本数据类型基本数据类型 整型整型1 1 0 0 1 1 1 1 1 1 0 0 0 1 1 1符号符号 -12345的补码的补码存储存储低地址低地址高地址高地址0 0 1 1 0 0 0 0 0 0 1 1 1 0 0 1符号符号 12345的补码的补码存储存储0 0 1 1 1 0
15、 0 10 0 1 1 0 0 0 0低地址低地址高地址高地址高字节高字节 低字节低字节高字节高字节 低字节低字节1 1 0 0 0 1 1 11 1 0 0 1 1 1 1例例2.4 X X=1000101,则,则X X 补补=0 1000101=0 1000101X X=1000101,则,则X X 补补=1 0111010+1=1 0111011=1 0111010+1=1 0111011 X X 补补=0 1000101=0 1000101,则,则X X=1000101 X X 补补=1 0111011=1 0111011,则,则X X=1 0111011=1 01110111=1 0
16、111010=1 0111010=1000101程序设计基础程序设计基础2.3 基本数据类型基本数据类型 整型整型2.取值范围取值范围抽象地讲,整型数据的值域是全体整数,但计算机是有限的,抽象地讲,整型数据的值域是全体整数,但计算机是有限的,计算机内存和其他硬件设备只能存储和操作一定量的数据,因计算机内存和其他硬件设备只能存储和操作一定量的数据,因此,每种计算机能表示的整数都在某一范围之内。此,每种计算机能表示的整数都在某一范围之内。例如,例如,4 位二进制数表示的整数集合如下:位二进制数表示的整数集合如下:程序设计基础程序设计基础2.3 基本数据类型基本数据类型 整型整型C/C+语言根据取值
17、范围的不同,将整型数据进一步分为:语言根据取值范围的不同,将整型数据进一步分为:基本整型(基本整型(int)、短整型(修饰符)、短整型(修饰符short)和长整型(修饰符)和长整型(修饰符long)。)。程序设计基础程序设计基础2.3 基本数据类型基本数据类型 有符号数和无符号数有符号数和无符号数0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1符号位符号位1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1数据位数据位(a)有符号最大正整数有符号最大正整数32767 (b)无符号最大正整数无符号最大正整数65535程序设计基础程序设计基础3.运算集合运算集合由于整型数据
18、能够表示的整数是有限的,如果运算的结果超由于整型数据能够表示的整数是有限的,如果运算的结果超过了系统能够表示的整数范围,这种错误现象称为过了系统能够表示的整数范围,这种错误现象称为溢出溢出。例例3.7 假设整数用假设整数用1个字节表示,计算个字节表示,计算6861的值。的值。解:解:681000100 68补补0 1000100 610111101 61补补0 0111101 0 1000100 68补补 0 0111101 61补补 1 0000001 -127补补2.3 基本数据类型基本数据类型 整型整型程序设计基础程序设计基础2.3 基本数据类型基本数据类型 实型实型实型实型也称为浮点型
19、,实型数据也称为实数或浮点数。也称为浮点型,实型数据也称为实数或浮点数。实型数据在计算机中一般采用浮点形式存储,实型数据在计算机中一般采用浮点形式存储,C语言提供了两语言提供了两种浮点数格式:单精度(种浮点数格式:单精度(float)和双精度()和双精度(double)。)。1.存储格式存储格式一般情况下,一般情况下,float(即(即floating-point的简写)型数据在内存中的简写)型数据在内存中占占4个字节,个字节,double(即(即doubling-point的简写)型数据在内存的简写)型数据在内存中占中占8个字节,但是用多少位来表示阶码(即指数部分),用个字节,但是用多少位来
20、表示阶码(即指数部分),用多少位来表示尾数(即小数部分),标准多少位来表示尾数(即小数部分),标准C没有具体规定,由没有具体规定,由具体的编译系统来决定。具体的编译系统来决定。程序设计基础程序设计基础2.3 基本数据类型基本数据类型 实型实型例例2.6 假设某假设某C/C+编译系统的编译系统的float型数据占型数据占32位二进制,其位二进制,其中中24位表示尾数,位表示尾数,8位表示阶码,给出位表示阶码,给出68.625在内存中的存放在内存中的存放形式。形式。解:解:(68.625)10(1000100.101)2(0.10001001012111)存储存储00000000101000000
21、100010000000111低地址低地址高地址高地址0 0 0 0 0 1 1 1 0 1 0 0 0 1 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 第第4字节字节 第第3字节字节 第第2字节字节 第第1字节字节阶符阶符 阶码阶码111 尾符尾符 尾数尾数0.1000100101 程序设计基础程序设计基础2.3 基本数据类型基本数据类型 整型整型2.取值范围取值范围根据根据IEEE标准,标准,float型数据占型数据占32位,其中尾数占位,其中尾数占24位,阶码占位,阶码占8位,而位,而double型数据占型数据占64位,其中尾数占位,其中尾数占52位,阶码占位
22、,阶码占12位。位。程序设计基础程序设计基础2.3 基本数据类型基本数据类型 整型整型3.运算集合运算集合在在C/C+语言中,实型数据可以进行基本的算术运算(如加、语言中,实型数据可以进行基本的算术运算(如加、减、乘、除等),同样需要注意减、乘、除等),同样需要注意溢出溢出问题,要保证运算结果问题,要保证运算结果在系统能够表示的实数范围。在系统能够表示的实数范围。在在C/C+语言中,实型数据可以进行基本的算术运算语言中,实型数据可以进行基本的算术运算(如加、减、乘、除等),同样需要注意溢出问题,要保证(如加、减、乘、除等),同样需要注意溢出问题,要保证运算结果在系统能够表示的实数范围。由于实型
23、数据的精度运算结果在系统能够表示的实数范围。由于实型数据的精度是有限的,所以一般应避免将两个实型数据比较大小,例如,是有限的,所以一般应避免将两个实型数据比较大小,例如,对于对于float型实数型实数12345.6789和和12345.6782,由于,由于float型数据只型数据只能存储能存储8位有效数字,第位有效数字,第9位数字是系统加上的随机数,所以,位数字是系统加上的随机数,所以,这两个实数的比较结果不能确定。实型数据一般不能进行逻这两个实数的比较结果不能确定。实型数据一般不能进行逻辑运算,对实数进行逻辑运算没有实际意义。辑运算,对实数进行逻辑运算没有实际意义。程序设计基础程序设计基础2
24、.3 基本数据类型基本数据类型 字符型字符型1.存储格式存储格式微型计算机一般采用微型计算机一般采用ASCII码。在码。在C语言中,字符型的类型说语言中,字符型的类型说明符是明符是char,char型数据在内存中需要一个字节。型数据在内存中需要一个字节。存储存储0 1 1 0 0 0 0 1a的的ASCII码为码为972.取值范围取值范围char型数据的取值范围是型数据的取值范围是ASCII码值为码值为0255对应的字符。对应的字符。3.运算集合运算集合不同的程序设计语言为字符型数据提供的运算集合不同。不同的程序设计语言为字符型数据提供的运算集合不同。程序设计基础程序设计基础2.3 基本数据类
25、型基本数据类型 逻辑型逻辑型逻辑型逻辑型也称为布尔型。也称为布尔型。1.存储格式:不同的程序设计语言对逻辑型数据的表示有所存储格式:不同的程序设计语言对逻辑型数据的表示有所不同,同一程序设计语言的不同编译器对逻辑型数据的表示不同,同一程序设计语言的不同编译器对逻辑型数据的表示有所不同,甚至同一编译器的不同版本对逻辑型数据的表示有所不同,甚至同一编译器的不同版本对逻辑型数据的表示也有所不同。也有所不同。2.取值范围:该类型的数据只有两个可能的取值:真和假。取值范围:该类型的数据只有两个可能的取值:真和假。3.运算集合:可以进行逻辑运算,运算集合:可以进行逻辑运算,C语言中将整型作为逻辑语言中将整型作为逻辑型,因此,逻辑型数据也可以进行算术运算。型,因此,逻辑型数据也可以进行算术运算。程序设计基础程序设计基础程序设计基础程序设计基础作业:作业:习题习题3:
侵权处理QQ:3464097650--上传资料QQ:3464097650
【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。