数值转换原理及浮点数结构详解_第1页
数值转换原理及浮点数结构详解_第2页
数值转换原理及浮点数结构详解_第3页
数值转换原理及浮点数结构详解_第4页
数值转换原理及浮点数结构详解_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第一章数制转换原理一、数制是什么?数制又称计数制,就是我们用来计数的规则。数制包含两个东西,一个是“计数符号”,另一个是“进位规则”“计数符号”是我们用来表示数的基本符号,常见的计数符号有阿拉伯数字符号,中文数字符号,罗马数字符号等。举例,阿拉伯数字符号有“0123456789”共9个符号,中文数字符号有“零一二三四五六七八九十百千万亿兆”,罗马数字符号有“ I VXLCD M ”。当然我们最常见的是阿拉伯数字符号。“进位规则”就是我们在数数的过程中以多少量为一个进位,也通常说的“逢几进一”,我们日常最长用的是“逢十进一”,这就是“十进制”;我们其实也经常用到其他的进制,比如我们看时间时用的是

2、“逢六十进一”,这是“六十进制”;我们买啤酒时用的“几打”就是“逢十二进一”,这是“十二进制”;还有过去我们常说“半斤八两”,“斤”就是十六进制的。可见,其他的进制在我们的日常生活中也是随处可见 的。将“计数符号”和“进位规则”结合起来就是数制了。比如阿拉伯数字的用法就是用计数符号“ 1 ”表示数量一,用“2 ”表示数量二,这样一直到“9 ”。“ 23 ”表示“二个十加上三”。二、十进制阿拉伯数字的含义我们平时用的类似于“12 ”、“ 233 ”、“ 5432 ”这样的数字用的多了,心中也明白到底这些数字表示多少的量,“12 ”表示“ 1个十加2 ”,“ 233 ”表示“ 2个百加3个十加2

3、”,“ 5432 ”表示“ 5个千加4个百加3个十加2 ”,用数学公式来表示就是(anan-1 .a2a1ao)1o=anX1On+an-1X1On-1 +.+a 2X102+a 1X10 1+aoX1O 0其中anan-1 .a 2a1a。表示的是数字符号,()10表示是10进制数,例如十进制数 67893210(6789) 10=6X10 3+7X10 2+8X10 1+9X10 0三、任意进制数字的表示套用十进制数字的表示方法,我们可以写出任意进制数字的表示方法。下面介绍其他常用的几种进制的表示方法。二进制:我们的“计数符号”通常取“01”共二个字符,“进位规则”为“逢二进一”,用数学公

4、式来表示就是(anan-i .a2aiao)2=anX2n+an-i X2n-1 +.+a 2X22+a iX21+aoX20例如:3210(1011) 2=1X2 +0X2 +1X2 +1X2(结果等于十进制数字 11)八进制:我们的“计数符号”通常取“ 01234567”共八个字符,“进位规则”为“逢八进一”,用数学公式来表示就是(anan-1 .a2a1a0)8=anX8n+an-1 X8n-1 +.+a 2X82+a 1X81+a0X80例如:(7654) 8=7X8 3+6X8 2+5X8 1+4X8 0(结果等于十进制数字 4012)十六进制:我们的“计数符号”通常取“ 01234

5、56789ABCDEF ”共十六个字符,“进位规则”为“逢十六进一”,用数学公式来表示就是(anan-1 .a2a1a0)16=anX16n+an-1X16n-1 +.+a 2X162+a 1X16 1+aX16 0例如:(F2E9) 16=FX16 3+2X16 2+EX16 1+9X16 0(结果等于十进制数字 62185)任意R进制:我们的计数符号取“bib2b3.bR-2b2”共R个字符,进位规则”为逢M进一”用数学公式来表示就是(anan-i .a2aiao)R=anXRn+an-iXRn-1+.+a 2XR2+aiXR 1+aoXR我们称这里的R为“基数”,就是多少进制的意思。举例

