进制转化
首先说个很好记的一句话:几进制,满几进一
比如二进制如何 表示3
十进制 : 0 1 2 3
二进制: 0 1 10 11
那在看看别的进制
十进制 : 6 7 8 9
八进制: 6 7 10 11
十进制 : 8 9 10 11 ... 15 16 17
十六进制: 8 9 a b ... f 10 11
这是当数值比较小时,可能比较轻松的做转化,那么当数值比较大的时候该怎么快速计算呢
二进制: 是0,1组成 0b开头表示二进制
//先看两个例子,二进制转十进制
System.out.println(0b10); //0 * 2^0 + 1*2^1=2
System.out.println(0B0110); // 0 * 2^0 + 1*2^1 + 1*2^2+ 0*2^3 =6
/*
第一个:个位数上为"0",0 * 2^0=0 ; 十位数上为"1" 1*2^1=2 得出结果为2
第二个:个位数上为"0",0 * 2^0=0 ; 十位数上为"1" 1*2^1=2 百位数上为:"1" 1*2^2
千位数上为:"0" 0*2^3 它们相加得出结果和为6.
*/
我们可以用到这句公式:
- 从右往左计算;每一位数的值*进制数(次方从0开始,每次加1) 结果就是十进制的值
其他进制转化为十进制也一样可以用这个公式.
八进制: 是0…7之间的数组成 以0开头的数表示八进制
System.out.println(0110); // 0 * 8^0 + 1*8^1+1*8^2 = 72
十六进制: 由0-9 ,a-f(大小写都可以)之间组成 以ox开头表示十六进制
System.out.println(0X15); // 5* 16^0 + 1* 16^1 = 21
那么十进制的数如何转化为其他进制的数呢
- 进制的数一致除以要转的进制数 求余数,从下往上看
例:10转为二进制 10/2 =5 (没有余数 记0) 5/2= 2 余1(有余数记1) 2/2=1(没有余数记0) 剩下一个1不能除了
那么从下往上看的出来的数为:1010
126转为八进制 126/8 =15 (有余数 记6) 15/8= 1 余7(有余数记7) 剩下一个1不能除了 记1
那么从下往上看的出来的数为:176
300转为十六进制 300/16 =18 (有余数 记12) 18/16= 1 (有余数记2) 剩下一个1不能除了 记1
那么从下往上看的出来的数为:12c
以上就是进制转化的简单计算方法,希望对大家有点帮助