1、第三章第三章 数据存储数据存储3.1 数据类型数据类型数据以不同的形式出现在计算机中。数据以不同的形式出现在计算机中。数据的不同类型数据的不同类型数据数据文本文本数字数字图像图像音频音频视频视频计算机内部数据计算机内部数据基本的容量单位基本的容量单位(1 1)位()位(bitbit)位是计算机存储数据的位是计算机存储数据的最小单位最小单位。二进制数据中的一个二进制数据中的一个,每个每个0 0或或1 1就是一个位。就是一个位。(2 2)字节()字节(ByteByte)字节是计算机数据存储和处理的最常用的字节是计算机数据存储和处理的最常用的基本单基本单位位。字节(。字节(ByteByte),简记为
2、),简记为B B。规定一个字节为规定一个字节为8 8位位,即,即1B=8bit1B=8bit,每个字节由,每个字节由8 8个二进制位组成。个二进制位组成。计算机的计算机的存储器存储器通常是通常是以多少字节来表示容量以多少字节来表示容量的。的。(3 3)字()字(WordWord)字字是计算机是计算机一次处理的二进制数一次处理的二进制数。一个字通常由。一个字通常由一个或若干个字节组成。一个或若干个字节组成。字长字长是计算机能是计算机能一次直接处理的二进制数据的位一次直接处理的二进制数据的位数数。(4 4)衡量数据容量的单位)衡量数据容量的单位KBKB,千字节,简称,千字节,简称K K,1KB=2
3、1KB=21010B=1024BB=1024B。MBMB,兆字节,简称,兆字节,简称MM,1MB=21MB=21010KB=2KB=22020B B。1GB1GB,吉字节,简称,吉字节,简称G G,1GB=21GB=21010MB=2MB=23030B B。1TB1TB,太字节,简称,太字节,简称T T,1TB=21TB=21010GB=2GB=24040B B。3.2.1 存储整数存储整数在计算机中参与运算的数有两大类:在计算机中参与运算的数有两大类:无符号无符号数数和和有符号数有符号数。无符号数无符号数无符号数是指无符号数是指没有符号的数没有符号的数,即,即非负整数非负整数。机器字长中的机
4、器字长中的全部数位全部数位均用来表示均用来表示整数值的大小整数值的大小,相当于相当于数的绝对值数的绝对值 。无符号数的表示范围无符号数的表示范围字长为字长为n n位的无符号数的表示范围是位的无符号数的表示范围是00(2 2n n-1-1)如,机器字长为如,机器字长为1616位,则无符号数的表示范围是位,则无符号数的表示范围是00(2 21616-1-1),即),即065535065535无符号数的无符号数的应用应用存储存储地址地址存储其他数据类型存储其他数据类型有符号数据的表示有符号数据的表示通常在绝对值前面加通常在绝对值前面加“+”、“-”符号来表示有符符号来表示有符号数。号数。在计算机中,
5、有符号数中的在计算机中,有符号数中的正负号正负号及小数中的及小数中的小小数点数点都以二进制形式表示。都以二进制形式表示。数的符号数值化数的符号数值化在计算机中,有符号数的符号同样用在计算机中,有符号数的符号同样用0 0和和1 1表示。表示。在计算机中,数的在计算机中,数的最高位最高位定义为定义为符号位符号位,用,用“0 0”表示正数表示正数,用,用“1 1”表示负数表示负数。首先补充几个概念:2.机器数:机器数:计算机内部编码表示的数,称为机器数(机器码),即真值在机器中的表示。1.真值:真值:正负号加某进制数绝对值的形式,如+3,(-101101)2机器数和真值例:真值真值机器数机器数+52
6、=+0110100 0 0110100-52=-0110100 1 0110100符号位符号位数值位数值位机器数的表示形式机器数的表示形式在计算机中,机器数有三种表示方法:在计算机中,机器数有三种表示方法:原码原码、反码反码和和补码补码。引入三种编码的目的,主要是为了将引入三种编码的目的,主要是为了将减法运算转换减法运算转换为加法运算为加法运算,提高运算速度。,提高运算速度。原码原码机器数的最高位代表符号位,数值部分为真值的绝对机器数的最高位代表符号位,数值部分为真值的绝对值的一种表示方法。值的一种表示方法。原码表示规则原码表示规则符号位:符号位:0 0表示表示正数正数、1 1表示表示负数负数
7、。数值位:二进制数值位:二进制数的绝对值数的绝对值。1.符号加绝对值表示法(原码表示法)符号加绝对值表示法(原码表示法)符号位+绝对值。最高位表示符号:0为正,1为负表示范围:-(2n-1-1)(2n-1-1)存在溢出问题0000 00010000 0001 0010 0011 0100 0101 0110 0010 0011 0100 0101 0110 011101111000 10011000 1001 1010 1011 1100 1101 1110 1111 1010 1011 1100 1101 1110 111134567-0-1-2-3-4-5-6-7012例例3.4,3.5。
8、例例3.6,3.7。0 0的原码有的原码有2 2个个原码表示范围-(2n-1-1)(2n-1-1)如字长为8,则原码表示范围为 -27+1 27-1,即127+127。0的原码不唯一+0原 00000000-0原 10000000反码反码是对一个数按位求反。反码表示规则符号位:0表示正数,1表示负数。数值位:正数为这个数本身。负数为其绝对值各位求反。反码反码反码表示范围-(2n-1-1)(2n-1-1)如字长为8,则反码表示范围为-27+1 27-1,即127+127。0的反码不唯一+0反00000000-0反111111110000 00010000 0001 0010 0011 0100
9、0101 0110 0111 0010 0011 0100 0101 0110 01111000 10011000 1001 1010 1011 1100 1101 1110 1111 1010 1011 1100 1101 1110 1111 -7 -6 -5 -4 -3 -2 -1 -0规定字长的情况如规定了字长,若不满要求位数时,需在真值绝对值前补0,然后再按位求反,转换为反码。若字长为8,则 X=+1101 X反=00001101 X=-1101 X反=11110010反码转换为真值符号位为“0”,符号为正,数值位不变。符号位为“1”,符号为负,数值位按位取反。如:x反=1110010
10、0,则x=-0011011=-11011补码表示规则符号位:0表示正数,1表示负数。数值位:正数为这个数本身。负数为其绝对值各位求反,然后在最低位加1。以以n=4为例:可以求得图为例:可以求得图3-8。1000 1001 1010 1011 1100 1101 1110 11111000 1001 1010 1011 1100 1101 1110 11110000 00010000 0001 0010 0011 0100 0101 0110 0111 0010 0011 0100 0101 0110 0111-5-4-3-2-101234567-8-7-6最高位表示符号:最高位表示符号:0为正
11、,为正,1为负为负表示范围:表示范围:-2n-1(2n-1-1)0 0的补码只有的补码只有1 1个个补码表示范围-2n-1(2n-1-1)如字长为8,则补码表示范围为-27 27-1,即-128+127。0的补码唯一0补+0补-0补00000000补码转换为真值符号位为“0”,符号为正,数值位不变。符号位为“1”,符号为负,数值位按位取反,最低位加1。即再次求补。(或,数值位先减1,然后按位取反。)即:X反反X原,X补补X原 x补=11100100,则x=-0011100=-11100原码、反码和补码 真值真值原码原码 反码反码补码补码-0-0000 00001000 00001111 111
12、10000 0000+0+0000 00000000 00000000 00000000 0000+127+01111111 0111 11110111 11110111 1111-127-01111111 111111111000 00001000 0001-128-1000 0000 不存在不存在不存在不存在1000 0000在补码中用在补码中用-128代替了代替了-0,所以补码的表示范围为,所以补码的表示范围为-128到到0到到127共共256个个(这样使数的范围扩大了一个这样使数的范围扩大了一个)机机器器数数的的形形式式原码:原码:反码:反码:补码:补码:正数的原码正数的原码=符号位符
13、号位0+真值真值负数的原码负数的原码=符号位符号位1+|+|真值真值|正数的反码正数的反码=原码原码负数的反码负数的反码=符号位符号位1+|+|真值真值|按位取反按位取反正数的补码正数的补码=原码原码负数的补码负数的补码=符号位符号位1+|+|真值真值|按位取反按位取反再加再加1 1例例:假设假设X1+83,X2-76,字长为,字长为8。求。求X1、X2的原码、的原码、反码及补码。反码及补码。解:X1原X1反X1补01010011 X2原11001100X2反10110011X2补X反110110100练:练:假设假设X1+38,X2-38,字长为,字长为8。求。求X1、X2的原码、反码及补码
14、。的原码、反码及补码。定点数定点数定点数是指定点数是指小数点小数点的的位置固定不变位置固定不变。用定点表示法来表示实数,可能会存在一定的问用定点表示法来表示实数,可能会存在一定的问题。很大的整数或是小数部分的实数,不适合用定点题。很大的整数或是小数部分的实数,不适合用定点法表示。法表示。3.2.2 存储实数存储实数一、一、浮点表示法浮点表示法该方法允许小数点浮动。该方法允许小数点浮动。一个十进制实数都可以有以下几种不同的表示形式:一个十进制实数都可以有以下几种不同的表示形式:-34.62=-3462 -34.62=-34621010-2-2 =-0.3462-0.346210102 2 =-3
15、.462-3.46210101 1二进制实数也可以用上述几种不同的表示形式表示:二进制实数也可以用上述几种不同的表示形式表示:-10.01=-1001-10.01=-10012 2-2-2=-0.1001=-0.10012 22 2=-1.001=-1.0012 21 1浮点数符号符号位移量位移量定点数定点数一个数字的浮点表示法由一个数字的浮点表示法由3部分组成:符号、部分组成:符号、位移量、定点数。位移量、定点数。用记阶表示法表示数时,相同的数可以有许多种不用记阶表示法表示数时,相同的数可以有许多种不同的表示形式。同的表示形式。如:如:-0.1001-0.10012 22 2=-0.0100
16、1=-0.010012 23 3 =-0.001001=-0.0010012 24 4用浮点方法表示上述不同形式的数时,所需要的编用浮点方法表示上述不同形式的数时,所需要的编码长度是不相同的。码长度是不相同的。为了便于计算机中浮点数的运算,提高运算的精度,为了便于计算机中浮点数的运算,提高运算的精度,需要充分地利用尾数的有效数位,必须有一个统一需要充分地利用尾数的有效数位,必须有一个统一规范的表示规范的表示:浮点数的规格化浮点数的规格化表示。表示。二、规范化二、规范化1.1.为什么要规范化为什么要规范化?2.2.什么叫规范化浮点数什么叫规范化浮点数?为了使一个数的浮点表示是唯一的。浮点表示法在
17、小数点左边使用了唯一的非零数码,即:1.1.yyyyyyyyyy3.3.规范化浮点数的存储形式规范化浮点数的存储形式?规范化的浮点数存储:符号、指数、尾数。浮点数浮点数实数可以表示为:实数可以表示为:N=M N=M R R E E其中:其中:NN为为浮点数浮点数 E E和和MM都是都是带符号数带符号数 E E叫做叫做阶码阶码 MM叫做叫做尾数尾数 R R为浮点数阶码的底,与尾数的基数相同。为浮点数阶码的底,与尾数的基数相同。这样的表示方法称为记阶表示法。这样的表示方法称为记阶表示法。三、余码系统三、余码系统指数可以作为无符号数存储。偏移量的值是2m-1-1,是存储指数的位数。四、四、IEEE7
18、54标准标准1.IEEE754的浮点数格式的浮点数格式 在在IEEE754标准的浮点数中包含三个部分:符号位标准的浮点数中包含三个部分:符号位S,指数,指数E和尾数和尾数M。SE M符号位符号位S是浮点数尾是浮点数尾数数M的符号位,也是的符号位,也是整个浮点数的符号位。整个浮点数的符号位。浮点数的指数浮点数的指数E用余用余码码尾数用无符号数,规格化尾数为尾数用无符号数,规格化尾数为1.M(非(非0规格化尾数最高位必定规格化尾数最高位必定为为1),个位),个位1为隐含位。为隐含位。2.2.两种常用的两种常用的IEEE754 IEEE754 浮点数据格式浮点数据格式单精度和双精度单精度和双精度(1
19、)单精度格式(32位):S为1位,E为8位,M为23位 其中:指数E=(27-1)+e=127+e,e为真值偏移量为127,又称为余127码(2)双精度格式(64位):S为1位,E为11位,M为52位 其中:指数E=(210-1)+e=1023+e,e为真值偏移量为1023,又称为余1023码18Excess_12723符号符号指数指数尾数尾数111Excess_102352符号符号指数指数尾数尾数3.IEEE754标准浮点数的存储标准浮点数的存储实数存储为IEEE标准浮点数格式的步骤:判别实数符号,在符号位S中存储0或1;将实数转换为二进制数;规范化;例例3.23 3.243.23 3.24
20、确定指数E和尾数M;连接符号S,指数E和尾数M。4.IEEE754标准浮点数的还原标准浮点数的还原IEEE标准浮点数格式还原为实数的步骤:找到符号S,指数E,尾数M的值;若S=0,符号为正;否则为负;找到位移量e=E-127(1023);对尾数去规范化,得到一个二进制数;将二进制数转换为十进制;在十进制前加上符号。例例3.263.26说明:说明:1、存在溢出现象。、存在溢出现象。2、0的存储:符号,指数和尾数都设为的存储:符号,指数和尾数都设为0。3、截断误差。、截断误差。练练1:将下列数转换成:将下列数转换成32位的位的IEEE形式形式 7.75 -0.375练练2:将下列:将下列32位的位
21、的IEEE形式转换成十进制数形式转换成十进制数 110001011101000000000000000000003.3 存储文本存储文本文本:文本:要以数字化的形式表示文本,必须表示在文本中可能出现的每个字符;要表示的字符数是有限的,最常用的方法就是给每一个字符分配一个二进制字符;字符集就是字符和表示它们的代码的清单。在计算机制造商就关于使用哪种字符集达成一致后,文本数据的处理变得容易多了。下面介绍常用的代码。下面介绍常用的代码。代码:代码:被设计用于表示文本符号的位模式集合。一、一、ASCII使用最广泛的字符编码是美国信息交换标准字符码,即ASCII码。ASCII码选用了128个常用字符,可
22、用7位二进制代码的编码表示。American Standard Code for Information InterchangeASCII字符编码表 b6 b5 b4 b3 b2 b1 b00000010100111001011101110000NULDLESPace0Pp0001SOHDC1!1AQaq0010STXDC2“2BRbr0011ETXDC3#3CScs0100EOTDC4$4DTdt0101ENQNAK%5EUeu0110ACKSYN&6FVfv0111DELETB7GWgw1000BSCAN(8HXhx1001HTEM)9IYiy1010LFSUB*:JZjz1011VTES
23、C+;Kk1100FFFS,Nn1111SIUS/?O_oDEL0-32及127(共34个)是控制字符和通信专用符。33-126是字符。48-57为0到9十个阿拉伯数字。65-90为26个大写英文字母。97-122为26个小写英文字母。在在ASCIIASCII码中如何表示码中如何表示“BYTE”BYTE”单词单词ASCII码的练习:(1)英文大写字母D的ASCII码值为44H,英文大写字母F的ASCII码值为十进制数 。68D70(2)下列字符中,ASCII码值最大的一个是 。A、a B、9 C、空格 D、ZA(3)课后题14。二、二、UnicodeUnicode(统一码、万国码、单一码)是一
24、种在计算机上使用的采用32位的字符编码。它为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言、跨平台进行文本转换、处理的要求。3.4 存储音频存储音频音频:音频:声音或音乐;与数字和文本的存储不同,数字和文字都是可数的;随时间变化,是模拟数据的例子,数值有无限个;所以在存储时需要采样。一、采样一、采样在模拟信号上选择有限的数值点(等时间间隔)来度量他们的值,并记录下来。二、量化二、量化量化:量化:指的是将样本的值截取为最接近的整数值的一种过程。如:实际值是17.2,就可截取为17;实际值是17.8,就可截取为18.三、编码三、编码编码:编码:指的是将量化的样本值编码成位模式。位
25、深度:位深度:每个样本所分配的二进制的位数。位率位率=位深度位深度每秒样本数每秒样本数.(即每秒的音频存即每秒的音频存储的位数储的位数)存储音频存储音频采样采样量化量化编码编码音频数据变成位模式的步骤音频数据变成位模式的步骤1)对模拟信号进行采样(采样就是以相等的间隔来测量信号的值)2)量化采样值(量化就是给采样值分配值)3)将量化值转换成位模式4)存储位模式音频编码的主流标准音频编码的主流标准MP3 MP3是一种音频压缩技术,其全称是动态影像专家压缩标准音频层面3(Moving Picture Experts Group Audio Layer III),简称为MP3。每秒44100个样本以
26、及每样本16位,再使用人耳无法识别的信息压缩方法进行压缩.3.5 存储图像存储图像存储图像存储图像图像图像光栅图(位图)光栅图(位图)矢量图矢量图一、光栅图一、光栅图又叫位图、点阵图、像素图;最小单位由像素构成图,每个像素有自己的颜色;适合存储图形不规则,且颜色丰富没有规律的图,比如照相,扫描;电脑中的BMP,GIF,JPEG等图片格式均是光栅图。光栅图的缺点:放大光栅图像看上去很粗糙。二、矢量图二、矢量图又叫向量图;不存储每位像素的位模式;将图像分解成几何图形的组合,每个图形由数学公式表达;矢量图由定义如何绘制这些形状的一系列命令构成;适合存储像标志、线路图、设计图等;放大不失真、占空间小,比如很多flash动画就是矢量绘图。3.6 存储视频存储视频视频:视频:图像在时间上的表示(称为帧)。所以视频的存储同存储图像,只不过是连续不断的图像而已,可以认为是很多图片。