进制之间如何转换?
写在前面:博主是一只经过实战开发历练后投身培训事业的“小山猪”,昵称取自动画片《狮子王》中的“彭彭”,总是以乐观、积极的心态对待周边的事物。本人的技术路线从Java全栈工程师一路奔向大数据开发、数据挖掘领域,如今终有小成,愿将昔日所获与大家交流一二,希望对学习路上的你有所助益。同时,博主也想通过此次尝试打造一个完善的技术图书馆,任何与文章技术点有关的异常、错误、注意事项均会在末尾列出,欢迎大家通过各种方式提供素材。
- 对于文章中出现的任何错误请大家批评指出,一定及时修改。
- 有任何想要讨论和学习的问题可联系我:zhuyc@vip.163.com。
- 发布文章的风格因专栏而异,均自成体系,不足之处请大家指正。
进制之间如何转换?
本文关键字:二进制、十进制、进制转换、八进制、十六进制
一、进制
大家最开始接触的数字和计算方法都是基于十进制的,那么进制的意思也就是一种计数方法。根据相应的进制规则进行进位,相同的一串数字在不同的进制下也会对应不同的大小,所以在程序中都会对数字的进制有明确的标识。
1. 十进制
十进制就是满10进1,那么每一位上的数字范围也就只能是0~9,也是默认使用的进制。
2. 二进制
二进制就是满2进1,那么每一位上的数字范围也就只能是0或1,Java中使用0b开头。
3. 八进制
八进制就是满8进1,那么每一位上的数字范围也就只能是0~7,Java中使用0开头。
4. 十六进制
十六进制就是满16进1,对于大于10的数字从字母A开始进行代表,即A代表10,B代表11,F代表15,那么每一位上的数字范围也就只能是0~F,Java中使用0x开头。
二、十进制与二进制的转换
在最开始接触编程时总要学习一下和二进制的转换,因为这是计算机在工作时使用的进制,很多位运算的操作也是在二进制下进行的,所以我们必须要掌握与二进制相关的进制转换。
1. 二进制转换为十进制
将一个其他进制数转换为十进制数的过程其实就是根据相应的进制来进行换算。在转换之前我们先来看一下我们最熟悉不过的十进制,比如:1367。看到这个数字我们都会毫不犹豫的说出:一千三百六十七,这是我们习以为常的事情,但是具体的过程是什么呢?
- 1367 = 7 × 1 + 6 × 10 + 3 × 100 + 1 × 1000
- 1367 = 7 × 10^0 + 6 × 10^1 + 3 × 10^2 + 1 × 10^3
从上面的步骤可以看出,其实一个数字的解读其实是从右向左进行的,只不过由于我们对于十进制太过了解所以忽略了这个步骤,那么用这个数字感受一下:1237173927,我猜你一定是在从右往左,从个位开始数,到底是多少吧?
那么其他进制的运算规则也是如此,现在我们就来读几个二进制数。
- 101:1 × 2^0 + 0 × 2^1 + 1 × 2^2 = 5
- 10010:0 × 2^0 + 1 × 2^1 + 0 × 2^2 + 0 × 2^3 + 1 × 2^4 = 18
- 1010101:1 × 2^0 + 0 × 2^1 + 1 × 2^2 + 0 × 2^3 + 1 × 2^4 + 0 × 2^5 + 1 × 2^6 = 85
恭喜,我们的进制转换已经完成了。方法就是从右至左,将乘得的结果进行相加。同时,我们注意到,只要末位是0,那么这个数一定可以被2整除,其他进制也有这个规律(就像个位为零的数一定可以被10整除)。
2. 十进制转换为二进制
- 常规方法:
将一个十进制数转换为一个二进制数的过程其实就是一个不断算除法和记录余数的过程,既然是转换为二进制,那么我们的除数就是2,具体过程如下:
10进制数:37 -> 二进制结果:100101
- 小数字快速转换法:
对于不是很大的数字其实有一种比较快的转换办法,但是前提是我们要对2的次方的运算结果比较熟悉,基本上记忆到2的10次方为1024就足够用了。方法就是我们将一个十进制数直接拆解为几个2的n次方加和的形式,从最大的数开始。
比如对于37,最大的二进制数是32,接下来是4,然后是1,那么等式就是:37 = 32 + 4 + 1。
- 32是2的5次方
- 4是2的平方
- 1是2的零次方
所以对应的二进制数的第6个位置,第3个位置,第1个位置上的数字为1(需要错开一位),其他为0。用这种方法也能够快速的知道最高位为1的位置,可以很流畅的按照从左至右的顺序直接将二进制写出来,但是对于大的数字就不太适用了。
文章来源: blog.csdn.net,作者:小山猪的沙塔,版权归原作者所有,如需转载,请联系作者。
原文链接:blog.csdn.net/u012039040/article/details/103208971
- 点赞
- 收藏
- 关注作者
评论(0)