进制转换

本文详细介绍了二进制、八进制、十进制和十六进制之间的转换方法,包括按权相加法、碾除法以及特定进制间的转换技巧。此外,还提供了一个关于进制转换的面试题,通过解决该题展示了进制转换的实际应用。进制转换是IT行业中程序员必备的基础技能之一。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

进制转换

关于进制转换,这是基本上每个人都会学到的,我还还记得高中就有关于进制转换的题。那么在IT行业,这基本上每个程序员都要掌握。

首先,在电脑上我们见到的有二进制,八进制,十进制,十六进制。对比我们平时用的10进制来学习别的进制是个非常好的方法。十进制逢10进1,二进制逢2进1…好了,还是进入正题吧。

1、二进制转十进制

​ 给你一个二进制数:0B10011 要求转换成10进制数,我们高中就学过按权相加法,名字啥的不重要,咱能算就行了。从最右边开始,从右到左给每一位头上按顺序标上0,1,2,…接着把每一位数乘以2的头标次方,再把每一位相加上,其结果就是十进制数,如图:
在这里插入图片描述

这里如果熟练的话推荐用8421法(我自己是这么叫的)从右往左依次写1 2 4 8…(2的n次方)
再把二进制数一对比,对应的1上的数字直接相加就得出结果了,我想了想,原理是一样的,只不过熟练的标上8 4 2 1后我们不用乘以2的次方了,运算简便了。

在这里插入图片描述

十进制转二进制就是用碾除法
在这里插入图片描述

或者用更方便的8421法
在这里插入图片描述

2、二进制转八进制

​ 八进制数以0开头,例如072(注意010110也是八进制,因为它没有以0b或0B开头)。怎么转呢

在这里可以用二进制转十进制的按权相加,完全没有问题,但是,这里有个特殊性,一个八进制位相当于三个二进制位,所以可以换种方法计算。我们把二进制分成三个为一组(从右边开始),不足三个补0再把每一组转换成10进制,拼在一起就是我们要的结果了
在这里插入图片描述

八进制转二进制按此方法反过来就是了,也就是把每一位八进制数转成三位二进制数,拼起来就是我们要的二进制数。

3、二进制转十六进制

​ 十六进制以0x开头,例如0x89。十六进制逢16进1,过了9以后便用A代表10,B代表11,C代表12,D代表13,E代表14,F代表15

二进制转十六进制和转八进制类似,只不过这里是把4个二进制位转成一个十六进制位
在这里插入图片描述

关于八进制和十六进制和别的进制转十进制,按照二进制的按权相加法就行,这里不再赘述。

附:一个关于进制转换的面试题

​ 567*456=150216在n进制下成立,问n为多少

解答:个位数相乘67=42 在10进制的情况下,末尾应该为2,但在几进制下变成了150216中的6了。
那应该是2作为了前一位的个数,然后n进制化了;
两个个位相乘的结果6
7=42 在对n进制取余后为6
列下了这个式子 42%n=6
42-6=36
因此36中6以上的的因数都可能为n
n=9,12,18,36
因此范围就缩小了
(5n2+6n+7)*(4n2+5n+6)=20n4+49n3+88n^2+71n+42 1
n5+5n4+2n^2+n+6 … 2
最后将进制数挨个带入,如果1式和2式相等,那么即为结果
2
最后将进制数挨个带入,如果1式和2式相等,那么即为结果
最终结果为 18

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值