二进制、八进制、十进制、十六进制之间的转换
写在前面:博主是一位普普通通的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.252=0.5取出整数部分0
0.5*2=1取出整数部分1
故转换成二进制为0.101
例子2:
0.7转换成二进制
0.72=1.4取出整数部分1
0.42=0.8取出整数部分0
0.82=1.6取出整数部分1
0.62=1.2取出整数部分1
0.22=0.4取出整数部分0
0.42=0.8取出整数部分0
0.82=1.6取出整数部分1
0.62=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
转换成十六进制:
同理十六进制转换成八进制: