南开大学c++第2章 基本数据的表示与处理_第1页
南开大学c++第2章 基本数据的表示与处理_第2页
南开大学c++第2章 基本数据的表示与处理_第3页
南开大学c++第2章 基本数据的表示与处理_第4页
南开大学c++第2章 基本数据的表示与处理_第5页
已阅读5页,还剩57页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、计算基础计算基础C+C+语言实现语言实现在计算机中,所有的数据和指令都采用二进制形式存储。在计算机中,所有的数据和指令都采用二进制形式存储。计算机中存储的数据分为两大类:数值数据和非数值数据。数值计算机中存储的数据分为两大类:数值数据和非数值数据。数值数据能够表示数值的大小,非数值数据则是字符、图形、图像、数据能够表示数值的大小,非数值数据则是字符、图形、图像、声音等非数值信息的数字化表示。因此,在计算机中存储的同一声音等非数值信息的数字化表示。因此,在计算机中存储的同一个二进制数,在不同的应用场景下,会有不同的含义。人类使用个二进制数,在不同的应用场景下,会有不同的含义。人类使用计算机求解问

2、题,就是对计算机中存储的数据进行加工处理,得计算机求解问题,就是对计算机中存储的数据进行加工处理,得到新的数据,即获得了新的信息,得到了问题的解。本章介绍了到新的数据,即获得了新的信息,得到了问题的解。本章介绍了二进制数及几种基本数据类型的二进制数据表示方法,包括十进二进制数及几种基本数据类型的二进制数据表示方法,包括十进制数转换成二进制数的方法,整数、实数、字符和逻辑型数据的制数转换成二进制数的方法,整数、实数、字符和逻辑型数据的二进制表示法等;还介绍了如何通过二进制表示法等;还介绍了如何通过C+C+语言实现这些基本数据语言实现这些基本数据类型在计算机中的存储,以及对这些基本数据类型的数据进

3、行处类型在计算机中的存储,以及对这些基本数据类型的数据进行处理的方法。理的方法。2u 2.1.1 2.1.1 数据的单位数据的单位1.1.位位计算机中最小的数据单位是二进制的一个数位,简称位(bit),译音为“比特”。一个二进制位可以表示0和1两种状态,即21种状态,所以,n个二进制位可以表示2n种状态。位数越多,所能表示的状态就越多,也就能够表示更多的数据或信息。2.12.1数值型数据在计算机中的表示数值型数据在计算机中的表示32.2.字节字节8位为一个字节(byte),译音为“拜特”,记作B。字节是计算机中用来表示存储空间大小的最基本的容量单位。表示更多的存储容量经常使用KB(210B)、

4、MB(220B)、GB(230B)和TB(240B)等单位。3.3.字字字(word)是计算机一次能够存储和处理的二进制位的长度。所谓的64位计算机,含义是该计算机的字长是64个二进制位,即每一个字由8个字节组成。2.12.1数值型数据在计算机中的表示数值型数据在计算机中的表示4u 2.1.2 2.1.2 数制数制1.1.数制数制数制就是用一组固定的数码和一套统一的规则来表示数值的方法。例如,人们最熟悉的十进制,使用固定的10个数码(0、1、2、3、4、5、6、7、8、9)并按照“逢十进一”的规则来表示数值;再如,在计算机中使用的二进制数,使用两个固定数码(0和1),计数规则为“逢二进一”。在

5、一种数制中所使用的数码的个数称为该数制的基数。可见十进制的基数为10;二进制的基数为2。每一种数制中最小的数码都是0,而最大的数码比基数小1。2.12.1数值型数据在计算机中的表示数值型数据在计算机中的表示5十进制数1111.11中有6个数码1,它们所表示的值从左到右依次是1000、100、10、1、0.1和0.01。该数可以表示为按权展开的形式: 1111.11=1103+1102+1101+1100+110-1+110-2因此,任意一个具有n位整数和m位小数的R进制数N的按权展开式为:(N)(N)R R = = a an1n1R Rn1n1+a+an2n2R Rn2n2+ +a+a2 2R

6、 R2 2+a+a1 1R R1 1+a+a0 0R R0 0+a+a11R R1 1 + +a+ammR Rmm其中:ai为R进制的数码,ai的取值范围为0,R-1; Ri为R进制数的位权。2.1 2.1 数值型数据在计算机中的表示数值型数据在计算机中的表示6【例2-1】写出十进制数1230.45的按权展开式。解解: : 1230.45=1103+2102+3101+0100 +410-1+510-2【例2-2】二进制数11011.01的按权展开式。解解: : 11011.01=124+123+022+121+120 +02-1+12-22.1 2.1 数值型数据在计算机中的表示数值型数据在

