问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

进制转换:二进制、八进制、十进制、十六进制相互转换

发布网友 发布时间:2023-09-14 03:31

我来回答

1个回答

热心网友 时间:2024-11-08 17:49

将二进制、八进制、十六进制转换为十进制。二进制、八进制和十六进制向十进制转换都非常容易,就是“按权相加”。所谓“权”,也即“位权”。

假设当前数字是 N 进制,那么:

对于整数部分,从右往左看,第 i 位的位权等于Ni-1

对于小数部分,恰好相反,要从左往右看,第 j 位的位权为N-j。

更加通俗的理解是,假设一个多位数(由多个数字组成的数)某位上的数字是 1,那么它所表示的数值大小就是该位的位权。

1) 整数部分

例如,将八进制数字 53627 转换成十进制:

53627 = 5×84 + 3×83 + 6×82 + 2×81 + 7×80 = 22423(十进制)

从右往左看,第1位的位权为 80=1,第2位的位权为 81=8,第3位的位权为 82=64,第4位的位权为 83=512,第5位的位权为 84=4096 …… 第n位的位权就为 8n-1。将各个位的数字乘以位权,然后再相加,就得到了十进制形式。

注意,这里我们需要以十进制形式来表示位权。

再如,将十六进制数字 9FA8C 转换成十进制:

9FA8C = 9×164 + 15×163 + 10×162 + 8×161 + 12×160 = 653964(十进制)

从右往左看,第1位的位权为 160=1,第2位的位权为 161=16,第3位的位权为 162=256,第4位的位权为 163=4096,第5位的位权为 164=65536 …… 第n位的位权就为 16n-1。将各个位的数字乘以位权,然后再相加,就得到了十进制形式。

将二进制数字转换成十进制也是类似的道理

11010 = 1×24 + 1×23 + 0×22 + 1×21 + 0×20 = 26(十进制)

从右往左看,第1位的位权为 20=1,第2位的位权为 21=2,第3位的位权为 22=4,第4位的位权为 23=8,第5位的位权为 24=16 …… 第n位的位权就为 2n-1。将各个位的数字乘以位权,然后再相加,就得到了十进制形式。

2) 小数部分

例如,将八进制数字 423.5176 转换成十进制:

423.5176 = 4×82 + 2×81 + 3×80 + 5×8-1 + 1×8-2 + 7×8-3 + 6×8-4 = 275.65576171875(十进制)

小数部分和整数部分相反,要从左往右看,第1位的位权为 8-1=1/8,第2位的位权为 8-2=1/64,第3位的位权为 8-3=1/512,第4位的位权为 8-4=1/4096 …… 第m位的位权就为 8-m。

再如,将二进制数字 1010.1101 转换成十进制:

1010.1101 = 1×23 + 0×22 + 1×21 + 0×20 + 1×2-1 + 1×2-2 + 0×2-3 + 1×2-4 = 10.8125(十进制)

小数部分和整数部分相反,要从左往右看,第1位的位权为 2-1=1/2,第2位的位权为 2-2=1/4,第3位的位权为 2-3=1/8,第4位的位权为 2-4=1/16 …… 第m位的位权就为 2-m。

更多转换成十进制的例子:

· 二进制:1001 = 1×23 + 0×22 + 0×21 + 1×20 = 8 + 0 + 0 + 1 = 9(十进制)

· 二进制:101.1001 = 1×22 + 0×21 + 1×20 + 1×2-1 + 0×2-2 + 0×2-3 + 1×2-4 = 4 + 0 + 1 + 0.5 + 0 + 0 + 0.0625 = 5.5625(十进制)

· 八进制:302 = 3×82 + 0×81 + 2×80 = 192 + 0 + 2 = 194(十进制)

· 八进制:302.46 = 3×82 + 0×81 + 2×80 + 4×8-1 + 6×8-2 = 192 + 0 + 2 + 0.5 + 0.09375= 194.59375(十进制)

· 十六进制:EA7 = 14×162 + 10×161 + 7×160 = 3751(十进制)

将十进制转换为二进制、八进制、十六进制

