二进制,八进制,十进制,十六进制 之间的相互转换
在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;
十六进制和八进制之间的转换
第一种 先转成二进制 然后再进行相互转换
第二种 先转换成十进制,然后再进行相互转换
总结:
进制间的转换要注意两者之间权的对应关系
不能直接转换的可通过间接转换的方法进行转换。