二进制、八进制、十进制、十六进制之间的转换

写在前面:博主是一位普普通通的19届双非软工在读生,平时最大的爱好就是听听歌,逛逛B站。博主很喜欢的一句话花开堪折直须折,莫待无花空折枝:博主的理解是头一次为人,就应该做自己想做的事,做自己不后悔的事,做自己以后不会留有遗憾的事,做自己觉得有意义的事,不浪费这大好的青春年华。博主写博客目的是记录所学到的知识并方便自己复习,在记录知识的同时获得部分浏览量,得到更多人的认可,满足小小的成就感,同时在写博客的途中结交更多志同道合的朋友,让自己在技术的路上并不孤单。

目录:
1.十进制转二、 八、十六进制
       
整数部分的十进制转二、八、十六进制
       
小数部分的十进制转二、八、十六进制
2.二、八、十六进制转换成十进制
       
整数部分二、八、十六进制转换成十进制
       
小数部分二、八、十六进制转换成十进制
3.二进制和八、十六进制之间的转换
4.八进制十六机制之间的相互转化

1.十进制转二、 八、十六进制

1.1整数部分的十进制转二、八、十六进制

转换所使用的方法是除n取余法,转换成几进制n就等于几,具体的实现使是:

每次将整数部分除以n,直到商为0,每次得到的余数倒叙便是最后的答案

举个例子:

我们把十进制的123转成二进制:

二进制、八进制、十进制、十六进制之间的转换

最后得到的答案是:1111011

十进制转换成其他进制同理

1.2小数部分的十进制转二、八、十六进制

采用的是乘基取证,顺序排列的方法,即要转换成几进制,基就为几

例子1:

如:

0.625转换成二进制
0.6252=1.25取出整数部分1
0.25
2=0.5取出整数部分0
0.5*2=1取出整数部分1
故转换成二进制为0.101

例子2:

0.7转换成二进制
0.72=1.4取出整数部分1
0.4
2=0.8取出整数部分0
0.82=1.6取出整数部分1
0.6
2=1.2取出整数部分1
0.22=0.4取出整数部分0 
0.4
2=0.8取出整数部分0
0.82=1.6取出整数部分1
0.6
2=1.2取出整数部分1
0.2*2=0.4取出整数部分0
故转换成二进制为0.101100110........

那么他的原理如下:

现在我们将小数X转换为h进制(X的整数部分 是0)

还是先看最后转化后的 结果 会长什么样,假设一个数X在转换为h进制后表示为

二进制、八进制、十进制、十六进制之间的转换

则由进制的表示方法:

二进制、八进制、十进制、十六进制之间的转换

我们的思路仍是逐个求出ai是多少

于是只要迭代地 X乘h,直到小数部分为0时停止乘h,将 每次得到的整数部分 正序排列 即为答案

有时小数部分永远不为0

2.二、八、十六进制转换成十进制

2.1整数部分二、八、十六进制转换成十进制

使用的是从低位到高位乘以权重的方法

举个例子:

对于二进制数101011转换成十进制数:

第0位的权值是2的0次方,第1位的权值是2的1次方,第2位的权值是2的2次方,依次递增下去,把最后的结果相加的值就是十进制的值了。

1 *20+1 *21+0 *22 …得到十进制数为43

其他进制转十进制类似

2.2小数部分二、八、十六进制转换成十进制

这个其实没啥别的东西,还是和上面一样,只是权值变成了2-1,2-2

把二进制0.101转换成十进制:

1*2-1+0 *2-2+1 *2-3得十进制0.625

3.二进制和八、十六进制之间的转换

3.1二进制和八进制之间的转换

二进制转八进制使用取三合一法,具体实现:

即从二进制的小数点为分界点,向左(向右)每三位取成一位,接着将这三位二进制按权相加,然后,按顺序进行排列,小数点的位置不变,得到的数字就是我们所求的八进制数。如果向左(向右)取三位后,取到最高(最低)位时候,如果无法凑足三位,可以在小数点最左边(最右边),即整数的最高位(最低位)添0,凑足三位。

例如二级制11010111.0100111装换成八进制(整数最高位前补0和小数最低位后补0都不影响数的大小)

二进制、八进制、十进制、十六进制之间的转换
同理八进制转二进制也一样:

二进制、八进制、十进制、十六进制之间的转换

3.2二进制和十六进制之间的转换

二进制转十六进制使用取四合一法,和上面类似:

比如二进制11010111转为十六进制:

二进制、八进制、十进制、十六进制之间的转换
同理十六进制转二进制:

二进制、八进制、十进制、十六进制之间的转换

4.八进制和十六进制之间的转换

八进制转十六进制我们需要先把八进制转换成二级制,再把二进制转成十六进制

比如八进制327转换成十六进制:

二进制、八进制、十进制、十六进制之间的转换

同理十六进制转换成八进制:
二进制、八进制、十进制、十六进制之间的转换