版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第六章第六章 数据的机器级表示数据的机器级表示数据的机器级表示数据的机器级表示第第2525章章使用高级程序设计语言使用高级程序设计语言CC语言语言求解求解问题问题最基本的介绍最基本的介绍当一个当一个C C程序执行时,在计算机内部究竟发生程序执行时,在计算机内部究竟发生了什么?了什么?需要从最底层需要从最底层计算机内表示数值的方式开始计算机内表示数值的方式开始数字数字在现代计算机里,所有信息都是采用在现代计算机里,所有信息都是采用数字化数字化的的形式表示的形式表示的整数、小数、文字整数、小数、文字、图像、声音等等图像、声音等等信息的最小单位信息的最小单位位位/ /比特比特在计算机内部,数以亿计在
2、计算机内部,数以亿计、微小、快速的电子微小、快速的电子元件控制电子的流动元件控制电子的流动这些元件对电路中这些元件对电路中电压的有无电压的有无做出反应做出反应如果存在电压用如果存在电压用“1 1”表示,不存在电压用表示,不存在电压用“0 0”表示表示“0 0”和和“1 1”被称为被称为比特比特(bitbit),或),或位位“二进制位二进制位”(binary digitbinary digit)的缩写)的缩写两种稳定状态两种稳定状态自然界的事物通常具有两种稳定的状态自然界的事物通常具有两种稳定的状态存储信息的存储信息的磁盘磁盘使用使用1 1和和0 0表示磁化和未磁化表示磁化和未磁化光盘光盘使用使
3、用1 1和和0 0表示凹(聚光)和凸(散光)表示凹(聚光)和凸(散光)接近接近0 0和远离和远离0 0计算机并不是区分电压的绝对不存在(即计算机并不是区分电压的绝对不存在(即0 0)和绝对存在(即和绝对存在(即1 1)计算机电路区分的是接近计算机电路区分的是接近0 0的电压和远离的电压和远离0 0的电的电压压如果计算机把如果计算机把3 3. .3 3伏的电压表示为伏的电压表示为1 1,把,把0 0伏的电伏的电压表示为压表示为0 0,那么,那么2.2.9 9伏的电压也会被视作伏的电压也会被视作1 1,而,而0.20.2伏的电压会被当作伏的电压会被当作0 0二进制二进制 对对 十进制十进制如果采用
4、十进制,就需要测量电压的具体值如果采用十进制,就需要测量电压的具体值不仅比测量有和无要复杂不仅比测量有和无要复杂而且要求电路的电压值必须稳定,不允许从而且要求电路的电压值必须稳定,不允许从3.33.3伏波动到伏波动到2.92.9伏伏识别多个数值识别多个数值计算机要解决一个真正的问题,必须能唯一的计算机要解决一个真正的问题,必须能唯一的识别出许多不同的数值,而不仅仅是识别出许多不同的数值,而不仅仅是0 0和和1 1为了唯一的识别出多个数值,必须对为了唯一的识别出多个数值,必须对多个位进多个位进行组合行组合位组合位组合如果用如果用8 8位(对应位(对应8 8根线路上的电压)根线路上的电压)使用使用
5、0100111001001110表示某一个特定值,用表示某一个特定值,用1110011111100111表表示另一个值示另一个值最多能区分出最多能区分出256256(即(即2 28 8)个不同的值)个不同的值如果有如果有k k位,最多能区分出位,最多能区分出2 2k k个不同的值个不同的值这些这些k k位的每一种组合都是一个编码,对应着某位的每一种组合都是一个编码,对应着某个特定的值个特定的值位运算位运算除了需要表示出不同的数值之外,还需要对这除了需要表示出不同的数值之外,还需要对这种表示出来的信息进行运算种表示出来的信息进行运算16791679年,德国数学家莱布尼茨发表了一篇关于二年,德国数
6、学家莱布尼茨发表了一篇关于二进制表示及进制表示及算术运算算术运算的论文的论文英国数学家乔治英国数学家乔治布尔在布尔在18541854年给出了二进制的年给出了二进制的逻辑运算逻辑运算,布尔代数即由此得名,布尔代数即由此得名这些工作奠定了现代计算机工作的这些工作奠定了现代计算机工作的数学基础数学基础数据类型数据类型同一个数值,多种表示方法同一个数值,多种表示方法整数整数6 6十进制计数法十进制计数法,“6 6”一元计数法一元计数法,“正一正一”罗马字符罗马字符,vivi二进制计数法二进制计数法,“01100110”某种表示法某种表示法,编码编码,运算运算数据类型数据类型计算机计算机中的中的数据类型
7、数据类型如果在计算机上能对以某种表示法编码的信息如果在计算机上能对以某种表示法编码的信息进行运算,这种特殊的表示法就可以被称为进行运算,这种特殊的表示法就可以被称为数数据类型据类型在大多数计算机上存在着多种数值表示方法在大多数计算机上存在着多种数值表示方法用来表示进行算术运算的正负整数的用来表示进行算术运算的正负整数的二进制补码二进制补码整数整数用来表示从键盘输入计算机或显示在计算机显示用来表示从键盘输入计算机或显示在计算机显示器上的字符的器上的字符的ASCIIASCII码码类似于十进制类似于十进制“科学计数法科学计数法”的的浮点数浮点数数据类型数据类型整数数据类型整数数据类型无符号整数无符号
8、整数任务执行的次数任务执行的次数课程的选课人数课程的选课人数位置计数法位置计数法十进制十进制十进制系统十进制系统十进制数十进制数2862862 2在在286286中的位置决定了它表示中的位置决定了它表示200200(2 2 10102 2),而),而8 8则表示则表示8 8 10101 1位置计数法,或位置计数法,或定位数制定位数制在十进制系统里,在十进制系统里,1010被称为数制中的被称为数制中的基数基数或基或基位置计数位置计数法法二进制二进制无符号整数无符号整数采用位置计数法采用位置计数法,二进制数表示无符号整数,基数二进制数表示无符号整数,基数为为2 2,二进制数为,二进制数为0 0和和
9、1 1如果使用如果使用8 8位有效数字来表示数值,则数字位有效数字来表示数值,则数字3030可以表示为可以表示为00011110000111100 0 2 27 7+0+0 2 26 6+0+0 2 25 5+1+1 2 24 4+1+1 2 23 3+1+1 2 22 2+1+1 2 21 1+0+0 2 20 0二进制二进制无符号整数无符号整数使用使用2 2位数位数00, 01, 10, 1100, 01, 10, 11使用使用3 3位数位数000, 001, 010, 011, 100, 101, 110, 111000, 001, 010, 011, 100, 101, 110, 11
10、1使用使用k k位数,就可以表示从位数,就可以表示从0 0到到2 2k k-1-1共共2 2k k个整数个整数有符号整数有符号整数将将k k位的位的2 2k k个不同的数字分为两半,个不同的数字分为两半,一半表示一半表示正数正数,另,另一半表示负数一半表示负数k=4, 2k=4, 2k k=16=16表示从表示从+1+1到到+7+7的正数,以及从的正数,以及从-1-1到到-7-7的负数的负数1414个个剩下剩下2 2个个0 0和?和?首先考虑首先考虑:从从+1+1到到+7+7,从,从-1-1到到-7-7,到底是哪些码,到底是哪些码字与其一一匹配?字与其一一匹配?正数正数正数按照正数按照位置计数
11、法位置计数法直接表示直接表示k k位,用位,用2 2k k个码字的一半来表示从个码字的一半来表示从0 0到到2 2k k-1-1-1-1的的正数,正数,最高位有一个最高位有一个0 0k k4 4的正数的正数二进制二进制表示表示十进制十进制0 00000000 00 00010011 10 00100102 20 00110113 30 01001004 40 01011015 50 01101106 60 01111117 7最大的正数最大的正数:7 7以以0 0开头开头负数负数原码原码二进制二进制表示表示十进制十进制0 00000000 00 00010011 10 00100102 20
12、00110113 30 01001004 40 01011015 50 01101106 60 01111117 71000-01001-11010-21011-31100-41101-51110-61111-7k k4 4,-1-1 -7-7?最高位最高位0 0:正数正数(+ +)最高位最高位1 1:对应的负数对应的负数(- -)负数负数反码反码二进制二进制表示表示十进制十进制0 00000000 00 00010011 10 00100102 20 00110113 30 01001004 40 01011015 50 01101106 60 01111117 71000-71001-61
13、010-51011-41100-31101-21110-11111-0k k4 4,-1-1 -7-7?对正数对正数“按位取反按位取反”4+(-3)4+(-3)采用与十进制加法相同的规则采用与十进制加法相同的规则自右向左,一列一列的运算,如果某列的加法有进位,则自右向左,一列一列的运算,如果某列的加法有进位,则立即加至它的左列立即加至它的左列原码表示法原码表示法01000100(4 4)+ +10111011(-3-3)= =11111111(-7-7)反码表示法反码表示法01000100(4 4)+ +11001100(-3-3)= =00000000(0 0)算术逻辑单元算术逻辑单元对负数
14、表示法的选择是基于尽可能使逻辑电路最简对负数表示法的选择是基于尽可能使逻辑电路最简单的想法单的想法几乎所有的计算机都使用相同的基本结构几乎所有的计算机都使用相同的基本结构算术算术逻辑单元(逻辑单元(Arithmetic and Logic UnitArithmetic and Logic Unit,ALUALU)来进行加法运算来进行加法运算ALUALU并不知道(也不关心)所加的两个位组合表示并不知道(也不关心)所加的两个位组合表示什么,它只是简单的将二进制数相加什么,它只是简单的将二进制数相加 0100 (4)0100 (4)+ +1101 1101 ( (-3)-3)= =0001 (1)0
15、001 (1)负数负数补码补码二进制二进制表示表示十进制十进制0 00000000 00 00010011 10 00100102 20 00110113 30 01001004 40 01011015 50 01101106 60 01111117 71000-81001-71010-61011-51100-41101-31110-21111-1k k4 40 0 + +7 7位置记数法位置记数法-8 -8 -1 -1尽可能使逻辑电路最简单尽可能使逻辑电路最简单A + (-A) = 0A + (-A) = 0 0101 0101(+5+5)+ + ?(-5-5)= =00000000(0 0
16、) 0101 0101(+5+5)+ +10111011(-5-5)= =00000000(0 0)二进制二进制表示表示十进制十进制0 00000000 00 00010011 10 00100102 20 00110113 30 01001004 40 01011015 50 01101106 60 01111117 710001001-71010-61011-51100-41101-31110-21111-11000 ?1000 ?在对每个数值在对每个数值加加00010001后,后,应得到正确的结果应得到正确的结果10001000:-8-8 1000 1000(? ?)+ +0001000
17、1(1 1)= =10011001(-7-7)二进制二进制表示表示十进制十进制0 00000000 00 00010011 10 00100102 20 00110113 30 01001004 40 01011015 50 01101106 60 01111117 71000-81001-71010-61011-51100-41101-31110-21111-111111111、00000000、01110111、1000100011111111和和00000000:-1-1和和0 0 1111 1111(-1-1)+ +00010001(1 1)= = (1)(1)00000000(0 0
18、)在做补码算术运算时在做补码算术运算时这个进位总是被忽略这个进位总是被忽略01110111:+7+710001000:-8-8二进制二进制表示表示十进制十进制000000000 00 00010011 10 00100102 20 00110113 30 01001004 40 01011015 50 01101106 6011101117 71000-81001-71010-61011-51100-41101-31110-21111-1K K位组合位组合-2-2k k-1-1 2 2k k-1-1-1-10 0后面跟后面跟k-1k-1个个1 1:2 2k k-1-1-1-11 1后面跟后面跟
19、k-1k-1个个0 0:-2-2k k-1-1k k个个1 1:-1-13232位位ALUALU二进制补码类型整数从二进制补码类型整数从-2147483648-2147483648到到21474836472147483647-A-A的表示的表示 A A+ + A A的反码的反码= = 11111111(-1-1) + + 00010001( (1 1) )= = 00000000(0 0)-A-A的表示的表示把把A A的反码加的反码加1 1“取反加取反加1 1”示例示例-6-6的二进制补码表示是什么(采用的二进制补码表示是什么(采用4 4位表示)位表示)?1. A1. A:+6, 0110+6
20、, 01102. A2. A的反码的反码 1001 10013. 10013. 1001+ 0001+ 0001= = 10101010(-6-6)验证验证 0110(6) 0110(6)+ 1010(-6)+ 1010(-6)= = ( (1 1)0000)0000二进制二进制- -十进制十进制一个一个8 8位的二进制补码数采取如下格式:位的二进制补码数采取如下格式:a a7 7 a a6 6 a a5 5 a a4 4 a a3 3 a a2 2 a a1 1 a a0 01. 1. 检查最前面的检查最前面的a a7 7。如果是。如果是0 0,该整数是正数,该整数是正数,就可以直接计算其数
21、值。如果是就可以直接计算其数值。如果是1 1,该整数是,该整数是负数,负数,“取反加取反加1 1”。2. 2. 计算:计算:a a6 6 2 26 6+ + a a5 5 2 25 5+ + a a4 4 2 24 4+ + a a3 3 2 23 3+ + a a2 2 2 22 2+ + a a1 1 2 21 1+ + a a0 0 2 20 03. 3. 如果原数值是负数,在前面加一个负号前如果原数值是负数,在前面加一个负号前缀即可缀即可X = 01110110two= 26+25+24+22+21 = 64+32+16+4+2= 118tenX = 11110010two -X =
22、00001110= 23+22+21 = 8+4+2= 14tenX = -14tenn 2n0 11 22 43 84 165 326 647 1288 2569 51210 1024示例示例l最高位,符号位最高位,符号位权重为权重为 2n-1-232221200000000011001020011301004010150110601117-232221201000-81001-71010-61011-51100-41101-31110-21111-1位置计数位置计数十进制十进制- -二进制二进制如果一个如果一个正正的二进制数的最右端的数字为的二进制数的最右端的数字为1 1,这个数为这个数为
23、奇数奇数;否则;否则为为偶数偶数8 8位位二进制数二进制数(正数(正数)a a6 6 2 26 6+ + a a5 5 2 25 5+ + a a4 4 2 24 4+ + a a3 3 2 23 3+ + a a2 2 2 22 2+ + a a1 1 2 21 1+ + a a0 0 2 20 0如何找到如何找到a ai i(i i= 0= 0,1 1,66)的)的值?值?示例示例:+123:+123正数正数,最高位,最高位a7a7:0 0123 = a123 = a6 6 2 26 6+ a+ a5 5 2 25 5+ a+ a4 4 2 24 4+ a+ a3 3 2 23 3+ a+
24、 a2 2 2 22 2+ a+ a1 1 2 21 1+ a+ a0 0 2 20 0奇数,奇数,a a0 0:1 1在等式两端同时减去在等式两端同时减去1 1122 122 = a= a6 6 2 26 6+ a+ a5 5 2 25 5+ a+ a4 4 2 24 4+ a+ a3 3 2 23 3+ a+ a2 2 2 22 2+ a+ a1 1 2 21 1在在等式两端同时除以等式两端同时除以2 261= 61= a a6 6 2 25 5+ + a a5 5 2 24 4+ + a a4 4 2 23 3+ + a a3 3 2 22 2+ + a a2 2 2 21 1+ a+
25、a1 1 2 20 0奇数奇数,a a1 1:1 1在等式两端同时在等式两端同时减去减去1 160= 60= a a6 6 2 25 5+ + a a5 5 2 24 4+ + a a4 4 2 23 3+ + a a3 3 2 22 2+ + a a2 2 2 21 1在等式两端同时除以在等式两端同时除以2 230= 30= a a6 6 2 24 4+ + a a5 5 2 23 3+ + a a4 4 2 22 2+ + a a3 3 2 21 1+ + a a2 2 2 20 0a a2 2=0=015= 15= a a6 6 2 23 3+ + a a5 5 2 22 2+ + a
26、a4 4 2 21 1+ + a a3 3 2 20 0a a3 3=1=17=7= a a6 6 2 22 2+ + a a5 5 2 21 1+ + a a4 4 2 20 0a a4 4=1=13= 3= a a6 6 2 21 1+ + a a5 5 2 20 0a a5 5=1=11= 1= a a6 6 2 20 0a a6 6=1=1二进制二进制表示表示为为 0111 1011 0111 1011除除2 2取余取余 2 2 123123 余数余数 2 2 6161 1 1 低位低位 2 2 3030 1 1 2 2 1515 0 0 2 2 7 7 1 1 2 2 3 3 1 1
27、 2 2 1 1 1 1 0 0 1 1 高位高位将余数从高位向低位依次排列将余数从高位向低位依次排列11110111111011正数正数, ,最高位为最高位为0 0二进制表示为二进制表示为 0111 1011 0111 1011总结总结已知十进制数已知十进制数N N,通过以下步骤可得其,通过以下步骤可得其k k位位补码补码表示表示1. 1. 首先将首先将N N的绝对值通过的绝对值通过“除除2 2取余取余”的方法,的方法,得到其绝对值的二进制表示;得到其绝对值的二进制表示;2. 2. 如果原来的十进制数为正,则在二进制数前如果原来的十进制数为正,则在二进制数前加加0 0,得到,得到k k位位结
28、果;结果;3. 3. 如果原来的十进制数为负,在二进制数前加如果原来的十进制数为负,在二进制数前加0 0 ,得到,得到k k位位,然后再计算出这个补码的负数,然后再计算出这个补码的负数(即(即“取反加取反加1 1”),得到结果。),得到结果。示例示例 2 2 215 215 余数余数 2 2 107 107 1 1 2 2 53 53 1 1 2 2 26 26 1 1 2 2 13 13 0 0 2 2 6 6 1 1 2 2 3 3 0 0 2 2 1 1 1 1 0 1 0 1 结果结果 (215) (215)10 10 = (0= (00000000000000011010111)11
29、010111)2 2 或写为:或写为:215215D D = = 0 0000000011010111000000011010111B B注:使用注:使用1616位编码位编码算术运算算术运算与十进制运算十分相似与十进制运算十分相似加法运算加法运算从右到左进行,每次一位。在每次运算后,产生从右到左进行,每次一位。在每次运算后,产生一个一个“和和”与一个与一个“进位进位”,进位在,进位在1 1的后面产的后面产生生0011(3)0111(7)+0100(4)+(-4)0111(7)(3)减减法运算法运算0111(7)0111(7)-0100(4) +(-4) (3)x x+ +x x把一个数把一个数
30、x x加上它自身加上它自身每位上的数字都向每位上的数字都向左移左移了一位了一位61+6161+616161可以表示可以表示为为0 0 2 26 6+ + 1 1 2 25 5+ + 1 1 2 24 4+ + 1 1 2 23 3+ 1+ 1 2 22 2+0+0 2 21 1+ + 1 1 2 20 0616161 = 261 = 2 6161,可以,可以表示表示为为2 2 (0(0 2 26 6+ + 1 1 2 25 5+ + 1 1 2 24 4+ + 1 1 2 23 3+ 1+ 1 2 22 2+0+0 2 21 1+ + 1 1 2 20 0) )也就是也就是0 0 2 27 7
31、+ 1+ 1 2 26 6+ 1+ 1 2 25 5+ 1+ 1 2 24 4+ 1+ 1 2 23 3+0+0 2 22 2+ 1+ 1 2 21 1每每位上的数字都向左移了一位位上的数字都向左移了一位恰当的位数恰当的位数为减少占用空间,会采用恰当的位数来表示数为减少占用空间,会采用恰当的位数来表示数值值6 6用用4 4位(位(0 0110110)用用1616位(位(0000 0000 0000 00000 0000 0000 0110110)-6-6用用4 4位(位(1 1010010)用用1616位(位(1111 1111 1111 11111 1111 1111 1010010)不同长
32、度数值做加法不同长度数值做加法为了对两个具有不同长度的数值做加法,首先为了对两个具有不同长度的数值做加法,首先必须将它们表示为相同的长度必须将它们表示为相同的长度 00000000000011100000000000001110+ + 1100 1100 ?14+14+(-4-4) 0000 0000 0000 1110 0000 0000 0000 1110(1414)+ + 0000 0000 0000 0000 0000 0000 11001100(1212) 0000 0000 0001 10100000 0000 0001 1010(2626) 0000 0000 0000 1110
33、 0000 0000 0000 1110(1414)+ + 1111 1111 1111 1111 1111 1111 11001100(-4-4) 0000 0000 0000 10100000 0000 0000 1010(1010) 符号扩展符号扩展如果用如果用0 0来扩展一个正数的左端,它的值不会来扩展一个正数的左端,它的值不会改变改变如果用如果用1 1来扩展一个负数的左端,其值亦不会来扩展一个负数的左端,其值亦不会改变改变在这两种情况中扩展的都是符号位,这种运算在这两种情况中扩展的都是符号位,这种运算被称为符号扩展(被称为符号扩展(Sign-EXTensionSign-EXTensi
34、on,SEXTSEXT)用于对不同长度的数值之间的运算用于对不同长度的数值之间的运算溢出溢出使用使用4 4位补码数据类型,计算位补码数据类型,计算2+62+6: 00100010+ 0110+ 0110 10001000计算结果为计算结果为-8-8,为什么为什么会出现错误?会出现错误?2 2加加6 6等于等于8 8,大于,大于+7+7,即大于,即大于01110111,而,而01110111是使是使用用4 4位的补码数据类型能够表示的最大正数,因位的补码数据类型能够表示的最大正数,因此此8 8不能用不能用4 4位的补码表示出来位的补码表示出来溢出溢出示例示例0011(3)1101(-3)+ 01
35、10(6)+ 1010(-6)1001(-7)0111(7)检测溢出检测溢出如果如果两个数符号相同两个数符号相同和的符号不同和的符号不同一个负数和一个正数的和永远不会出现溢出一个负数和一个正数的和永远不会出现溢出位组合逻辑运算位组合逻辑运算与与3.23.2节的逻辑运算不同节的逻辑运算不同由由ALUALU实现实现移至第七章移至第七章习题(习题(1 1)书面作业书面作业6.36.36.46.46.56.56.76.76.86.8浮点数浮点数数据数据类型类型小数小数定点小数定点小数十进制,小数点,定点表示法(十进制,小数点,定点表示法(fixed pointfixed point )3456.78
36、= 33456.78 = 310103 3 + 4 + 410102 2 + 5 + 510101 1 + 6 + 610100 0 + + 7 71010-1 -1 + 8+ 81010-2-2二进制二进制00011001.110 = 100011001.110 = 12 24 4 + 12 + 123 3 + 12+ 120 0 + 1+ 12 2-1-1 + 1+ 12 2-2-2 = 25.75= 25.75(2(2-1-1 = 0.5 and 2 = 0.5 and 2-2-2 = 0.25, etc.) = 0.25, etc.)-1.25? -1.25? 1.25=21.25=2
37、0 0+2+2-2-2=0000 0001.010 =0000 0001.010 取反加取反加1 1 =1111=1111 1110.1101110.11000101000.101(40.625)+11111110.110(-1.25)00100111.011(39.375)2-1 = 0.52-2 = 0.252-3 = 0.125定点小数算术运算定点小数算术运算没有新的运算没有新的运算补码整数算术运算补码整数算术运算小数点对齐小数点对齐十进制数转换成二进制数十进制数转换成二进制数整数部分,采用整数部分,采用除除2 2取余取余法(倒除法)法(倒除法)小数部分,采用小数部分,采用乘乘2 2取整
38、取整法法示例示例例如:将例如:将(0.6875)10转换成二进制数转换成二进制数 0.6875 取整数部分取整数部分 2 1.3750 1 0.3750 2 0.7500 0 2 1.5000 1 0.5000 2 1.0000 1 0.0000 结果结果 (0.6875)10 = (0.1011)2 精度精度如果十进制小数不能用有限位的二进制数表示,如果十进制小数不能用有限位的二进制数表示,则则根据精度取几位根据精度取几位例如:例如:(0.414)(0.414)10 10 (0.01101) (0.01101)2 2 (取取5 5位)位)或写为:或写为: 0.4140.414D 0.0110
39、1BD 0.01101B(取取5 5位)位)数值范围数值范围阿佛加德罗常数阿佛加德罗常数 6.023 6.023 10102323 ?3232位补码整数位补码整数-2147483648 -2147483648 2147483647 2147483647-2-23131 +2+23131-1-1精度精度3131位,数值范围位,数值范围2 23131精度精度 对对 数值范围数值范围6.0236.023 10102323数值范围数值范围需要需要7979位(二进制补码整数)位(二进制补码整数)精度精度只需要只需要4 4个个十进制十进制数(数(60236023)6.626 x 106.626 x 10-
40、34-34 需要需要110110位位问题:表示精度的位数过多,而表示范围的位数却问题:表示精度的位数过多,而表示范围的位数却不足不足浮点数类型浮点数类型类似于科学记数法类似于科学记数法6.0236.023 10102323符号符号:+ +有效数字有效数字:6.0236.023分数分数指数指数:2323浮点数类型浮点数类型十进制:十进制:科学计数法科学计数法1.602 176 462 x 101.602 176 462 x 10-19-19 1 x 101 x 108585 cm cm3 3 二进制:浮点数二进制:浮点数定点数定点数00011001.110 = 100011001.110 = 1
41、2 24 4 + 12 + 123 3 + 12+ 120 0 + 12+ 12-1 -1 + 12+ 12-2-2 = 25.75= 25.75浮动浮动小数点小数点00011001.110 = 1.1001110 x 200011001.110 = 1.1001110 x 24 4需要表示出:需要表示出:符号符号、指数(、指数(范围范围)、分数()、分数(精度精度)IEEEIEEE(国际电气和电子工程师协会)浮点数算术运算(国际电气和电子工程师协会)浮点数算术运算标准标准IEEE-754 IEEE-754 单精度单精度(floatfloat)浮点数浮点数32 位位符号符号(S S)0 0代表
42、正数,代表正数,1 1代表负数代表负数指数指数: 8: 8位位无符号整数无符号整数,0 0 255255分数分数: 23 : 23 位位s指数指数exponent分数分数fraction1位8 位23 位IEEE-754 IEEE-754 浮点数浮点数符号位:符号位:(-1)(-1)s s指数和分数指数和分数1=exponent=2541=exponent=254exponent=0exponent=0exponent=255exponent=2550fraction ,255exponent number), a aN(not0fraction ,255exponent , )(0expon
43、ent ,2.0)1(254exponent1 ,2.1)1(126127expNandInfinityfractionfractionNSonentS1=exponent=2541=exponent 10000111 (= 135) = 10000111 (= 135)2 2-125-125 = 00000010 = 00000010 (= 2)(= 2)分数分数: 23 : 23 位位规格化规格化,实际表示的是,实际表示的是2424位的精度位的精度包括包括2323位分数和二进制小数点左端的没有明确表示出位分数和二进制小数点左端的没有明确表示出来的一位来的一位1 1127exp2.1)1(o
44、nentSfractionNexponent=exponent=0000000000000000指数是指数是-126-126,得到的有效数字,得到的有效数字以以0 0开头开头,后面,后面是是2323位二进制分数部分位二进制分数部分0 000000000 00000000 00001 00001000000000000000000000000000000000000开头的开头的0 0表示它是正数表示它是正数接下来的接下来的8 8位,是一个零指数,意味着它的指数是位,是一个零指数,意味着它的指数是-126-126后面的后面的2323位形成位形成0 0. .000010000100000000000
45、0000000000000000000000000,即,即2 2-5-52 2-5-5 2 2-126-126,得到,得到2 2-131-131这样就能表示很小的数这样就能表示很小的数当分数部分也全为当分数部分也全为0 0时,此时将表示数值时,此时将表示数值0 01262.0)1(fractionNSexponentexponent=11111111=11111111如果符号位为如果符号位为0 0,分数域全为,分数域全为0 0,那么该数表示,那么该数表示正无正无穷穷C C语言中,计算语言中,计算“10.0/010.0/0”时出现时出现如果符号位为如果符号位为1 1,分数域全为,分数域全为0 0
46、,那么该数表示,那么该数表示负无负无穷穷-10.0/0-10.0/0如果分数域不全为如果分数域不全为0 0,那么该数表示,那么该数表示“非数值非数值”0.0/0.00.0/0.00.00.0* *infinfinfinf/ /infinfinf-infinf-inf0fraction number), a aN(not0fraction , )(NandInfinityN-45.8125-45.812545.812545.8125的二进制数表示为:的二进制数表示为:0101101.11010101101.1101规格化为规格化为1.0110111011.011011101 2 25 5,即,即
47、1.0110111011.011011101 2 2132132-127-127符号位应为符号位应为1 1,负数,负数指数部分为指数部分为1000010010000100,即无符号整数,即无符号整数132132分数部分是小数点后的分数部分是小数点后的2323位,位,01101110100000000000000011011101000000000000001 10000100 0110 1110 1000 0000 0000 0001 10000100 0110 1110 1000 0000 0000 000示例示例0 01111010 000000000000000000000000 011
48、11010 00000000000000000000000最高位为最高位为0 0,表示该数是个正数,表示该数是个正数跟着的跟着的8 8位代表无符号整数位代表无符号整数122122,减去,减去127127,得,得到实际指数为到实际指数为-5-5最后最后2323位都是位都是0 0因此这个数表示为因此这个数表示为+1.00000000000000000000000+1.00000000000000000000000 2 2-5-5,也就是,也就是 1/321/32示例示例0 10000101 111000011110000000000000 10000101 11100001111000000000
49、000指数域指数域无符号整数无符号整数133133,由于,由于133-127=6133-127=6,所以指数为,所以指数为+6+6将分数域的小数点左边加一个将分数域的小数点左边加一个1 1形成形成1.111000011111.11100001111将小数点向右移动将小数点向右移动6 6位,得到位,得到1111000.011111111000.01111,即即120.46875120.46875示例示例1 10000010 001010000000000000000001 10000010 00101000000000000000000符号位为符号位为1 1,表示负数,表示负数指数是指数是130
50、130,表示,表示130-127130-127,即指数为,即指数为3 3将分数域的小数点左边加一个将分数域的小数点左边加一个1 1形成形成1.001011.00101将小数点向右移动将小数点向右移动3 3位,得到位,得到1001.011001.01,即,即- -9.259.25示例示例0 11111110 111111111111111111111110 11111110 11111111111111111111111符号为正符号为正指数是指数是254-127254-127,即,即+127+127将分数域的小数点左边加一个将分数域的小数点左边加一个1 1形成形成1.11111111111111
51、1111111111.11111111111111111111111,约等于,约等于2 2因此,结果约为因此,结果约为2 2128128示例示例1 00000000 000000000000000000000011 00000000 00000000000000000000001符号为负符号为负指数域全为指数域全为0 0,表示指数是,表示指数是-126-126将分数域的小数点左边加一个将分数域的小数点左边加一个0 0形成形成2 2-23-23因此,结果为因此,结果为2 2-23-23 2 2-126-126,等于,等于-2-2-149-149加法运算加法运算与与科学计数法科学计数法类似类似加法
52、运算,需经过五步完成加法运算,需经过五步完成1 1、对指数操作:首先使二数的指数相等、对指数操作:首先使二数的指数相等2 2、分数运算:经指数相等操作后,即可直接对、分数运算:经指数相等操作后,即可直接对分数做加法运算分数做加法运算3 3、结果规格化:对运算结果进行规格化处理、结果规格化:对运算结果进行规格化处理4 4、舍入操作:对丢失的位进行舍入处理、舍入操作:对丢失的位进行舍入处理5 5、判断溢出:判断指数是否溢出、判断溢出:判断指数是否溢出IEEE-754 IEEE-754 浮点数浮点数ldouble precision (64 bit) l范围范围 和和 精度精度:w32 位位: 精度
53、精度= 大约大约 7 位位范围范围= 大约大约 10+/-38 w64 位位: 精度精度=大约大约 15 位位范围范围= 大约大约 10+/-306 s偏移的指数偏移的指数分数分数111 位52 位N = (-1)s x 1.fraction x 2(biased exp. 1023)64 位:十六进制表示法十六进制表示法十六进制表示法十六进制表示法由二进制的位置计数法发展而来由二进制的位置计数法发展而来方便方便人们手工处理人们手工处理二进制数位二进制数位二进制二进制- -十六进制十六进制1616位二进制位组合位二进制位组合(无符号整数)(无符号整数)a a15 15 a a14 14 a a
54、13 13 a a1212 a a11 11 a a10 10 a a9 9 a a8 8 a a7 7 a a6 6 a a5 5 a a4 4 a a3 3 a a2 2 a a1 1 a a0 0计算如下:计算如下:2 21515 a a1515+2+21414 a a1414+2+21313 a a1313+2+21212 a a1212+2+21111 a a1111+2+21010 a a1010+2+29 9 a a9 9+ +2 28 8 a a8 8 +2+27 7 a a7 7+2+26 6 a a6 6+2+25 5 a a5 5+2+24 4 a a4 4+2+23 3
55、 a a3 3 +2+22 2 a a2 2+2+21 1 a a1 1+2+20 0 a a0 0= =2 21212 223 3 a a1515 +2 +22 2 a a14 14 +2+21 1 a a13 13 +2+20 0 a a1212 + +2 28 8 223 3 a a11 11 +2+22 2 a a1010+2+21 1 a a9 9 +2+20 0 a a8 8+ + 2 24 4 223 3 a a7 7+2+22 2 a a6 6+2+21 1 a a5 5 +2+20 0 a a4 4+ + 2 20 0 2 23 3 a a3 3 +2+22 2 a a2 2
56、+2+21 1 a a1 1+2+20 0 a a0 0 = =16163 3 h h3 3 + +16162 2 h h2 2+1+16 61 1 h h1 1+ +16160 0 h h 0 0十六进制十六进制h h3 3= = 2 23 3 a a1515 +2 +22 2 a a14 14 +2+21 1 a a13 13 +2+20 0 a a1212h h2 2= = 2 23 3 a a11 11 +2+22 2 a a1010+2+21 1 a a9 9 +2+20 0 a a8 8h h1 1= = 2 23 3 a a7 7+2+22 2 a a6 6+2+21 1 a a
57、5 5 +2+20 0 a a4 4h h0 0= = 2 23 3 a a3 3 +2+22 2 a a2 2+2+21 1 a a1 1+2+20 0 a a0 0h h3 3、h h2 2、h h1 1、h h0 0的的值值0 0,1 1,2 2,3 3,4 4,5 5,6 6,7 7,8 8,9 9,A A,B B,C C,D D,E E,F F二进制二进制十六进制十六进制十进制十进制0000000001110010220011330100440101550110660111771000881001991010A101011B111100C121101D131110E141111F15
58、十六进制表示法十六进制表示法二进制和十六进制之间的转换二进制和十六进制之间的转换容易容易二进制二进制- -十六进制十六进制0110110001011111001111010110111001101100010111110011110101101110首先,将这个位组合按照每四位进行分割首先,将这个位组合按照每四位进行分割0110 1100 0101 1111 0011 1101 0110 11100110 1100 0101 1111 0011 1101 0110 1110然后,将每四位转换为相等的十六进制数然后,将每四位转换为相等的十六进制数6 C 5 F 3 D 6 E6 C 5 F 3
59、D 6 E其十六进制表示为其十六进制表示为“x x6C5F3D6E6C5F3D6E”十六进制十六进制- -二进制二进制将十六进制转换为二进制,则只需将每一位十将十六进制转换为二进制,则只需将每一位十六进制转换为对应的六进制转换为对应的4 4位二进制组合即可位二进制组合即可十六进制十六进制“x x4141”二进制表示二进制表示“0100 00010100 0001”十六进制十六进制- -十进制十进制十六进制数十六进制数xE20AxE20A?如果十六进制数如果十六进制数E20AE20A表示一个表示一个1616位的位的二进制补二进制补码整数码整数首先将首先将E20AE20A的每个的每个1616进制符
60、号转换为二进制,进制符号转换为二进制,即即1110 0010 0000 10101110 0010 0000 1010通过这个二进制表示,就可以知道该整数是负通过这个二进制表示,就可以知道该整数是负数,因为最高位为数,因为最高位为1 1再转换为十进制再转换为十进制注意注意十六进制计数法的采用十六进制计数法的采用方便了人们方便了人们对数据的表对数据的表达达它能表达:整数、浮点数它能表达:整数、浮点数IEEE-754 fp numbersIEEE-754 fp numbers25.75 = 25.75 = 0 0 1000 0011 1000 0011 100 1110 0000 0000 100 1110 00
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 警员考试题及答案
- 汽轮机安全控制技术培训
- 江苏省学前教育财政投入的问题和对策研究
- 2026年汽车电影院周末家庭观影专场
- 实施教师家访加深了解学生家庭
- 诚信无价品行先行-小学主题班会课件
- 责任感教育:培养小学生的责任感小学主题班会课件
- 艺术欣赏月:感受美的力量小学主题班会课件
- 2026年三类人员安全员C证超高支模监测管控继续教育题库带答案
- 2026年邮政投递考试试题及答案
- 沉香与健康课件图片
- 财务资金管理培训
- 儿童碰伤应急处理
- 中建室外管网专项施工方案
- 污水处理PPP项目招标文件
- SYT 6378-2021 油水井取套回接工艺作法-PDF解密
- 监理抽检记录表格
- JJG 4-2015钢卷尺行业标准
- YY 0469-2023医用外科口罩
- 山西兰花科技创业股份有限公司大阳煤矿分公司煤炭资源开发利用、地质环境保护与土地复垦方案
- 中国越剧唱腔知到章节答案智慧树2023年浙江艺术职业学院
评论
0/150
提交评论