进制转换在上大学时就学了,时到现在忘得已经差不多了,正好这两天看了几篇关于二进制的文章,顺便也就复习了一下,整数的十进制转二进制用辗转相处,二进制转十进制用按位乘与2的位数次方。
另外在将二进制转为十进制时需要用到power运算,我是直接用的位运算,当然也可以用Math.pow(),一样能实现。
public class Test4 {
public static void main(String[] args) {
/*
十进制转二进制
辗转相除:
666 / 2 = 333 余 0
333 / 2 = 166 余 1
166 / 2 = 83 余 0
依次类推直到相除结果为0
*/
int decimal = 666;
while (decimal != 0) { //
System.out.print(decimal % 2);
decimal /= 2;
}
System.out.println();
/*
二进制转十进制
从最低位开始,每一位 * 基数(二进制基数就是2)的位数次方 累加
0101100101
从最右侧开始 (1 * 2的0次方) + (0 * 2的1次方) + (1 * 2的2次方) + ...
*/
int[] binary = {0, 1, 0, 1, 1, 0, 0, 1, 0, 1};
int result = 0;
for (int index = 0; index < binary.length; index++) {
/*
Java中 2的n次方实际上就是1左移n位
00000000000000000000000000000001 也就是int型的1 左移0位后(也就是没移动) 00000000000000000000000000000001 还是int型的1
00000000000000000000000000000001 左移一位后变为 00000000000000000000000000000010 也就是int型的2
00000000000000000000000000000001 左移2位后变为 00000000000000000000000000000100 也就是int型的4
以此类推
*/
result += binary[index] * (1 << index);
}
System.out.println(result);
}
}