第三章计算机中数据表示与存储2020/5/2813.1位置计数制3.2负数在计算机中的编码3.3实数在计算机中的表示3.4十进数的编码3.5字符的编码3.6模拟信号编码的一般过程3.7数据压缩第三章计算机中数据表示与存储2020/5/282•各种数据在计算机中如何表示–计算机的基本功能是对数据进行计算和处理加工。冯·诺依曼体系结构的基础是二进制,计算机中只能直接处理二值的数字数据。因此,现实世界的各种数据都要转换为二进制代码,才可以输入到计算机中进行存储和处理。按照一定规则,用二进制代码表示具体数据就称为编码。2020/5/2833.1位置计数制–位置计数制是一种数的表示方法,特点是:同样的数字出现在数的不同位置,所代表的值是不同的。–位置计数制也称为进位计数制。每一位计满若干个数后就会进位。常用的进位计数制的数有十进制数、二进制数、八进制数和十六进制数。2020/5/2843.1位置计数制•数的按权展开式•各种进位制的数•不同数制的转换•基本的二进制运算2020/5/285•数的按权展开式–每一个进位计数制的数,都可以用按权展开式来表示数码权基数0.0060.050.7420300106105107104102103(324.756)756.32432101210可以展开为:如十进制数2020/5/286•各种进位制的数数制基数位权运算规则尾符十进制0~910n逢十进一D或10二进制0~12n逢二进一B或2八进制0~78n逢八进一O或8十六进制0~9、A~F16n逢十六进一H或162020/5/287•各种进位制的数(续)10122101221012216816D1631648.D43848185878114.1752121212021)11.101()(例如:十六进制数)(例如:八进制数例如:二进制数2020/5/288•不同数制的转换–其他进位制的数转换成十进制数Ø将其他进制的数写成按权展开式;Ø将按权展开式在十进制中进行计算,得到的结果就是等值的十进制数。2020/5/289•不同数制的转换—其他进位制的数转换成十进制数–例3-2将十六进制数7AC.1B转换成十进制数。的等值十进制数是即:十六进制数)(制的形式,并计算:把按权展开式写为十进)(解:写为按权展开式:8751964.10546B1AC.76875)(1964.105404296875.00625.0121601792161116116121610167B1.AC716B16116C16A167B1.AC7102-1012162-1012162020/5/2810•十进制转换为其他进制——整数部分–十进制整数转换为其他进制整数的方法是:除基取余,逆序读数。Ø将十进制数除以另一进制的基数,保留余数。Ø当上一次的商不等于0时,将商再除以基数,保留余数。直到商等于0,除法停止。Ø后得到的余数,先读取;先得到的余数,后读取。这样排列的余数就是转换结果。2020/5/2811•十进制转换为其他进制——整数部分–例3-3:将十进制数28转换为二进制数。Ø解:二进制的基数是2,具体方法就是:除2取余,逆序读数。转换过程如下:即:十进制数28的等值二进制数是(11100)22020/5/2812•十进制转换为其他进制——小数部分–十进制小数转换为其他进制小数的方法是:乘基取整,顺序读数。Ø将十进制小数乘以另一进制的基数,保留乘积的整数部分。Ø若乘积的小数部分不等于0,将小数再乘以另一进制的基数,保留乘积的整数。直到乘积的小数部分等于0,或者转换后的精度已够时,乘法停止。Ø先得到的整数,先读取;后得到的整数,后读取。这样排列的整数部分就是转换结果。2020/5/2813•十进制转换为其他进制——小数部分–例3-5:将十进制小数0.125转换为二进制小数。Ø解:二进制的基数是2,具体方法就是:乘2取整,顺序读数。转换过程如下:即:十进制小数0.125的等值二进制小数是(0.001)22020/5/2814•二进制数和八进制数的转换–八进制转化为二进制Ø一个八进制数可以写为3位二进制数。只要将八进制数中的每一位转换为3位二进制数即可,首尾的0可以不写。Ø例3-8将八进制数315.26转换成二进制数。解:(315.26)8=(011001101.010110)2=(11001101.01011)22020/5/2815•二进制数和八进制数的转换–二进制转化为八进制Ø从小数点开始,向左、右两边每3位二进制数分成一组,高位不足3位在高位补0,低位不足3位在低位补0。将每组二进制数写为等值的八进制数,即可完成转换。Ø例3-9将二进制数1011010111.1011转换成八进制数。(高位补0)001011010111.101100(低位补0)1327.542020/5/2816•二进制数和十六进制数的转换–十六进制转化为二进制Ø一个十六进制数可以写为4位二进制数。只要将十六进制数中的每一位转换为4位二进制数即可,首尾的0可以不写。Ø例3-10将十六进制数3A5.2E转换成二进制数解:(3A5.2E)16=(001110100101.00101110)2=(1110100101.0010111)22020/5/2817•二进制数和十六进制数的转换–二进制转化为十六进制Ø从小数点开始,向左、右两边每4位二进制数分成一组,高位不足4位在高位补0,低位不足4位在低位补0。将每组二进制数写为等值的十六进制数,即可完成转换。Ø例3-11将二进制数1011010111.101转换成十六进制数。(高位补0)001011010111.1010(低位补0)2D7.A即:(1011010111.101)2=(2D7.A)162020/5/2818•基本的二进制运算——算术运算加减乘除1+1=0(进位)1-1=01*1=11/1=11+0=11-0=11*0=00/1=00+1=10-1=1(借位)0*1=00+0=00-0=00*0=02020/5/2819•基本的二进制运算——算术运算例3-12计算:101.10+11.01解:101.10+11.011000.11结果是:101.10+11.01=1000.11例3-13计算:101.10*10.1101.10*10.110.110000.001011.01101.110结果是:101.10*10.1=1101.1102020/5/2820•基本的二进制运算——逻辑运算2020/5/28213.2负数在计算机中的编码–原码–反码–补码–补码运算2020/5/2822•原码–机器数的最高位用作符号位,0表示正数,1表示负数;其余各位为数值位,数值位是数的绝对值的二进制表示。–0的原码有两种表示:00000000或者10000000。–原码表示法简单,但是计算时并不方便。2020/5/2823•反码–反码的编码规则:Ø正数的反码:与正数原码相同Ø负数的反码:是这个负数绝对值的原码的“按位取反”例如:(+5)反=00000101(-5)反=11111010–反码加法规则:Ø将两个数变为反码,直接相加;Ø将进位加到和的最低位,就是和的反码2020/5/2824•补码–补码的编码原则:Ø正数的补码:与原码相同Ø负数的补码:在其对应的反码最低位加1;或者是对应原码的数值位“求反加1”0的补码只有一种形式:00000000–可以正确进行加减运算2020/5/2825•补码运算–补码运算定律:(x+y)补=(x)补+(y)补–补码加法的规则如下:Ø将两个加数都变成补码;Ø对两个补码直接相加;Ø如果得到的和没有溢出,就是两数相加和的补码–判断是否溢出的方法是:若两个正数补码和的符号位为1,或者两个负数补码和的符号位为0,都表明结果出现了溢出。2020/5/2826•补码运算–例3-14用补码加法计算:-61+(-33)-61=(10111101)原码=(11000011)补码-33=(10100001)原码=(11011111)补码也就是:(11000011)补码+(11011111)补码=(10100010)补码=(11011110)原码=(-94)102020/5/2827•补码运算–例3-15用补码加法计算:65+7065=(01000001)补70=(01000110)补求和结果,符号位为1。两个正数相加的和不可能是负数,说明结果产生了溢出。2020/5/28283.3实数在计算机中的表示–定点数–浮点数2020/5/2829•定点数–定点数是指小数点位置固定不变的数。Ø定点小数小数点位置固定在数的开头,那么定点小数就是纯小数。Ø定点整数小数点位置固定在数的末尾,那么定点数表示的是整数2020/5/2830•定点数——八位定点数定点小数定点整数2020/5/2831•浮点数–浮点数通过阶码和尾数来表示,如下图阶码和尾数都可正、可负,用阶符和尾符决定其正负。浮点数N=2阶码尾数2020/5/2832•浮点数–在尾数不变的情况下,阶码发生变化,小数点的位置就发生变化,所以称为“浮点数”。为了尽可能提高浮点数表示的精度,对于尾数要进行规格化。–IEEE754标准浮点数float和双精度数double。2020/5/28333.4十进制数的编码—BCD码十进制数8421BCD码十进制数8421BCD码012345670000000100100011010001010110011189101112131415100010010001000000010001000100100001001100010100000101012020/5/28343.5字符的编码–ASCII编码–汉字的编码–汉字处理过程–Unicode编码2020/5/2835•ASCII编码–ASCII编码已经成为一种国际标准,是一种7位的信息代码,表示127种字符和符号,包括:Ø数字:0、1、2、3、4、5、6、7、8、9;Ø大小写英文字母:A、B、...、Z,a、b、...、z;Ø专用符号:+、-、*、/、_、空格(SP)等;Ø33个非打印字符:BEL(响铃)、LF(换行)、CR(回车)等。–扩展的ASCII码是把原来的7位码扩展成8位码2020/5/2836•标准ASCII码表d3d2d1d0位d6d5d4位0000010100111001011101110000000100100011010001010110011110001001101010111100110111101111NULSOHSTXETXEOTENQACKBELBSHTLFVTFFCRSOSiDLEDC1DC2DC3DC4NAKSYNETBCANEMSUBESCFSGSRSUSSP!“#$%&‘()*+,-.\0123456789:;=?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~DEL2020/5/2837扩展的ASCII码表2020/5/2838•汉字的编码–GB2312ØGB2312的汉字编码有三种形式:国标码、区位码和机内码–GBK码–GB18030-2000标准–Big5(大五码)Ø主要为香港与台湾使用,是一个繁体字编码。2020/5/2839•汉字处理过程–处理过程如下:输入码机器内码字形码–汉字的输入码:也称外码,是专门用来向计算机输入汉字的编码Ø音码:全拼编码、简单拼音编码、双拼编码Ø行码:五笔字型码–汉字的字形码:点阵存储、矢量存储2020/5/2840•Unicode编码–Unicode也是一种字符编码方法,是两字节的全编码,不过它是由国际组织设计,可以容纳全世界所有语言文字的编码方案2020/5/28413.6模拟信号编码的一般过程–除了数字、字符外,现代计算机还要处理各种多媒体数据,包括语音、图片、视频等。所有这些数据都是通过模拟信号表示的。模拟信号要能够