7、计算机中的表示71.1.常用数制常用数制计算机领域中常用的数制有4种: 二进制、八进制、十进制和十六进制。二进制是计算机中使用的基本数制,二进制数比十进制的运算规则简单得多。二进制仅使用两个数码0和1,只需要用两种不同的稳定状态(如高电位与低电位)来表示。1和0两个数码可以用来表示逻辑值“真”和逻辑值“假”,从而容易处理逻辑运算。如果采用十进制数,则需要用10种状态来表示每个数码,实现起来要困难很多。二进制仅使用两个数码,传输和处理时出错概率小,这使得计算机具有高的可靠性。2.1 2.1 数值型数据在计算机中的表示数值型数据在计算机中的表示8人们可以将熟悉的十进制数输入计算机,由计算机将其自动

8、转换成二进制数进行存储和处理,计算结果也会自动转换成十进制数输出,这给人们使用计算机带来极大的方便。由于二进制数的位数较多,不方便书写和阅读,所以常用十六进制数或八进制数表示二进制数。十六进制数的数码为0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F,其中AF分别代表1015。当给出一个数时就必须指明它属于哪一种数制。不同数制中的数在书写时,可以用下标或后缀来标识。例如,二进制数10110可以写成(10110)2或10110B;十六进制数2D5F可以写成(2D5F)16或2D5FH;十进制数123.45可以写成(123.45)10或123.45D,也可直接写成123.45。表表2

9、-12-1列出了列出了4 4种常用数制中的数码、基数、位权及后缀。种常用数制中的数码、基数、位权及后缀。2.1 2.1 数值型数据在计算机中的表示数值型数据在计算机中的表示93. 3. 不同数制之间数的相互转换不同数制之间数的相互转换(1) 非十进制数转换成十进制数非十进制数转换成十进制数的方法是非十进制数转换成十进制数的方法是: : 将非十进制数按权展开求和。【例2-3】将二进制数 (1101.1)2转换成十进制数。解解: : (1101.1)2=123+122+021+120+12-1 =8+4+0+1+0.5 =13.52.1 2.1 数值型数据在计算机中的表示数值型数据在计算机中的表示

10、10【例2-4】将八进制数(346)8转换成十进制数。解解: : (346)8=382+481+680=192+32+6=230【例2-5】将十六进制数(2A6.8)16转换成十进制数。解解: : (2A6.8)16=2162+10161+6160+816-1 =512+160+6+0.5 =678.5。2.1 2.1 数值型数据在计算机中的表示数值型数据在计算机中的表示11(2) 十进制数转换成非十进制数十进制数转换成非十进制数的方法是十进制数转换成非十进制数的方法是: : 整数部分的转换采用“除基取余法除基取余法”;小数部分的转换采用“乘基取整法乘基取整法”。【例2-6】将十进制数20转换

11、成二进制数。解解: : 采用“除基取余法”: 转换结果是: 20=10100B2.1 2.1 数值型数据在计算机中的表示数值型数据在计算机中的表示12【例2-7】将十进制数20.25转换成二进制数。解: 首先将整数部分20按上述方法转换为二进制数10100B;再将小数部分0.25连续乘以基数2,直到小数部分等于0为止。然后,将每次相乘所得到的数的整数部分按正序从左到右排列: 转换结果是转换结果是: 20.25=10100.01B。提示提示: : 不是所有的十进制小数都能用二进制小数来精确地表示。例如0.57,无论乘以多少个2,都不可能使小数部分成为0。此时,可根据精度的要求取适当的小数位数即可

12、。2.1 2.1 数值型数据在计算机中的表示数值型数据在计算机中的表示13(3) 非十进制数之间的相互转换八进制数转换成二进制数的方法是八进制数转换成二进制数的方法是: : 将每一位八进制数直接写成相应的3位二进制数。二制数转换成八进制数的方法是二制数转换成八进制数的方法是: : 以小数点为界,向左或向右将每3位二进制数分成一组,如果不足3位,则用0补足。然后,将每一组二进制数直接写成相应的1位八进制数。【例2-8】将八进制数(425.67)8转换成二进制数。解解: : (425.67)8=(100 010 101.110 111)2 【例2-9】将二进制数(10101111.01101)2转

