详解带小数点的数的进制转换

上传人:公**** 文档编号:512831330 上传时间:2023-06-01 格式:DOCX 页数:11 大小:21.56KB
返回 下载 相关 举报
详解带小数点的数的进制转换_第1页
第1页 / 共11页
详解带小数点的数的进制转换_第2页
第2页 / 共11页
详解带小数点的数的进制转换_第3页
第3页 / 共11页
详解带小数点的数的进制转换_第4页
第4页 / 共11页
详解带小数点的数的进制转换_第5页
第5页 / 共11页
点击查看更多>>
资源描述

《详解带小数点的数的进制转换》由会员分享,可在线阅读,更多相关《详解带小数点的数的进制转换(11页珍藏版)》请在金锄头文库上搜索。

1、十进制数转换为二进制数、八进制数、十六进制数的方法: 二进制数、八进制数、十六进制数转换为十进制数的方法:按权展开求和法 1二进制与十进制间的相互转换:(1)二进制转十进制 方法:“按权展开求和”例: (1011.01 ) 2 = (1x23 + 0x22 + 1x21+1x20 + 0x2 1+1x2 2 )10=(8+0+2+1+0+0.25) 10=(11.25) 10 规律:个位上的数字的次数是0,十位上的数字的次数是1 ,. . . . . .,依奖递增, 而十分位的数字的次数是-1 ,百分位上数字的次数是-2, ,依次递减。 注意:不是任何一个十进制小数都能转换成有限位的二进制数。

2、( 2)十进制转二进制十进制整数转二进制数:“除以2取余,逆序排列”(短除反取余法)例:(89) 10 =(1011001) 22 892 44 12 22 02 11 02 5 12 2 12 1 00 1 十进制小数转二进制数: “乘以2取整,顺序排列”(乘2取整法)例:(0625)10= (0101)20625X21 251X2050X21 012八进制与二进制的转换:二进制数转换成八进制数:从小数点开始,整数部分向左、小数部分向右,每3 位为一组用一位八进制数的数字表示,不足3位的要用“0”补足3位,就得到一 个八进制数。八进制数转换成二进制数:把每一个八进制数转换成3位的二进制数,就

3、得到一 个二进制数。例:将八进制的37.416转换成二进制数:37 416011 111 100 001 110即:(37.416) 8 = (11111.10000111) 2 例:将二进制的10110.0011 转换成八进制:0 1 0 1 1 0 . 0 0 1 1 0 026 .14即:(10110.011) 2 =(26.14) 83十六进制与二进制的转换: 二进制数转换成十六进制数:从小数点开始,整数部分向左、小数部分向右,每 4 位为一组用一位十六进制数的数字表示,不足 4 位的要用 “0补”足 4 位,就得 到一个十六进制数。十六进制数转换成二进制数:把每一个十六进制数转换成4

4、位的二进制数,就得 到一个二进制数。例:将十六进制数 5DF.9 转换成二进制:5 D F 90101 1101 1111 1001即:(5DF.9) 16 = (10111011111.1001) 2 例:将二进制数1100001.111 转换成十六进制:0110 0001 11106 1 E 即:(1100001.111) 2 =(61.E) 16注意:以上所说的二进制数均是无符号的数。这些数的范围如下表: 无符号位二进制数位数 数值范围 十六进制范围表示法8 位二进制数 0255( 255=28-1 ) 000FFH1 6位二进制数 065535 (65535=216-1) 0000H0

5、FFFFH32 位二进制数 0232-1 00000000H0FFFFFFFFH很完整的2、8、10、16 进制转换方法最近在研究C语言,因为要用到各进制间转换,所以收集了一些资料这是一节“前不着村后不着店”的课。不同进制之间的转换纯粹是数学上的计算。不过,你 不必担心会有么复杂,无非是乘或除的计算。生活中其实很多地方的计数方法都多少有点不同进制的影子。比如我们最常用的10 进制,其实起源于人有10个指头。如果我们的祖先始终没有摆脱手脚 不分的境况,我想我们现在一定是在使用 20 进制。至于二进制没有袜子称为0只袜子,有一只袜子称为I只袜子,但若有两袜子,则我们 常说的是:1 双袜子。生活中还

6、有:七进制,比如星期。十六进制,比如小时或“一打”,六十进制,比如分钟或 角度我们找到问号字符(?)的ASCII值是63,那么我们可以把它转换为八进值:7,然后用77 来表示?。由于是八进制,所以本应写成077,但因为C,C+规定不允许使用斜杠 加10进制数来表示字符,所以这里的0可以不写。事实上我们很少在实际编程中非要用转义符加八进制数来表示一个字符,所以,6.2.4小节 的内容,大家仅仅了解就行。6.2.5十六进制数转换成十进制数2进制,用两个阿拉伯数字:0、1;8进制,用八个阿拉伯数字:0、1、2、3、4、5、6、7;10进制,用十个阿拉伯数字:0到9;16进制,用十六个阿拉伯数字等等,

7、阿拉伯人或说是印度人,只发明了 10个数字啊?16进制就是逢16进1,但我们只有09这十个数字,所以我们用A, B,C,D,E,F这五个 字母来分别表示10,11,12,13,14,15。字母不区分大小写。十六进制数的第0位的权值为16的0次方,第1位的权值为16的1次方,第2位的权值为 16的2次方所以,在第N (N从0开始)位上,如果是是数X (X大于等于0,并且X小于等于15, 即:F)表示的大小为X * 16的N次方。假设有一个十六进数2AF5,那么如何换算成10进制呢?用竖式计算:2AF5换算成10进制:第 0 位:5 * 160 = 5第 1 位:F * 161 = 240第 2