6、,我们可以设计一个4进制,即基数 R为4,但是我们用符号“ e”来表示数量四,计数符号取“abed ”共4个字符,“进位规则”为“逢四进一”,其中a表示数量零,b表示数量一,e表示数量二,d表示数量三,用 数学公式来表示就是:(anan-i .a2aiao)e=anXen+an-bXen-b+.+a eXee+abXeb+aaXea那么数(dbae) e=dXe d+bXe e+aXe b+eXe a(结果等于十进制数 210)这么取“计数符号”总是感觉不习惯,我们取通常的计数符号“0123 ”计数取符号“ 4”就习惯了,以上的 4进制数(dbae) e改为(3102) 4,则有3210(31

7、02) 4=3X4 +1X4 +0X4 +2X4(结果等于十进制数 210)从此例可以看到,计数符号是为了表示数量的,即使你用符号“0”来表示数量六,用符号“ 2”表示数量零,也是可以的。用来表示基数的符号 也是任意的,只要你定义它表示的数量就可以了。当然这与我们的习惯不 符,纯粹是自找麻烦。应该用符号“0”表示数量零,符号“ 2 ”表示数量二,这样大家也都容易理解。四、数制之间的转换我们先来看十进制向任意进制的转换。为了容易理解,我们的计数符号 取阿拉伯数字,如果超过数字“9”的话用“ ABCDEFG. ”来表示,基数就直接用10进制的阿拉伯数字表示,以方便阅读。先看十进制向二进制的转换,我

8、们先观察前面提到的二进制数表示的数学 公式(anan-1 .a2a1a0)2=anX2n+an-1 X2n-1 +.+a 2X22+a 1X21+aoX2我假设这里这个数等于十进制数y,(比如说y为123或654等等,是一个用10进制表示的数),那么有anX2n+an-iX2n-1+.+a 2X22+aiX21+aoX2 =(y) 10现在我们对这个等式两边同时不断除以二,我们知道既然他们的数量相等, 除以二后的结果也应该相等 ,只不过左边是用二进制表示的,右边是用十 进制表示的罢了。左边二进制数不断地除以二取出余数右边十进制数不断地除以二取出余数被除数除 数余数被除数除 数余数anX2n+a

9、n-1 X2n-1 +.+a 2X22+a1X21+aoX202aoy2值也应该等于 二进制数 aoanX2n-1 +an-1 X2n-2+.+a 2X21+a1X202a1y除以2的商2值也应该等于 二进制数a1第n-1次除法anX21+an-1 X202an-1太长了不写了,反正是 十进制的数其值应等 于二进制数1 0anX2 +an-1 X22an-1第n次除法anX22a n-1太长了不写了,反正是 十进制的数其值应等 于二进制数anX202an有看过十进制转二进制的书的同学会发现,右边的表格就是用“除2取余法”求二进制数的过程,其实那个方法就是根据我这张表来的。按照表格右边 的除法过

10、程,将十进制数不停的除以2取余数,再将每次的余数由右向左排列成anan-1 .a2a1ao就是这个十进制数对应的二进制表示了。同样的,我们可以取十进制数向二进制转换的方法,结合公式(anan-1 .a2a1ao)R=anXRn+an-1 XRn-1 +.+a 2XR2+a 1XR1 +aoXR0我们可以知道将十进制数向任意的基数为R的进制的数转换的方法就是将10进制数不停的“除基取余”,经过n次除法后(0n共n+1个数需n次除 法),然后将余数由右向左排列就得到了对应的R进制数(anan-1 .a2a1ao)R。下面举个例子来说明我们来使用“除基取余法”求的十进制数23的二进制表示步骤次数被除

11、数除数商余数1252121a0212260a136230a243211a351201a4商取0,故除法完毕,此时将余数由右向左排列得110014OQ所以,(25 ) 10=1X2 +1X2 +0X2 +0X2 1+1*2 0=(11001) 2五、小数的转换方法小数的转换只是在整数转换的基础上略有改变,其转换基础还是我们的通用数学公式(anan-1 a2a1a0)R=anXRn+an-1 XRn-1 +.+a 2XR2+a1XR 1+aoXR我们为它加上小数点得n10-1-2-m(ana1a0.a-1 a-2a-m)R=anXR + +a 1XR +aXR +a-1XR a-2XR a-mXR

12、由于我们已经知道处理整数的方法了,所以我们将整数部分分离出去,按照 前面提到的“除基取余法”来转换,将小数另行单独处理。其小数部分为-1-2-m(.a-1 a-2a-m)R=a-1XR +a-2XR +a-mXR在此,我们还是以二进制为例,来探索出小数部分转换的方法。将基数 二代入通用公式,我们可以得到二进制小数的数学公式(.a-1 a-2a-m)R=a-1 X2-1+a-2X2-2+a-mX2-m仍然假设此二进制小数代表的十进制数为y (比如说y为0.123或0.456这样的十进制数),那么有-1-2-ma-1 X2 1a-2X2 a-mX2 m =(y) 10现在我们对这个等式两边同时不断

