您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 咨询培训 > 第2章基本数据的表示与处理.
《计算基础——C++语言实现》在计算机中,所有的数据和指令都采用二进制形式存储。计算机中存储的数据分为两大类:数值数据和非数值数据。数值数据能够表示数值的大小,非数值数据则是字符、图形、图像、声音等非数值信息的数字化表示。因此,在计算机中存储的同一个二进制数,在不同的应用场景下,会有不同的含义。人类使用计算机求解问题,就是对计算机中存储的数据进行加工处理,得到新的数据,即获得了新的信息,得到了问题的解。本章介绍了二进制数及几种基本数据类型的二进制数据表示方法,包括十进制数转换成二进制数的方法,整数、实数、字符和逻辑型数据的二进制表示法等;还介绍了如何通过C++语言实现这些基本数据类型在计算机中的存储,以及对这些基本数据类型的数据进行处理的方法。第2章基本数据的表示与处理22.1.1数据的单位1.位计算机中最小的数据单位是二进制的一个数位,简称位(bit),译音为“比特”。一个二进制位可以表示0和1两种状态,即21种状态,所以,n个二进制位可以表示2n种状态。位数越多,所能表示的状态就越多,也就能够表示更多的数据或信息。2.1数值型数据在计算机中的表示32.字节8位为一个字节(byte),译音为“拜特”,记作B。字节是计算机中用来表示存储空间大小的最基本的容量单位。表示更多的存储容量经常使用KB(210B)、MB(220B)、GB(230B)和TB(240B)等单位。3.字字(word)是计算机一次能够存储和处理的二进制位的长度。所谓的64位计算机,含义是该计算机的字长是64个二进制位,即每一个字由8个字节组成。2.1数值型数据在计算机中的表示42.1.2数制1.数制数制就是用一组固定的数码和一套统一的规则来表示数值的方法。例如,人们最熟悉的十进制,使用固定的10个数码(0、1、2、3、4、5、6、7、8、9)并按照“逢十进一”的规则来表示数值;再如,在计算机中使用的二进制数,使用两个固定数码(0和1),计数规则为“逢二进一”。在一种数制中所使用的数码的个数称为该数制的基数。可见十进制的基数为10;二进制的基数为2。每一种数制中最小的数码都是0,而最大的数码比基数小1。2.1数值型数据在计算机中的表示5十进制数1111.11中有6个数码1,它们所表示的值从左到右依次是1000、100、10、1、0.1和0.01。该数可以表示为按权展开的形式:1111.11=1×103+1×102+1×101+1×100+1×10-1+1×10-2因此,任意一个具有n位整数和m位小数的R进制数N的按权展开式为:(N)R=an–1×Rn–1+an–2×Rn–2+…+a2×R2+a1×R1+a0×R0+a–1×R–1+…+a–m×R–m其中:ai为R进制的数码,ai的取值范围为[0,R-1];Ri为R进制数的位权。2.1数值型数据在计算机中的表示6【例2-1】写出十进制数1230.45的按权展开式。解:1230.45=1×103+2×102+3×101+0×100+4×10-1+5×10-2【例2-2】二进制数11011.01的按权展开式。解:11011.01=1×24+1×23+0×22+1×21+1×20+0×2-1+1×2-22.1数值型数据在计算机中的表示71.常用数制计算机领域中常用的数制有4种:二进制、八进制、十进制和十六进制。二进制是计算机中使用的基本数制,二进制数比十进制的运算规则简单得多。二进制仅使用两个数码0和1,只需要用两种不同的稳定状态(如高电位与低电位)来表示。1和0两个数码可以用来表示逻辑值“真”和逻辑值“假”,从而容易处理逻辑运算。如果采用十进制数,则需要用10种状态来表示每个数码,实现起来要困难很多。二进制仅使用两个数码,传输和处理时出错概率小,这使得计算机具有高的可靠性。2.1数值型数据在计算机中的表示8人们可以将熟悉的十进制数输入计算机,由计算机将其自动转换成二进制数进行存储和处理,计算结果也会自动转换成十进制数输出,这给人们使用计算机带来极大的方便。由于二进制数的位数较多,不方便书写和阅读,所以常用十六进制数或八进制数表示二进制数。十六进制数的数码为0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F,其中A~F分别代表10~15。当给出一个数时就必须指明它属于哪一种数制。不同数制中的数在书写时,可以用下标或后缀来标识。例如,二进制数10110可以写成(10110)2或10110B;十六进制数2D5F可以写成(2D5F)16或2D5FH;十进制数123.45可以写成(123.45)10或123.45D,也可直接写成123.45。表2-1列出了4种常用数制中的数码、基数、位权及后缀。2.1数值型数据在计算机中的表示93.不同数制之间数的相互转换(1)非十进制数转换成十进制数非十进制数转换成十进制数的方法是:将非十进制数按权展开求和。【例2-3】将二进制数(1101.1)2转换成十进制数。解:(1101.1)2=1×23+1×22+0×21+1×20+1×2-1=8+4+0+1+0.5=13.52.1数值型数据在计算机中的表示10【例2-4】将八进制数(346)8转换成十进制数。解:(346)8=3×82+4×81+6×80=192+32+6=230【例2-5】将十六进制数(2A6.8)16转换成十进制数。解:(2A6.8)16=2×162+10×161+6×160+8×16-1=512+160+6+0.5=678.5。2.1数值型数据在计算机中的表示11(2)十进制数转换成非十进制数十进制数转换成非十进制数的方法是:整数部分的转换采用“除基取余法”;小数部分的转换采用“乘基取整法”。【例2-6】将十进制数20转换成二进制数。解:采用“除基取余法”:转换结果是:20=10100B2.1数值型数据在计算机中的表示202222210余05余02余11余00余1取余:1010012【例2-7】将十进制数20.25转换成二进制数。解:首先将整数部分20按上述方法转换为二进制数10100B;再将小数部分0.25连续乘以基数2,直到小数部分等于0为止。然后,将每次相乘所得到的数的整数部分按正序从左到右排列:转换结果是:20.25=10100.01B。提示:不是所有的十进制小数都能用二进制小数来精确地表示。例如0.57,无论乘以多少个2,都不可能使小数部分成为0。此时,可根据精度的要求取适当的小数位数即可。2.1数值型数据在计算机中的表示0.25整数×20.50×201.001取整:0113(3)非十进制数之间的相互转换八进制数转换成二进制数的方法是:将每一位八进制数直接写成相应的3位二进制数。二制数转换成八进制数的方法是:以小数点为界,向左或向右将每3位二进制数分成一组,如果不足3位,则用0补足。然后,将每一组二进制数直接写成相应的1位八进制数。【例2-8】将八进制数(425.67)8转换成二进制数。解:(425.67)8=(100010101.110111)2【例2-9】将二进制数(10101111.01101)2转换成八进制数。解:(10101111.01101)2=(010101111.011010)2=(257.32)82.1数值型数据在计算机中的表示14十六进制数转换成二进制数的方法是:将每一位十六进制数直接写成相应的4位二进制数。二进制数转换成十六进制数的方法是:以小数点为界,向左或向右将每4位二进制数分成一组,如果不足4位,则用0补足。然后,将每一组二进制数直接写成相应的1位十六进制数。【例2-10】将十六进制数(2C8)16转换成二进制数。解:(2C8)16=(001011001000)2=(1011001000)2【例2-11】将二进制数(1011001.11)2转换成十六进制数。解:(1011001.11)2=(01011001.1100)2=(59.C)162.1数值型数据在计算机中的表示152.1.3整数在计算机中的表示数值型数据是人类用来表示数据大小的数据,包括整数和实数两种类型。整型包括正整数1、2、3、…、n、…,0(称为零),负整数-1、-2、-3、…、-n、…,其中n为整数。整数是人类掌握的最基本的数学工具。在计算机中用二进制数来表示整数,采用无符号(称为无符号整数)和有符号(称为有符号整数)两种形式。无符号整数只能表示正整数和0。有符号整数可以用来表示正整数、0和负整数。2.1数值型数据在计算机中的表示161.无符号整数的表示方法无符号整数的编码与其数值相同。因此,无符号整数只能表示正整数或0。【例2-12】假设二进制数“01001011”表示的是一个无符号整数,则该无符号整数的值是多少?解:01001011(二进制数)=0×27+1×26+0×25+0×24+1×23+0×22+1×21+1×20=0+64+0+0+8+0+2+1=75所以,二进制数“01001011”所代表的无符号整数的值是75。2.1数值型数据在计算机中的表示172.有符号整数的表示方法(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数值型数据在计算机中的表示18可以从另一个角度来理解原码。以n=8为例,其数值部分写成二进制形式,最多为7位。当要表示的整数x为正数时,其原码就是该数本身,第8位(符号位)补0;当x为负数时,第8位为1,等于该数的绝对值加上(10000000)2,即127。所以,8位原码所能表示的整数范围为:-127≤x≤127。2.1数值型数据在计算机中的表示19原码表示法有如下特点:直观,与真值转换很方便。进行乘、除运算方便。这是因为其数值部分保持了数据的原有形式,对数值部分进行乘或除运算就可得到积或商的数值部分,而积或商的符号位可由两个数原码的符号位进行逻辑运算而得到。进行加、减运算比较麻烦。例如加法,两个数相加需先判别符号位,若其不同,实际要做减法运算,这时需再判断绝对值的大小,用绝对值大的数减绝对值小的数,最后还要决定结果的符号位。主要原因是符号位不能参与运算。原码有两个0:+0(00000000)和-0(10000000)。2.1数值型数据在计算机中的表示20(2)补码表示法据统计,在所有的运算中,加、减运算要占到80%以上,因此,能否方便地进行正、负数的加、减运算,直接关系到计算机的运行效率。一个非常重要的概念——模“模”是指一个计量系统的计数范围,如时钟等。例如,时钟的计量范围是0~11,模=12。“模”实质上是计量器产生“溢出”的量,它的值在计量器上表示不出来,计量器上只能表示出模的余数。任何有模的计量器,均可将减法运算转化为加法运算。2.1数值型数据在计算机中的表示21例如,假设当前时针指向10点,而准确时间是6点,调整时间可有以下两种拨法:一种是倒拨4小时:10-4=6;另一种是顺拨8小时:10+8=12+6=6。在钟表上,12相当于0,超过12时,12就丢失了。这种运算称为按模运算。在以12为模的系统中,加8和减4效果是一样的,因此凡是减4运算,都可以用加8运算来代替。所以,在以12为模的系统中,8和4互为补数,11和1,10和2,9和3,7和5,6和6也都互为补数,即相加等于模的两个数互为补数。2.1数值型数据在计算机中的表示22计算机也可以看成是一个计量机器,它也有一个计量范围,即都存在一个“模”。n位计算机,表示n位的计算机计量范围是0~2n-1,模=2n。设n=8,所能表示的最大数是11111111,若再加1成为100000000(9位),但因只有8位,最高位1自然丢失。又回了00000000,所以8位二进制系统的模为28=256。同样,在计算机中也可以采用按模运算,可以将正数
本文标题:第2章基本数据的表示与处理.
链接地址:https://www.777doc.com/doc-2154938 .html