13、换成八进制数。解解: : (10101111.01101)2=(010 101 111.011 010)2 =(257.32)82.1 2.1 数值型数据在计算机中的表示数值型数据在计算机中的表示14十六进制数转换成二进制数的方法是十六进制数转换成二进制数的方法是: : 将每一位十六进制数直接写成相应的4位二进制数。二进制数转换成十六进制数的方法是二进制数转换成十六进制数的方法是: : 以小数点为界,向左或向右将每4位二进制数分成一组,如果不足4位,则用0补足。然后,将每一组二进制数直接写成相应的1位十六进制数。【例2-10】将十六进制数(2C8)16转换成二进制数。解解: : (2C8) 1

14、6 =(0010 1100 1000) 2 =(1011001000) 2 【例2-11】将二进制数(1011001.11)2转换成十六进制数。解解: : (1011001.11)2=(0101 1001.1100)2 =(59.C) 162.1 2.1 数值型数据在计算机中的表示数值型数据在计算机中的表示15u 2.1.3 2.1.3 整数在计算机中的表示整数在计算机中的表示数值型数据是人类用来表示数据大小的数据,包括整数和实数两种类型。整型包括正整数1、2、3、n、,0(称为零),负整数-1、-2、-3、-n、,其中n为整数。整数是人类掌握的最基本的数学工具。在计算机中用二进制数来表示整数

15、,采用无符号(称为无符号整数)和有符号(称为有符号整数)两种形式。无符号整数只能表示正整数和0。有符号整数可以用来表示正整数、0和负整数。2.1 2.1 数值型数据在计算机中的表示数值型数据在计算机中的表示161. 1. 无符号整数的表示方法无符号整数的表示方法无符号整数的编码与其数值相同。因此,无符号整数只能表示正整数或0。【例2-12】假设二进制数“01001011”表示的是一个无符号整数,则该无符号整数的值是多少?解解: : 01001011(二进制数)=027+126+025+024+123+022+121+120=0+64+0+0+8+0+2+1=75所以,二进制数“01001011

16、”所代表的无符号整数的值是75。2.1 2.1 数值型数据在计算机中的表示数值型数据在计算机中的表示172. 2. 有符号整数的表示方法有符号整数的表示方法(1) 原码表示法将数的符号数码化,对于n位有符号整数,用最高的一个二进制位表示符号: 正数该位取0,负数该位取1。其余n-1位是数值位,存储数的绝对值,如果绝对值不足n-1位,则在左侧用0补齐。【例2-13】假设x=+1011011,y=-1011011,z=-10110(=-0010110),写出x、y和z的8位原码形式。解: x原=01011011 y原=11011011 z原=100101102.1 2.1 数值型数据在计算机中的表

17、示数值型数据在计算机中的表示18可以从另一个角度来理解原码。以n=8为例,其数值部分写成二进制形式,最多为7位。当要表示的整数x为正数时,其原码就是该数本身,第8位(符号位)补0;当x为负数时,第8位为1,等于该数的绝对值加上(10000000) 2 ,即127。所以,8位原码所能表示的整数范围为: -127x127。2.1 2.1 数值型数据在计算机中的表示数值型数据在计算机中的表示19原码表示法有如下特点原码表示法有如下特点: : l直观,与真值转换很方便。l进行乘、除运算方便。这是因为其数值部分保持了数据的原有形式,对数值部分进行乘或除运算就可得到积或商的数值部分,而积或商的符号位可由两

18、个数原码的符号位进行逻辑运算而得到。l进行加、减运算比较麻烦。例如加法,两个数相加需先判别符号位,若其不同,实际要做减法运算,这时需再判断绝对值的大小,用绝对值大的数减绝对值小的数,最后还要决定结果的符号位。主要原因是符号位不能参与运算。l原码有两个0: +0(00000000)和-0(10000000)。2.1 2.1 数值型数据在计算机中的表示数值型数据在计算机中的表示20(2) 补码表示法据统计,在所有的运算中,加、减运算要占到80以上,因此,能否方便地进行正、负数的加、减运算,直接关系到计算机的运行效率。一个非常重要的概念模模“模”是指一个计量系统的计数范围,如时钟等。例如,时钟的计量

