1、2018年7月5日,1,第三章 计算机中数据表示与存储,北京邮电大学信通院方莉E-mail: Tel:13501330293,2018年7月5日,2,第三章 计算机中数据表示与存储,计算机的基本功能是对数据进行计算和处理加工。计算机可以输入数据、处理数据、存储数据和输出数据。 数据是对客观事物的属性的描述,包括文字、数字、符号、声音、图形和图像等。本章将讨论各种数据在计算机中如何表示?,2018年7月5日,3,信息的概念,信息是用文字、数字、符号、声音、图形和图像等方式表示和传递的数据、知识和消息。在计算机中,都是用二进制来处理和存储信息的。所有的数值都要用二进制数表示;所有的字符也要用二进制
2、数表示;,2018年7月5日,4,计算机中信息的表示,在计算机内部,声、文、图统一用0、1表示,2018年7月5日,5,第三章 计算机中数据表示与存储,3.1 位置计数制3.2 负数在计算机中的编码3.3 实数在计算机中的表示3.4 十进制数的编码3.5 字符的编码3.6 模拟信号编码的一般过程3.7 数据压缩,2018年7月5日,6,第三章 计算机中数据表示与存储,3.1 位置计数制3.2 负数在计算机中的编码3.3 实数在计算机中的表示3.4 十进制数的编码3.5 字符的编码3.6 模拟信号编码的一般过程3.7 数据压缩,2018年7月5日,7,3.1.1 位置计数制的概念,数制:是指用一
3、组固定数字和一套统一的规则来表示数目的方法。位置计数制:同样的数字出现在数的不同位置,所代表的值是不同的。位置计数制也称为进位计数制。每一位计满若干个数后就会进位。常用的进位计数制的数有:十进制数、二进制数、八进制数和十六进制数。,2018年7月5日,8,3.1.1 位置计数制的概念,数码:指表示每一位数字可能使用的符号(di : 第i位的数字)。数码在数字中所占的位置叫数位i。基数:反映这个数制中使用的数字的数目,对于十进制,b等于10,对于二进制,b就是2; 。 位权 :任何一个数都是由一串数码表示的,每一位所表示的值除其本身的数值外,还与它所处的位置有关,由位置决定的值就叫权。对于十进制
4、,第i位的权值就是10i。,2018年7月5日,9,例如:十进制数54154.145,2018年7月5日,10,3.1.2 常用数制,2018年7月5日,11,二进制数,一个二进制数的特点:它只有二个数字符号,即:0、1。它是逢“二”进位的。 1 0 1 . 1 1第n位对应的权值为2n,计数制的基数为2;实际表示的数值十进制大小为: 101.11=122+021+120+12-1+12-2,第0位,第1位,第2位,第-1位,第-2位,2018年7月5日,12,莱布尼茨(1646-1716),德国伟大的数学家、物理学家、唯心主义哲学家。年,系统提出二进制的运算法则 。,1与0,一切数字的神奇渊
5、源。这是造物的秘密美妙的典范,因为,一切无非都來自上帝。,二进制的发明者莱布尼茨,德国图灵根著名德郭塔王宫图书馆保存着一份莱布尼茨珍贵的手稿,其标题:,2018年7月5日,13,计算机为何采用二进制?,可行性只有0,1两个数码,采用电子器件很容易物理上实现。 可靠性只有两种状态,在传输和处理时不容易出错,工作可靠,抗干扰能力强。 简易性二进制的运算法规简单,使得计算机的运算器结构简化,控制简单。 逻辑性0、1两种状态代表逻辑运算中的“假”和“真”,便于用逻辑代数作为工具研究逻辑线路。,2018年7月5日,14,二进制数、八进制数和十六进制数之间的对应关系,2018年7月5日,15,进位计数制,
6、不同进制的习惯书写形式:二进制:Binary Bin八进制:Octal Oct O十进制:Decimal Dec D十六进制:Hex Hex H例如:(101011)2 (101011)B (1234673)8 (1234673)O O2143(1973)10 (1973)D 1234(A46F)16 (A46F)H A46FH 0xA46F,2018年7月5日,16,3.1.3 数制的转换,不同数制的转换,三大类转换方法:1.非十进制转换为十进制的方法2.十进制转换为其他进制的方法3. 二数制、八进制、16进制之间的转换方法,2018年7月5日,17,3.1.3 数制的转换,1非十进制转换为
7、十进制按权展开求和,即各数位与相应位权值相乘以后再相加即为对应的十进制数。十进制数:由09数码组成,位权为10i二进制数:由0、1组成,位权为2i八进制数:由07组成,位权为8i十六进制数:由0F组成,位权为16i,2018年7月5日,18,非十进制转换为十进制,设J进制的数,n位整数,m位小数:(xn-1xn-2x1x0.x-1x-2x-m)J=xn-1Jn-1+xn-2Jn-2+x1J1+x0J0 +x-1J-1+x-2J-2+x-mJ-m,2018年7月5日,19,二进制数10110.101 = 124 +023 +122 +121+020+121+022+123 = 16 +0 +4
8、+ 2 + 0 + 0.5 +0 +0.125 = 22.625,十进制数1232.25 = 1 103 + 2102 +3101 + 2100 + 2101 + 5102,转换示例,2018年7月5日,20,十六进制数 1AF.C = 1 162 +A 161 + F 160 + C 161 = 1256 + 1016 + 15 + 120.0625 = 256 + 160 +15 + 0.75= 431.75,八进制数127.21 = 1 82 +281 + 780 + 281 + 182 = 64 + 16 + 7 + 0.25 + 0.15625 = 87.265625,转换示例,20
9、18年7月5日,21,十进制转换为非十进制,整数部分:除基取余,逆序读数。 除J取余,即整数部分不断除以J取余数,直到商为0为止,最先得到的余数为最低位,最后得到得余数为最高位。小数部分:乘基取整,顺序读数。 乘J取整,即小数部分不断乘以J取整数,直到积为0或达到有效精度为止,最先得到的整数为最高位(最靠近小数点),最后得到的整数为最低位。,2018年7月5日,22,整数部分除2取余,小数部分乘2取整,十化二,2018年7月5日,23,【例】100 (D) =,144,(O),除八取余倒序排列,十化八,2018年7月5日,24,64,(H),除16取余倒序排列,【例】 100 (D) =,十化
10、十六,2018年7月5日,25,八进制、十六进制与二进制的相互转换,每一个八进制数码对应三位二进制数。每一个十六进制数对应四位二进制数。例:(16 2)2C1D(H) 10 1100 0001 1101(B) 2 C 1 D例:( 8 2)17123(O) 1 111 001 010 011(B) 1 7 1 2 3,2018年7月5日,26,二进制转换为八进制、十六进制,整数部分:从右向左进行分组。 小数部分:从左向右进行分组,转化成八进制三位一组,不足补零。转化成十六进制四位一组,不足补零。,2018年7月5日,27,转化示例,11 0110 1110.1101 0100 B)=36E.D
11、4(H) 3 6 E . D 4 =36E.D1(H) 1 101 101 110.110 101(B)= 1556.65(O) 1 5 5 6 6 5 (0011 0110 1111 0111.1100 0100)2=(36F7.C4 )16,01不足4位后边补两个零变为0100 !,2018年7月5日,28,3.1.4 基本的二进制运算,算数运算:+ - ,+ 11.01,1000.11,101.10,2018年7月5日,29,示例,计算:101.10 + 11.01。解: 1 0 1 . 1 0 + 1 1 . 0 1 1 0 0 0 . 1 1 结果是:101.10 + 11.01 =
12、 1000.11,计算:101.10 * 10.1。 1 0 1 . 1 0 * 1 0 . 1 1 0 . 1 1 0 0 0 0 . 0 0 1 0 1 1 . 0 1 1 0 1 . 1 1 0 结果是:101.10 * 10.1 = 1101.110,2018年7月5日,30,二进制的逻辑运算,逻辑运算符:其它的表示:& 、(与) ! 、 (非) | 、+ (或) (异或),2018年7月5日,31,“与”运算,逻辑与真值表,与电路示意图,2018年7月5日,32,“或”运算,逻辑或真值表,或电路示意图,2018年7月5日,33,“非”运算,逻辑非真值表,非电路示意图,2018年7月5
13、日,34,3.1.5 数据存储的组织形式,位一个二进制代码称为一位,记为bit(读为比特)。计算机中最直接、最基本的操作就是对二进制位的操作。字节以8位二进制代码为一个单元存放在一起,称为一个字节,记为Byte。,2018年7月5日,35,3.1.5 数据存储的组织形式,字、字长CPU在单位时间内能一次处理的一组二进制数称为字(Word),这组二进制数的位数就是字长。常见的有8位、16位、32位、64位等。,2018年7月5日,36,3.1.5 数据存储的组织形式,地址 为了便于存放、查找和使用,每个存储单元必须有唯一的编号,称之为地址。通过地址可以找到数据所在的存储单元,读取或存入数据。,2
14、018年7月5日,37,第三章 计算机中数据表示与存储,3.1 位置计数制3.2 负数在计算机中的编码3.3 实数在计算机中的表示3.4 十进制数的编码3.5 字符的编码3.6 模拟信号编码的一般过程3.7 数据压缩,2018年7月5日,38,3.2 数值编码,计算机处理的数值有:带符号数:整数定点数:表示纯小数或整数,小数点位置固定浮点数:表示实数,小数点位置浮动变化,2018年7月5日,39,3.2 数值编码,计算机中常用的数据单位:位 bit:一位二进制数,取值只有0或1字节 Byte:8位二进制数,最基本的容量单位 千字节KByte 1KB=1024(210)Byte 兆字节MByte
15、 1MB=1024(210)KB 吉字节GByte 1GB=1024(210) MB字长 Word:计算机能同时进行处理的二进制位数。32位机/64位机,2018年7月5日,40,位数不同的数的表示范围,2018年7月5日,41,带符号数的表示方式,带符号数的表示方式带符号数也需要对符号位进行编码机器数,正号编码为0;负号编码为1。机器数的三种编码方式:原码反码补码计算机中采用的方式正数的原码、反码、补码都相同+76:01001100,2018年7月5日,42,原码、反码和补码,(1)原码,0的表示不唯一 不便于进行加减运算,10000101,00000100,+,10001001,-5的原码
16、,结果为-9,4的原码,2018年7月5日,43,(2)反码,0的表示不唯一 不便于进行加减运算,原码、反码和补码,正数的反码与其原码相同,最高位为0表示正数,其余位为数值位负数的反码是其符号位取1,对应的数值部分按位取反求得。,2018年7月5日,44,原码、反码和补码,(1)10 - (1)10 = (1)10 + (-1)10 = (0)10(0 0000001)反 + (1 1111110)反 = (1 1111111)反 = ( -0 )有问题。(1)10 - (2)10 = (1)10 + (-2)10 = (-1)10(0 0000001)反 + (1 1111101)反 = (
17、11111110)反 = (-1)正确。,2018年7月5日,45,反码的加法规则,1)将两个数变为反码,直接相加2)将进位加到和的最低位,就是和的反码。-75+85(75)10=64+8+2+1=01001011(-75)10=(10110100)反85=64+16+4+1=(01010101)反-75+85= (10110100)反 + (01010101)反 = 1(00001001)+1 =(00001010)反=(8+2=10)10,2018年7月5日,46,反码,2018年7月5日,47,(3)补码,0的表示唯一 正确进行加减运算,加减法统一为加法。,正数的补码与其原码相同。负数的
18、补码是在其反码的最低位上加1得到。,原码、反码和补码,2018年7月5日,48,补码,二进制值(1字节) 十进制值 1000 0000 -128 1000 0001 -127 1000 0010 -126 1000 0011 -125 . . 1111 1110 -2 1111 1111 -1,2018年7月5日,49,补码,2018年7月5日,50,原码、反码和补码转换规则,正数的原码、反码、补码的表示形式相同,符号位为0,数值位是真值本身;负数的原码、反码、补码的符号位都为1,数值位原码是真值本身,反码是各位取反,补码是各位取反后,最低位加1。真值0的原码和反码表示不唯一,而补码表示是唯一
19、的。,2018年7月5日,51,补码运算,引入补码的主要目的在于简化减法运算,可以把减法运算用补码加法来实现。计算机中就只有加法计算。补码运算定律:( x + y )补( x )补 + ( y )补下面根据x和y的符号和绝对值的大小,可分四种情况举例验证:正数+正数负数+负数正数+负数,正数负数的绝对值正数+负数,正数 |y| x = 61,y= -33( x )补= 00111101( y )补= 1 1011111( x )补+ ( y )补= 00011100 二进制按位相加计算,在相加过程中超出8位的位自然丢弃,只保留8位。计算结果最高位为0表示正数。( x + y )补= ( 28)补= 00011100 = ( x )补+ ( y )补,2018年7月5日,54,补码运算,d)正数x和负数y相加,且 |x| 127了,称为正向溢出。如果两个负数之和小于-128,就会产生负向溢出。防止溢出的办法是用更多的位,如16位、32位来表示数。 思考:32bit补码表示的数的范围是多少?,2018年7月5日,56,100100.01 101 = ?1011011 101 = ?10110110 11110000 = ?,练习,