1. 二、八、十六进制转换成十进制
Java中的二进制以0b或者0B开头,二进制数转换成十进制的方法是用二进制的每一位乘以2的其位数-1.
如将二进制数0b1010转换成十进制数应为:0*2^0+1*2^1+0*2^2+1*2^3=10;
示例如下:
public class Practice02 {
public static void main(String[] args) {
int number = 0b1010;
System.out.println(number);
}
}
Java中的八进制以0开头,同二进制相似,八进制数转换成十进制数的方法是用八进制的每一位乘以8的其位数-1.
如将八进制数01010转换成十进制数应为:0*8^0+1*8^1+0*8^2+1*8^3=520;
示例如下:
public class Practice02 {
public static void main(String[] args) {
int number = 01010;
System.out.println(number);
}
}
Java中的十进制以0x或0X开头,同上,十六进制数转换成十进制数的方法是用十六进制的每一位乘以16的其位数-1.
如将十六进制数0x1010转换成十进制数应为:0*16^0+1*16^1+0*16^2+1*16^3=4112;
示例如下:
public class Practice02 {
public static void main(String[] args) {
int number = 0x1010;
System.out.println(number);
}
}
2. 十进制转换成二、八、十六进制
十进制数转换成其他进制数可用该数不断除以其他进制位,直到商小于进制位,再将最后的商和余数倒过来即得.
如10转换成二进制应为:10/2余0商5;5/2余1商2;2/2余0商1. 可得出10的二进制为0b1010.
100转换成八进制应为:100/8余4商12;12/8余4商1. 可得出100的八进制为0144.
1000转换成十六进制应为:1000/16余8商62;62/16余14商3. 可得出1000的十六进制为0x3e8.
示例如下:
public class Practice02 {
public static void main(String[] args) {
int binary = 0b1010;
int octal = 0144;
int hexadecimal = 0x3e8;
System.out.println(binary);
System.out.println(octal);
System.out.println(hexadecimal);
}
}
3. 二进制转换成八、十六进制
二进制转换成八、十六进制可从二进制数的低位(右边)开始分别以三位、四位为一组转换成对应进制.
如0b1010转换成八进制应该为:(1)(010)=12.
0b01100100转换成十六进制应该为:(0110)(0100)=64.
示例如下:
public class Practice02 {
public static void main(String[] args) {
int binary1 = 0b1010;
int binary2 = 0b01100100;
System.out.println(Integer.toOctalString(binary1));
System.out.println(Integer.toHexString(binary2));
}
}
4. 八、十六进制转换成二进制
八、十六进制转换成二进制需从低位开始把八、十六进制的每一位转成对应的三位、四位一组的二进制.
如01010转换成二进制应该为:(001)(000)(001)(000)=0b001000001000.
0x3e8转换成二进制应该为:(0011)(1110)(1000)=0b001111101000.
示例如下:
public class Practice02 {
public static void main(String[] args) {
int octal = 01010;
int hexadecimal = 0x3e8;
System.out.println(Integer.toBinaryString(octal));
System.out.println(Integer.toBinaryString(hexadecimal));
}
}