二进制,八进制,十进制,十六进制 之间的相互转换
在JAVA面试题中 有时会出现进制间的转换,
十进制转二进制
十进制转二进制,即十进制除二取余数
余数为权位上的数,得到商,继续除二,直到商为0
如:150/2=75 —-0
75/2=37 ——-1
37/2=18——–1
18/2=9———0
9/2=4———1
4/2=2——-0
2/2=1——–0
1/2=0———1
从最后一个余数开始读到第一个 就是该十进制的二进制–10010110
如果是负数150 先取反 01101001 然后在加1 01101010
二进制转为十进制数 以 10010110 为例子
1*2(7次方)+0*2(6次方)+0*2(5次方)+1*2(4次方)+0*2(3次方)+1*2(2次方)+1*2(1次方)+0*2(0次方)=150;
150二进制转换为八进制的数为226
10 010 110 1,从右到左,不足时补零。 2,取三合一 3,按权展开求和
010 010 110
0*2(2次方)+1*2(1次方)+0*2(0次方) 0*2(2次方)+1*2(1次方)+0*2(0次方) 1*2(2次方)+1*2(1次方)+0*2(0次方)
2 2 6
八进制转换二进制
2 2 6
2/2=1;—-0 2/2=1;—-0 6/2=3 — 0 3/2=1 –1
1/2=0;—–1; 1/2=0;—–1; 1/2=0; –1
从下至上 取三位 不足时在最左边补0
0-10 0-10 110
二进制转换成16进制
1 0010 1100
从右至左 取四合一,不足时补零
00001 0010 1100
0*2(3次方)+0*2(2次方)+0*2(1次方)+1*2(0次方)=1;0*2(3次方)+0*2(2次方)+1*2(1次方)+1*2(0次方)=2;1 *2(3次方)+1*2(2次方)+0*2(1次方)+0*2(0次方)=12=c
12c
十六进制转二进制
1 2 c
1/2=0 —-1 2/2=1 —-0 12/2=6 —0
1/2=0 —–1 6/2=3 —0
3/2=1-1
1/2=0 1
不足在最左边补零 0001 0010 1100
从有效位开始看得到 100101100
十进制,转八进制 。 和十进制转十六进制
150/8=18 —6 150/16=9—6
18/8=2 —-2 9/16=0—9;
2/8=0– —2
226 96
八进制转十进制 十六进制转十进制
按照权展开
2*8(2次方)+2*8(1次方)+2*8(0次方)=150; 9*16(1次方)+6*16(0次方)=150;
十六进制和八进制之间的转换
第一种 先转成二进制 然后再进行相互转换
第二种 先转换成十进制,然后再进行相互转换
总结:
进制间的转换要注意两者之间权的对应关系
不能直接转换的可通过间接转换的方法进行转换。