进制:就是进位制,是人们规定的一种进位方法。 对于任何一种进制–X进制,就表示某一位置上的数运算时是逢X进一位。二进制就是逢二进一,八进制是逢八进一,十进制是逢十进一,十六进制是逢十六进一。
一、不同进制的数据组成
-
二进制
-由0,1组成。以0b开头 -
八进制
由0,1,…7组成。以0开头 -
十进制
由0,1,…9组成。整数默认是十进制的 -
十六进制
由0,1,…9,a,b,c,d,e,f(大小写均可)。以0x开头
首先来写一个Demo,看下数值为100在每个进制的输出的值
代码如下:
public class Demo {
public static void main(String[] args) {
System.out.println(100); //十进制
System.out.println(0b100); //二进制
System.out.println(0100); //八进制
System.out.println(0x100); //十六进制
}
}
运行结果:
100
4
64
256
这时候有人问我?
为什么在100前面加上0b结果是4呢?100前面加上0结果是64呢?100前面加上0x结果是256呢?不要着急,下面我来给你揭晓答案。
二、其他进制到十进制
-
二进制(100)————>十进制(4)
100 = 12² + 02^1 + 0*2^1 = 4+0+0 = 4
-
八进制(100)————>十进制(64)
100 = 18² + 08^1 + 0*8^0 = 64+0+0 = 64
-
十六进制(100)————>十进制(256)
100 = 116² + 016^1 + 0*16^1=256+0+0=256
[一、]进制练习,得到下面数据的十进制值:
0b10101
=1*2^4 + 1*2^2 + 1*2^0
=16 + 4 + 1
=21
0123
=1*8^2 + 2*8^1 + 3*8^0
=64 + 16 + 3
=83
0x3c
=3*16^1 + c*16^0
=48 + 12
=60
三、十进制到其他进制(方法:除基取余,只到商为0,余数反转)
-
十进制(20)————>二进制(?)
-
首先我们来解释一下上面的方法怎么理解:
-
20为十进制,要转为二进制,我们一定要记住余数,因为它最后就是我们的想要的答案,首先用:20/2=10余0,10/2=5余0,5/2=2余1,2/2=1余0,1/2=0余1。
-
余数反转,结果是:10100
-
大家可以用上面二进制转十进制的方法来验证一下,1*24+1*2²=20
-
认真的看了上面的十进制到二进制,我们就可以很容易的推理出十进制到八进制、十六进制的方法了,我相信聪明的你可以做到的。
四、任意x进制到y进制的转换?(方法:用十进制做桥梁)
-
x进制————>十进制
-
十进制————>y进制