19、范围是011,模=12。 “模”实质上是计量器产生“溢出”的量,它的值在计量器上表示不出来,计量器上只能表示出模的余数。任何有模的计量器,均可将减法运算转化为加法运算。任何有模的计量器,均可将减法运算转化为加法运算。2.1 2.1 数值型数据在计算机中的表示数值型数据在计算机中的表示21例如,假设当前时针指向10点,而准确时间是6点,调整时间可有以下两种拨法: 一种是倒拨4小时: 10-4=6;另一种是顺拨8小时: 10+8=12+6=6。在钟表上,12相当于0,超过12时,12就丢失了。这种运算称为按模运算按模运算。在以12为模的系统中,加8和减4效果是一样的,因此凡是减4运算,都可以用加8

20、运算来代替。所以,在以12为模的系统中,8和4互为补数,11和1,10和2,9和3,7和5,6和6也都互为补数,即相加等于模的两个数互为补补数数。2.1 2.1 数值型数据在计算机中的表示数值型数据在计算机中的表示22计算机也可以看成是一个计量机器,它也有一个计量范围,即都存在一个“模”。n位计算机,表示n位的计算机计量范围是02n-1,模=2n。设n=8,所能表示的最大数是11111111,若再加1成为100000000(9位),但因只有8位,最高位1自然丢失。又回了00000000,所以8位二进制系统的模为28=256。同样,在计算机中在计算机中也可以采用按模运算,可以将正数加负数(减法)

21、转化成正数加也可以采用按模运算,可以将正数加负数(减法)转化成正数加正数。正数。例如,要将+0001111(15)和-0001100(-12)相加(实际是要做减法),先将-0001100与模10000000(256)相加,得到11110100(-12+256=244),再拿原被加数0001111(15)和11110100(-12的补数)相加,得00000011(15+244=256+3=3),最高位的进位,即模丢失。2.1 2.1 数值型数据在计算机中的表示数值型数据在计算机中的表示23可见,在计算机中,将负数加模就可以转化成正数,使正数加负数转化成正数加正数。把补数用到计算机对数据的处理上,

22、就是补码。在计算机系统中,正数的补码就是它本身,符号位取0,即和原码相同,负数的补码是该负数加模的结果。补码的求法补码的求法: : 对正数,补码与原码相同。 对负数,由上面的规则求补码,需做减法,不方便。经推导可知,负数的补码等于其原码除符号位外按位“求反”(1变0,0变1),末位再加1。提示提示: : 由求补码的方法可以看出,对于补码,其符号位和原码的符号相同,也表示了真值的符号,即正数的符号位为0,负数的符号位为1。2.1 2.1 数值型数据在计算机中的表示数值型数据在计算机中的表示24【例2-14】在计算机中用1个字节如何表示75。解解: : 1个字节是8个二进制位。由于75是正整数,最

23、高的1位符号位为0,表示正数。剩下的7位数值位用来表示75的值。由例2-12可知,75的值为1001011。所以在计算机中,用1个字节表示75的格式为: 010010112.1 2.1 数值型数据在计算机中的表示数值型数据在计算机中的表示25【例2-15】在计算机中用1个字节如何表示-75。解解: : 1个字节是8个二进制位。由例2-12可知,75的值为1001011,所以,-75的原码为11001011,下面求-75的补码。 对后7位数值位1001011逐位取返,即0变1,1变0。 原值: 1001011 逐位取返: 0110100 在末位加1。 0110100 +0000001 01101

24、01所以在计算机中,用1个字节表示-75的格式为: 101101012.1 2.1 数值型数据在计算机中的表示数值型数据在计算机中的表示26补码的性质补码的性质: : lx+y补=x补+y补,即两数之和的补码等于各自补码的和。lx-y补=x补+-y补,即两数之差的补码等于被减数的补码与减数相反数的补码之和。lx补补=x原,即按求补的方法,对x补再求补一次,结果等于x原。2.1 2.1 数值型数据在计算机中的表示数值型数据在计算机中的表示27【例2-16】假设用8位表示有符号整数。已知X=107,Y=-41,求X+Y。解解: : X补=01101011 Y补=11010111 X+Y补=X补 +

25、 Y补 01101011 +11010111101000010因为计算机中运算器的位长是固定的8位,上述运算中产生的最高位进位自动丢掉,所以: X+Y补=01000010由于最高位为0,其值为正,即X+Y原=X+Y补。由于1000010的值为66,所以: X+Y的值为662.1 2.1 数值型数据在计算机中的表示数值型数据在计算机中的表示28【例2-17】假设用8位表示有符号整数。已知X=41,Y=107,求X-Y。解:X补=00101001 -Y补=-107补=10010101X-Y补= X补 + -Y补 00101001+10010101 10111110由于X-Y补的最高位为1,其值为负