将十进制转换为其它进制时比较复杂,整数部分和小数部分的算法不一样,下面我们分别讲解。

1) 整数部分

十进制整数转换为 N 进制整数采用“除 N 取余,逆序排列”法。具体做法是:

· 将 N 作为除数,用十进制整数除以 N,可以得到一个商和余数;

· 保留余数,用商继续除以 N,又得到一个新的商和余数;

· 仍然保留余数,用商继续除以 N,还会得到一个新的商和余数;

· ……

· 如此反复进行,每次都保留余数,用商接着除以 N,直到商为 0 时为止。

把先得到的余数作为 N 进制数的低位数字,后得到的余数作为 N 进制数的高位数字,依次排列起来,就得到了 N 进制数字。

下图演示了将十进制数字 36926 转换成八进制的过程:

从图中得知,十进制数字 36926 转换成八进制的结果为 110076。

下图演示了将十进制数字 42 转换成二进制的过程:

从图中得知,十进制数字 42 转换成二进制的结果为 101010。

2) 小数部分

十进制小数转换成 N 进制小数采用“乘 N 取整,顺序排列”法。具体做法是:

· 用 N 乘以十进制小数,可以得到一个积,这个积包含了整数部分和小数部分;

· 将积的整数部分取出,再用 N 乘以余下的小数部分,又得到一个新的积;

· 再将积的整数部分取出,继续用 N 乘以余下的小数部分;

· ……

· 如此反复进行,每次都取出整数部分,用 N 接着乘以小数部分,直到积中的小数部分为 0,或者达到所要求的精度为止。

把取出的整数部分按顺序排列起来,先取出的整数作为 N 进制小数的高位数字,后取出的整数作为低位数字,这样就得到了 N 进制小数。

下图演示了将十进制小数 0.930908203125 转换成八进制小数的过程:

从图中得知,十进制小数 0.930908203125 转换成八进制小数的结果为 0.7345。

下图演示了将十进制小数 0.6875 转换成二进制小数的过程:

从图中得知,十进制小数 0.6875 转换成二进制小数的结果为 0.1011。

如果一个数字既包含了整数部分又包含了小数部分,那么将整数部分和小数部分开,分别按照上面的方法完成转换,然后再合并在一起即可。例如:

· 十进制数字 36926.930908203125 转换成八进制的结果为 110076.7345;

· 十进制数字 42.6875 转换成二进制的结果为 101010.1011。

注意,十进制小数转换成其他进制小数时,结果有可能是一个无限位的小数。请看下面的例子:

· 十进制 0.51 对应的二进制为 0.100000101000111101011100001010001111010111...,是一个循环小数;

· 十进制 0.72 对应的二进制为 0.1011100001010001111010111000010100011110...,是一个循环小数;

· 十进制 0.625 对应的二进制为 0.101,是一个有限小数。

二进制和八进制、十六进制的转换

其实,任何进制之间的转换都可以使用上面讲到的方法,只不过有时比较麻烦,所以一般针对不同的进制采取不同的方法。将二进制转换为八进制和十六进制时就有非常简洁的方法,反之亦然。

1) 二进制整数和八进制整数之间的转换

二进制整数转换为八进制整数时,每三位二进制数字转换为一位八进制数字,运算的顺序是从低位向高位依次进行,高位不足三位用零补齐。下图演示了如何将二进制整数 1110111100 转换为八进制:

从图中可以看出,二进制整数 1110111100 转换为八进制的结果为 1674。

八进制整数转换为二进制整数时,思路是相反的,每一位八进制数字转换为三位二进制数字,运算的顺序也是从低位向高位依次进行。下图演示了如何将八进制整数 2743 转换为二进制:

从图中可以看出,八进制整数 2743 转换为二进制的结果为 10111100011。

2) 二进制整数和十六进制整数之间的转换

二进制整数转换为十六进制整数时,每四位二进制数字转换为一位十六进制数字,运算的顺序是从低位向高位依次进行,高位不足四位用零补齐。下图演示了如何将二进制整数 10 1101 0101 1100 转换为十六进制:

从图中可以看出,二进制整数 10 1101 0101 1100 转换为十六进制的结果为 2D5C。

十六进制整数转换为二进制整数时,思路是相反的,每一位十六进制数字转换为四位二进制数字,运算的顺序也是从低位向高位依次进行。下图演示了如何将十六进制整数 A5D6 转换为二进制:

从图中可以看出,十六进制整数 A5D6 转换为二进制的结果为 1010 0101 1101 0110。

由于在C语言编程中,二进制、八进制、十六进制之间几乎不会涉及小数的转换,所以这里我们只讲整数的转换,大家学以致用足以。另外,八进制和十六进制之间也极少直接转换,这里我们也不再讲解了。

总结

本节前面两部分讲到的转换方法是通用的,任何进制之间的转换都可以采用,只是有时比较麻烦而已。二进制和八进制、十六进制之间的转换有非常简洁的方法,所以没有采用前面的方法。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
单位不服二审生效判决向上一级法院申请再审 华为能升级鸿蒙系统的机型有哪些,升级鸿蒙系统会丢失数据吗 调音台调音技巧有哪些 调音台使用注意哪些问题 中档白酒什么酒好喝(中档白酒哪种好) 请说下子你有生以来喝过最醇厚的白酒是啥味道的? 类似去中歌的电视剧 有没有刘诗诗演的类似风中奇缘的电视剧 蓝盈盈曹俊曲终人散再成朋友,娱乐圈和平分手的情侣还有谁? 所有人产权比例怎么填 狗狗掉毛是怎么一回事?一个星期洗一次澡,也不去外面乱玩什么的,很干净... ...删掉了微信,后来又把我拉黑名单了,她是什么意思?她要告诉我什么... ...删了微信拉黑,以前吵架他把微信朋友圈关于我的也全部删了 ...微信拉黑,修改QQ密码,将所有有关我的东西删除,还禁止我进入他的QQ... 男生把我微信拉黑了,是什么意思? 策划师证报名条件策划师证报名条件有哪些 ...吵架了,他现在把我电话拉黑,QQ和微信都删掉了,事几个意思?亲们帮忙... ...一个lol体验服 安装完之后要更新 体验服更新怎么这么慢??平常更新... 佛山市华厦陶瓷城至恩平市沙湖镇多少公里 从佛山陈村出发到恩平市君堂镇塘库怎么走,有多少公里有多少公里 佛山码头至恩平耀丰染厂多少公里? 从佛山市到恩平市要多久呢 佛山三水与江门恩平的直线距离有多远 广州佛山南海去恩平几公里 佛山离恩平有多远 从佛山驾车到台山恩平怎么去 佛山开车到恩平要多少公里,时间,过路费,油钱 gta机库能改装什么飞机贴吧 css3text-justify属性怎么用 请问下cad里justifytext这个命令的全称是什么?想更改这个命令的快捷键... 朋友家新房子办酒 作为朋友要包多少红包呢 求解答 将下列十进制数转换成相应的二进制数、八进制数、十六进制数;_百度... 郑成功被谁杀了?是被自己儿子郑经杀的么? 盐城凤麟府售楼服务热线是多少? 地下负三层车位缺点 负三层车位潮湿吗 三面墙的车位优缺点 三星ML2165打印机墨盒左边容易出来,但右边卡住,用力也取不下来,怎样办... 三星ml2165碳粉怎么拆 您需要添加对方为好友 才能给对方发送会话消息 这是已经拉黑了吗? 如何做好微信营销:[2]提高微信加好友通过率 色盲能学习电气工程及其自动化专业吗 电气工程及其自动化色盲能报吗 关于施工企业与建造师不良行为的说法,正确的是( )。 建造师不良可以投标其他专业吗 根据《注册建造师执业管理办法(试行)》的规定,资质不良行为认定标准包 ... 职务是客服职称是什么 燃气客服部职称有哪些 ...广告客服人员应该 申报认定什么专业技术资格 职称是什么? 语音客服可以考职称吗 被女朋友拒绝了,把我微信也删了,还说让我以后不要去找她了,我也感觉...