13、乘以二,我们知道既然他们的数量相等,乘以二后的结果也应该相等,只不过左边是用二进制表示的,右边是用十 进制表示的罢了。左边二进制数不断地 乘以二取出整数部分右边十进制数不断地 乘以二取出整数部分被乘数乘数结果的整数部 分,(20的系 数)被乘数乘数结果的整数部 分,小数点前的 部分-1-2a-iX2 1a-2X2 2 a-mX2-m2a-1y2结果的整数部 分,值也应该等 于二进制数a-1a-2X2-1 a-mX2-m+12a-2y乘以2的小数部分2结果的整数部 分,值也应该等 于二进制数a-2第m次乘法amX22amy乘以2的小数部分2结果的整数部 分,值也应该等 于二进制数am发现乘二的目

14、的了吧,这张表格的右边就是用“乘2取整法”求二进制小数的过程。按照表格右边的除法过程,将十进制数不停的乘以2取整数,再将每次的积的整数部分由左向右 排列成a-ia-2a-m,就是这个十进制小数对应 的二进制表示了,当然,别忘了给结果前面加个小数点aia-2a-m。同样的,我们可以取十进制小数向二进制小数转换的方法,结合公式-1+-2-m(.a-i a-2a-m)R=a-iX2a-2X2 +a-mX2我们可以知道将十进制小数向任意的基数为R的进制的小数转换的方法就是将10进制数不停的“乘基取整”,然后取积的整数部分由左向右排列就得到了对应的R进制数(a a-m)R。下面依然来举个例子,(0.25

15、 ) 10=?我们来使用“乘基取整法”求的十进制数0.23的二进制表示步骤次数被乘数乘数积的小数部分积的整数部分10.2520.50a-120.5201a-2积小数部分为0,故乘法完毕,此时将整数由左向右排列得01所以,(0.25 ) 10=0X2 -1+1X2 -2=(.01) 2看到这里,是不是有大功告成的感觉。可是事情没有这么简单!首先我们要说的是使用“乘基取整法”是正确的,但是有的小数不停的乘以2后,不能得到积的小数部分为0的时候,比如下面这个例子,(0.2) 10= ?步骤次数被乘数乘数积的小数部分积的整数部分10.220.40a-120.420.80a-230.820.61a-34

16、0.620.21a-450.220.40a-5被乘数又到0.2 了,乘下去又会循环这个过程,永远乘不完。按照结果由左向右排列得-1-2-3-4-5(0.2) 10=0X2 1+0X2 2+1X2 3+1X2 4+0X2 5 + =(.00110 )2我们得到的二进制小数是一个无线循环小数,那么也就是说我们无法用有限位数的二进制小数精确表达十进制小数0.2 o而这,就是计算机中有单精度浮点数和双精度浮点数的由来第二章 浮点数的结构、存储及转换在这里,我就不解释那些ieee的术语,因为大家只要在网上搜索一下,到处都有。这里我用一个直观的实例解释float浮点数在in tel机器上的存储方式,并给出

17、计算方法,让你能一目了然的明白如何将十进制的浮点数的转换成电脑中 存储的二进制浮点数形式,并解释为何有的浮点数不能被精确表示,如12.34常常被解释为12.3400001526对于如何将十进制数12.34如何转换成二进制存储的浮点数,我们需要分 3步走1、先将12.34转换成二进制表示,整数和小数部分分别单独转换整数部分是不停的除二,将余数由右向左排列即12=1100小数部分是不停的乘二,将乘积的整数部分由左向右排列即0.34=0.01010111000010100100-,我们发现小数部分乘2永远乘不尽,就是说 不可能出现没有小数的时候,所以此浮点数就无法被精确的转换成二进制。将整数与小数部

18、分合并得,12.34的二进制表示即(12.34)10-(1100.01010111000010100100- )22、将二进制数1100.01010111000010100100用科学计数法表示:(1100.01010111000010100100- )23-(1.10001010111000010100100-)2X23此时就可以将上面的二进制位按照下面的浮点数规范填入下表中了32bit位置3130230值0100000101000101 01110000 10100100含义符号位指数部分尾数部分整个浮点数共需要32bit共4个字节来表示第31位为符号位,1代表负数,0代表正数,数字0的此位为02330位共8个比特,存储的是指数的移码,即127+指数

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论