26、,对X-Y补求补得X-Y原=11000010。由于最高位为1,是负数,1000010的值为66,所以:X-Y的值为-66。 表2-3是补码表示整数的范围。2.1 2.1 数值型数据在计算机中的表示数值型数据在计算机中的表示29u 2.1.4 2.1.4 实数在计算机中的表示实数在计算机中的表示实数可以用来表示连续的量。在实际运用中,实数经常被近似成一个有限小数,即保留小数点后n位,n为正整数。我们已经知道了如何在计算机中存储没有小数部分的数值数据。如果采用类似的格式来存实数,由于能够存储的小数位数非常有限,这对于实数来说,是远远不够的。因此,在计算机领域,一般采用浮点数的形式来近似地表示实数。

27、具体的说,在计算机中,表示一个实数的浮点数a是一个整数M乘以2的整数次幂E构成:其中:s为数值的符号,称为数符,M为数值的精度,称为尾数,指数E称为阶码。2.1 2.1 数值型数据在计算机中的表示数值型数据在计算机中的表示2EasM30每一个浮点数都包含数符、尾数和阶码三部分。最常用的浮点数格式之一就是IEEE754国际标准。IEEE754规定:l尾数M采用原码表示l尾数采用二进制的规格化方法 l阶码E用移码表示(即在真值上增加一个偏置值)由于同一个浮点数的表示不是唯一的,例如十进制数0.75可以表示成多种形式:11.02-21.12-10.11200.011210.001122 2.1 2.

28、1 数值型数据在计算机中的表示数值型数据在计算机中的表示因此,浮点数都采用二进制数的规格化格式。规格化浮点数的规定为: l尾数的最高有效位为1。l为了提高浮点数的表示数据精度,最高位不会被存储,只存储尾数的小数部分。31下表是IEEE754规定的32位和64位浮点数的格式和能够表示的数据范围。2.1 2.1 数值型数据在计算机中的表示数值型数据在计算机中的表示类类 型型二进制位数二进制位数移码移码表数范围表数范围数符数符(s s)阶码阶码(E E)尾数尾数(M M)总位数总位数 偏置值偏置值最小值最小值最大值最大值单精度浮单精度浮点数点数(floatfloat)1位8位23位32位1273.4

29、10383.41038双精度浮双精度浮点数点数(doubledouble)1位11位52位64位10231.7103081.71030832【例2-18】写出数值-0.75按IEEE754的单精度浮点数的存储格式。解:解:先将-0.75换成二进制并写成标准化形式:-0.75(10进制)=-0.11(2进制)= -1.12-1(2进制)下面确定s,M和E由于是负数,所以s=1;尾数1.1整数位的1被隐含,且M是23位,所以:M=00000000000000000000001;E移=E真值+127=-1+127=126(10进制)=01111110(2进制);所以,-0.75按IEEE754的单精

30、度浮点数的存储格式为: 2.1 2.1 数值型数据在计算机中的表示数值型数据在计算机中的表示33E移=E真值+127=-1+127=126(10进制)=01111110(2进制);所以,-0.75按IEEE754的单精度浮点数的存储格式为: 2.1 2.1 数值型数据在计算机中的表示数值型数据在计算机中的表示 101111110 00000000000000000000001数符阶 码尾 数342.2 2.2 非数值数据在计算机中的表示非数值数据在计算机中的表示u 2.2.1 2.2.1 字符型数据在计算机中的表示字符型数据在计算机中的表示1.1.字符字符字符型数据也是人们常用的基本数据。主要

31、包括计算机键盘上的英文字符、数字字符、各种标点符号等文本符号。当在键盘上输入一个文本符号时,每一个符号都会以一个二进制的形式存储在计算机中。为了在一台计算机上存储的字符也能够在另一台计算机上正常显示,就需要给这些字符进行统一编码。在世界范围内通用的字符编码标准是ASCIIASCII(American Standard Code for Information Interchange)码。352.2 2.2 非数值数据在计算机中的表示非数值数据在计算机中的表示ASCII码使用1个字节,最高位为0,使用0000000001111111为常用的128个字符编码。字符编码031以及127是不可打印字符

