java基础:进制和转换
关于进制
所有数字在计算机底层都以二进制形式存在。
对于整数,有四种表示方式
- 二进制(binary):满2进1,以0B或0b开头
- 十进制(decimal):满10进1
- 八进制(octal):0-7,满8进1,以数字0开头
- 十六进制(hex):满16进1,以0X或0x开头表示,A-F不区分大小写。
public class BinTest {
public static void main(String[] args) {
int i = 0123;//八进制
int j = 0x123;//十六进制
int m = 0b1010;//二进制
System.out.println(m);
System.out.println(i);
System.out.println(j);
}
}
二进制
- Java整数常量默认是int类型,当用二进制定义整数时,其第32位是符号位; 当是long类型时,二进制默认占64位,第64位是符号位
- 二进制的整数有如下三种形式:
- 原码:直接将一个数值换成二进制数。最高位是符号位
- 负数的反码:是对原码按位取反,只是最高位(符号位)确定为1。
- 负数的补码:其反码加1。
-
计算机以二进制补码的形式保存所有的整数。
- 正数的原码、反码、补码都相同
- 负数的补码是其反码+1
二进制、八进制、十六进制转换
进制之间的转换方法
Integer包装类的方法
//将int转换为十六进制
public static String toHexString(int i)
//将int转换为八进制
public static String toOctalString(int i)
//将int转换为二进制
public static String toBinaryString(int i)
测试
public class BinTest {
public static void main(String[] args) {
int i = 0123;//八进制
int j = 0x123;//十六进制
int m = 0b1010;//二进制
//二进制转十六进制
System.out.println(Integer.toHexString(m));
//八进制转二进制
System.out.println(Integer.toBinaryString(i));
//十六进制转十进制
System.out.println(Integer.toString(j));
}
}
此外还可以使用BigInteger的方法进行进制转换,这里不再赘述。