8、位:A * 162 = 2560第 3 位:2 * 163 = 8192 +10997直接计算就是: 5 * 160 + F * 161 + A * 162 + 2 * 163 = 10997(别忘了,在上面的计算中,A表示 10,而F表示15)现在可以看出,所有进制换算成10进制,关键在于各自的权值不同。假设有人问你,十进数 1234为什么是一千二百三十四?你尽可以给他这么一个算式:1234 = 1 * 103 + 2 * 102 + 3 * 101 + 4 * 1006.2.6十六进制数的表达方法如果不使用特殊的书写形式, 16进制数也会和10进制相混。随便一个数:9876,就看不出 它是

9、1 6进制或1 0进制。C, C+规定,16进制数必须以0x开头。比如0X1表示一个16进制数。而1则表示一个 十进制。另外如:0xff,0xFF,0X102A,等等。其中的x也也不区分大小写。(注意:0x中的0 是数字0,而不是字母0)以下是一些用法示例:int a = 0X100F;int b = 0X70 + a;至此,我们学完了所有进制:10进制,8进制,16进制数的表达方式。最后一点很重要, C/C+中,10进制数有正负之分,比如12表示正12,而-12表示负12,;但8进制和16进 制只能用达无符号的正整数,如果你在代码中里:-078,或者写:-0xF2,C,C+并不把它当 成一个

10、负数。6.2.7十六进制数在转义符中的使用转义符也可以接一个16进制数来表示一个字符。如在6.2.4小节中说的?字符,可以 有以下表达方式:? /直接输入字符F/用八进制,此时可以省略开头的00X3F /用十六进制 同样,这一小节只用于了解。除了空字符用八进制数0表示以外,我们很少用后两种 方法表示一个字符。6.3 十进制数转换到二、八、十六进制数6.3.1 10进制数转换为2进制数给你一个十进制,比如:6,如果将它转换成二进制数呢?10进制数转换成二进制数,这是一个连续除2的过程: 把要转换的数,除以2,得到商和余数, 将商继续除以2,直到商为0。最后将所有余数倒序排列,得到数就是转换结果。

11、听起来有些糊涂?我们结合例子来说明。比如要转换6为二进制数。 “把要转换的数,除以2,得到商和余数”。那么:要转换的数是6, 6三2,得到商是3,余数是0。(不要告诉我你不会计算6-3!) “将商继续除以2,直到商为0”现在商是3,还不是0,所以继续除以2。那就: 3- 2,得到商是1,余数是1。“将商继续除以2,直到商为0”现在商是1,还不是0,所以继续除以2。那就: 1- 2,得到商是0,余数是1 (拿笔纸算一下, 1-2是不是商0余1!)“将商继续除以2,直到商为0最后将所有余数倒序排列” 好极!现在商已经是0。我们三次计算依次得到余数分别是:0、1、1,将所有余数倒序排列,那就是:11

12、0了 6转换成二进制,结果是110。把上面的一段改成用表格来表示,则为:被除数 计算过程 商 余数66/23033/211 11/201(在计算机中,三用/来表示)如果是在考试时,我们要画这样表还是有点费时间,所更常见的换算过程是使用下图的连除(图:1)请大家对照图,表,及文字说明,并且自已拿笔计算一遍如何将6转换为二进制数。说了半天,我们的转换结果对吗?二进制数110是6吗?你已经学会如何将二进制数转换成10进制数了,所以请现在就计算一下110换成10进制是否就是6。6.3.2 10进制数转换为8、16进制数非常开心,10进制数转换成8进制的方法,和转换为2进制的方法类似,惟一变化:除数由2

13、变成8。来看一个例子,如何将十进制数120转换成八进制数。用表格表示: 被除数计算过程商 余数 120120/81501515/81711/801120转换为8 进制,结果为:170。非常非常开心,10进制数转换成16进制的方法,和转换为2 进制的方法类似,惟一变化 除数由2 变成16。同样是120,转换成16 进制则为:被除数计算过程商余数120120/167877/1607120 转换为16 进制,结果为:78。请拿笔纸,采用(图:1)的形式,演算上面两个表的过程。6.4 二、十六进制数互相转换二进制和十六进制的互相转换比较重要。不过这二者的转换却不用计算,每个C, C+程序 员都能做到看

14、见二进制数,直接就能转换为十六进制数,反之亦然。我们也一样,只要学完这一小节,就能做到。首先我们来看一个二进制数:1111,它是多少呢?你可能还要这样计算:1 * 20 + 1 * 21 + 1 * 22 + 1 * 23 = 1 * 1 + 1 * 2 + 1 * 4 + 1 * 8 = 15。然而,由于1 1 1 1才4位,所以我们必须直接记住它每一位的权值,并且是从高位往低位记, :8、4、2、1。即,最高位的权值为23 = 8,然后依次是22 = 4, 21 = 2, 20 = 1。记住8421,对于任意一个4位的二进制数,我们都可以很快算出它对应的10进制值。下面列出四位二进制数XXXX所有可能的值(中间略过部分) 仅4位的2进制数快速计算方法 十进制值 十六进值1111=8+4+2+1=15F1110=8+4+2+0=14E1101=8+4+0+1=13D1100=8+4+0+0=12C1011=8+4+0+1=11B1010=8+0+2+0=10A1001=8+0+0+1=1090001= 0 + 0 + 0 + 1 = 110000= 0 + 0 + 0 + 0 = 00二进制数要转换为十六进制,就是以4位一段

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 学术论文 > 其它学术论文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号