32、,字符编码32是空格。本书配套教材计算基础(C+语言实现)上机实习及习题集)的附录B中,列出了ASCII编码及对应的字符。虽然字符是以二进制的ASCII编码存储在计算机中的,我们经常用十进制和十六进制的形式来使用ASCII码。例如,字符G的ASCII码是71,意味着在计算机中用01000111来表示字符G,即G在计算机中以二进制序列01000111的形式被存储。362.2 2.2 非数值数据在计算机中的表示非数值数据在计算机中的表示2. 2. 汉字汉字计算机中汉字的表示也是必须采用二进制编码。根据应用目的的不同,汉字编码分为外码、交换码、机内码和字形码。(1)输入码输入码属于外码,是用来将汉字

33、输入到计算机中的一组键盘符号。目前常用的输入码有拼音码、五笔字型码、自然码、表形码、认知码、区位码和电报码等,一种好的编码应有编码规则简单、易学好记、操作方便、重码率低、输入速度快等优点,每个人可根据自己的需要进行选择。372.2 2.2 非数值数据在计算机中的表示非数值数据在计算机中的表示(2)国标码汉字交换码是指不同的具有汉字处理功能的计算机系统之间在交换汉字信息时所使用的代码标准。中国标准总局于1981年制定了中华人民共和国国家标准GB 231280信息交换用汉字编码字符集基本集,即国标码。该标准共收集常用汉字和符号7445个,其中一级汉字3755个,按拼音排序;二级汉字3008个,按部

34、首排序;还有图形符号682个。国标码使用两个字节来表示一个汉字或图形符号,每个字节与ASCII码一样,只是用低7位,即第8位为0。例如,“啊”的编码为3021H。382.2 2.2 非数值数据在计算机中的表示非数值数据在计算机中的表示由于汉字处理系统要和英文处理系统兼容,当ASCII和国标码同时出现在系统中时,会产生二义性。 例如,编码为3021H可以理解为中文“啊”,也可易理解为字符“0”和字符“!”的两个字符。因此,汉字的国标码需要经过适当的变换后,才能存储在计算机中。这就是汉字的机内码或内码。392.2 2.2 非数值数据在计算机中的表示非数值数据在计算机中的表示(3)机内码 常用的汉字

35、机内码是对汉字国标码加上8080H,使每一个字节的第8位都变成1。由于ASCII码的最高位是0,这样就不会再产生二义性了。例如,“啊”的机内码为国标码+8080H: 0011 00000010 0001=3021H+1000 00001000 0000=8080H 1011 00001010 0001=B0A1H每一个汉字和常用字符图形在计算机内部都用汉字机内码存储,在磁盘上记录它们也使用机内码。402.2 2.2 非数值数据在计算机中的表示非数值数据在计算机中的表示(4)字型码 汉字字型码又称汉字字模,用于在显示屏或打印机输出汉字。汉字字型码通常有两种表示方式: 点阵表示方式和矢量表示方式。

36、用点阵表示字型时,汉字字型码指的是这个汉字字型点阵的代码。根据输出汉字的要求不同,点阵的多少也不同。简易型汉字为1616点阵,提高型汉字为2424点阵,3232点阵,4848点阵等。点阵规模愈大,字型愈清晰美观,所占存储空间也愈大。矢量表示方式存储的是描述汉字字型的轮廓特征,当要输出汉字时,通过计算机的计算,由汉字字型描述生成所需大小和形状的汉字点阵。矢量化字型描述与最终文字显示的大小,分辨率无关,因此可以产生高质量的汉字输出。Windows中使用的TrueType技术就是汉字的矢量表示方式。412.2 2.2 非数值数据在计算机中的表示非数值数据在计算机中的表示3. 字符串字符串是指一串连续

37、的字符。例如,“Hello 李明”,“大家晚上好!”等。可采用两种方法在内存中存储字符串。表示字符串的一个常用方法是向量法。向量法是在内存使用一片连续的空间来存放字符或汉字的编码,字符串中逻辑上连续的字符在物理上也是连续的。内存的存储单元以字节为单位,所以,一个存储单元能够存储一个ASCII字符,两个存储单元能存储一个汉字。例如,“Hello 李明”在内存中的存储情况如下表所示。存储单元存储单元ii+1i+2i+3i+4i+5i+6 i+7i+8i+9编码编码(16进制)进制)486520C0EEC3F7代表的字符代表的字符Hello空格李明422.2 2.2 非数值数据在计算机中的表示非数值

38、数据在计算机中的表示u 2.2.2 2.2.2 逻辑型数据在计算机中的表示逻辑型数据在计算机中的表示逻辑型数据只有“逻辑真”和“逻辑假”两个值,根据在计算机中只存储0和1两个数码的特点,很容易表示逻辑数据。即用1来表示“逻辑真”,用0来表示“逻辑假”。因此,不需要为逻辑型数据进行特殊的编码。432.3 C+2.3 C+语言表示基本的数据类型语言表示基本的数据类型对于前面的基本数据类型,如整型、浮点型、字符型和逻辑型等,C+语言已预先解决了这些基本数据在计算机中如何表示、占用多少存储空间以及可以进行的操作等问题,程序员只需要以变量和常量的形式,就可以直接使用这些基本数据类型的数据来描述和处理自己

39、的问题。442.3 C+2.3 C+语言表示基本的数据类型语言表示基本的数据类型u 2.3.1 C+2.3.1 C+的基本数据类型的基本数据类型下表是C+提供的常用基本数据类型的关键字、占用的存储空间。以后使用时,要注意书中的提示。基本数据类型表示形式C+中相应的类型标识符占用空间(字节)逻辑型逻辑型bool1字符型字符型char1整型有符号整型short2int4无符号整型unsigned short2unsigned int4实型单精度浮点型float4双精度浮点型double8452.3 C+2.3 C+语言表示基本的数据类型语言表示基本的数据类型u 2.3.2 2.3.2 使用使用C+

40、C+基本的数据类型基本的数据类型在C+的程序中,以变量和常量的形式来使用基本的数据类型。1. 1. 常量常量常量常量是在程序运行过程中保持不变的数据。根据书写形式,可将常量分为直接常量和符号常量。直接常量就是通常所说的常数,在表达式中直接以常数的形式给出。(1) 整型直接常量,例如: 1000、-1000、0、123456L、54321U还可以0 x或0X开头表示十六进制整型常量,例如: 0 xFFFF、0 xD4AF、0X1000提示:提示:C+中默认的整型常量的数据类型是int型,所以长整型和无符号整型常量以字母L或l和字母U或u结尾。462.3 C+2.3 C+语言表示基本的数据类型语言

41、表示基本的数据类型(2) 浮点型直接常量 十进制数形式,例如: 3.1415、322345.34、5.8265、10.0、1.2345f 指数形式,例如: 1.25e6或1.25E6,它们都代表1.25106提示提示: : C+中默认的浮点型常量的数据类型是double型,所以float型常量以字母F或f结尾。 指数形式的浮点型常量字母E或e前面必须有数字,并且E或e后面的指数必须是整数。472.3 C+2.3 C+语言表示基本的数据类型语言表示基本的数据类型(3) 字符型直接常量在C+中,用一对单引号将字符括起来表示字符常量。其中单引号只是字符与其他部分的分隔符,不是字符的一部分。例如: a

42、 、A 、*、1、0 注意:注意:a和A是不同的字符常量;1和0是字符1和字符0,而不是数值。482.3 C+2.3 C+语言表示基本的数据类型语言表示基本的数据类型(4) 字符串型直接常量在C+中,字符串常量的表示方法是用一对双引号将字符串括起来。其中的双引号同样是分隔符,不是字符串的一部分。C+字符集中的字符和其他字符,以及汉字和中文标点符号等,都可以出现在字符串中。例如: Hello 李明 大家晚上好!提示: 在C+中,存储字符串常量采用的是向量法。为了能够识别字符串结束位置,C+系统会在字符串的末尾自动添加一个ASCII编码为00H的字符(也称空字符或0)作为字符串的结束符,所以每个字

43、符串的存储长度总是比其实际长度(字符个数)多1。492.3 C+2.3 C+语言表示基本的数据类型语言表示基本的数据类型(5) 逻辑型直接常量C+中的逻辑型也只有两个值: true和false,它们分别表示“逻辑真”和“逻辑假”。(6) 符号常量符号常量,也称const常量,是用来表示一个常量的标识符。定义const常量的语法格式为: const =;例如: const double PI=3.1415926;const double PI=3.1415926;提示提示: : 在程序中使用符号常量可以提高程序的可读性和可维护性。例如将数值计算中经常使用的一些参数定义为符号常量,当需要改变参数数

44、值时,只需要更改符号常量的定义语句就行了。 在编程时,无论是符号常量还是后面将要介绍的变量,都必须“先定义,后使用先定义,后使用”。502.3 C+2.3 C+语言表示基本的数据类型语言表示基本的数据类型2. 2. 变量变量变量是在程序运行过程中可以发生变化的数据。通过变量的引入,可以简化程序员直接使用内存地址来操作数据的工作。用变量来存储程序中需要处理的数据,可在程序中根据需要随时改变变量的值,所以比常量更灵活。应用程序中变量的使用远远多于常量。 变量的定义变量必须“先定义,后使用先定义,后使用”。C+中定义变量的语法格式为: , , , ;例如:int length; double len

45、gth, width, height;char c1, c2, c3;long i, j, k;512.3 C+2.3 C+语言表示基本的数据类型语言表示基本的数据类型 变量的初始化在定义变量的同时可以为其赋一个初值,称为变量初始化。在C+中,变量初始化有两种形式,使用赋值运算符或使用圆括号。例如:int num=100; int num=100; / 定义整型变量num,初值为100 char c1=0 ; char c1=0 ; / 定义字符型变量c1,初值为字符0double x(16578.543);double x(16578.543); / 定义双精度浮点型变量x,且初值为1657

46、8.543int i, j, total(0); int i, j, total(0); / 定义整型变量i、j、total,且变量total的初值为0522.4 2.4 基本数据的处理基本数据的处理对于基本数据,可以通过运算符组成相应的表达式,实现对数据的处理。常用的基本运算包括算数运算、关系运算、逻辑运算以及这些运算的组合。C+语言提供了丰富的运算符,绝大部分运算符的含义与数学上各类运算符的含义相同。学习了C+提供的基本运算符和表达式后,就可以直接使用它们来设计求解问题的算法、编写C+程序、实现问题的求解了。532.4 2.4 基本数据的处理基本数据的处理u 2.4.1 2.4.1 算术运

47、算符与算术表达式算术运算符与算术表达式C+语言中支持的算术运算符及算数表达式如下表所示。假设已经定义了变量:int m=10, n=5; double x=2.5, y=1.3;int m=10, n=5;int m=10, n=5;double x=2.5, y=1.3;double x=2.5, y=1.3;运算符运算符含含 义义功功 能能举例举例运算结果运算结果+加法两个数相加m+515-减法两个数相减x-y0.8*乘法两个数相乘2*n10/除法两个数相除m/n2%模运算求余数m%31+先增1变量自身加1,表达式的值与变量的值相同+nn的值为6,表达式“+n”的值为6-先减1变量自身减1

48、,表达式的值与变量的值相同-mm的值为9,表达式“-m”的值为9542.3 C+2.3 C+语言表示基本的数据类型语言表示基本的数据类型提示提示: : 两个整数相除,商为整数,小数部分全部舍去,不进行四舍五入。例如,1/3的结果为0,5/3结果为1。求余运算要求两个操作数都必须是整型。例如,10%3的余数是1,-10%3的余数是-1。+和-运算符都有前缀和后缀两种形式,都是对变量自身加1或减1,但前缀和后缀运算符都是有副作用的运算符,当出现在表达式中,表达式的值会有所不同。请参考2.5.4节内容。552.3 C+2.3 C+语言表示基本的数据类型语言表示基本的数据类型u 2.4.2 2.4.2

49、 赋值运算符与赋值表达式赋值运算符与赋值表达式在C+中使用赋值运算符= =来实现赋值运算。由赋值运算符构成的赋值表达式的一般形式为: = 该表达式的含义是: 首先计算赋值运算符右面的值,然后将值赋给左面的变量。可见,赋值表达式具有计算和赋值双重功能。除了赋值运算符=外,C+还提供了10种复合赋值运算符。提示:提示:赋值运算符“=”不是数学上的等号。562.3 C+2.3 C+语言表示基本的数据类型语言表示基本的数据类型【例2-19】已知一个圆的半径是5cm,计算这个圆的周长和面积。问题求解思路问题求解思路: : 计算圆的周长和面积的公式是: 2r 和r2。本例r=5,直接带入公式即可完成问题求

50、解,使用C+的cout将结果输出到屏幕上。#includeusing namespace std;int main() const double PI=3.14;/ 用const定义符号常量PIcout圆的周长是: 2*3.14*5endl; /使用直接常量2、3.14和5cout圆的面积是: PI*5*5endl; /使用直接常量5和符号常量PIreturn 0;572.3 C+2.3 C+语言表示基本的数据类型语言表示基本的数据类型【例2-20】计算任意一个圆的周长和面积。问题求解思路问题求解思路: : 计算圆的周长和面积的公式是: 2r和r2。由于是任意圆,所以在程序中可定义一个变量r,用来接收和存储用户从键盘输入的圆的半径。然后利用公式计算并输出圆的周长和面积。/testVariable.cpp#includeusing namespace s

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论