进制
对于整数,有四种表示方式:
- 二进制:
0,1
,满2进1,以0b或0B开头 - 十进制:
0-9
,满10进1 - 八进制:
0-7
,满8进1,以数字0开头 - 十六进制:
0-9及A(10)-F(15)
,满16进1,以0x或0X开头,此处的A-F不区分大小写
举例说明
public class BinaryTest{
public static void main(String[] args){
//二进制,以0b或0B开头
int n1 = 0b1010;
//十进制
int n2 = 1010;
//八进制,以0开头
int n3 = 01010;
//十六进制,以0x或0X开头
int n4 = 0x10101;
System.out.println("n1 = " + n1);
System.out.println("n2 = " + n2);
System.out.println("n3 = " + n3);
System.out.println("n4 = " + n4);
}
}
n1 = 10
n2 = 1010
n3 = 520
n4 = 65793
二进制转十进制
规则:从最低位(右边)开始,将每个位上的数都提取出来,乘以2的(位数-1)次方,然后求和
案例
0b1010 => 0 * 2^0 + 1 * 2^1 + 0 * 2^2 + 1 * 2^3 = 0 + 2 + 0 + 8 = 10
八进制转十进制
规则:从最低位(右边)开始,将每个位上的数都提取出来,乘以8的(位数-1)次方,然后求和
案例
0234 => 4 * 8^0 + 3 * 8^1 + 2 * 8^2 = 4 + 24 + 128 = 156
十六进制转十进制
规则:从最低位(右边)开始,将每个位上的数都提取出来,乘以16的(位数-1)次方,然后求和
案例
0x23A => 10 * 16^0 + 3 * 16^1 + 2 * 16^2 = 10 + 48 +512 = 570
十进制转二进制
规则:将该数不断除以2,直到商0为止,然后将每步得到的余数倒过来,就是对应的二进制
案例
34 => 0B00100010 //还要在前面再补两个位凑成8位
十进制转八进制
规则:将该数不断除以8,直到商0为止,然后将每步得到的余数倒过来,就是对应的八进制
案例
131 => 0203
十六进制转八进制
规则:将该数不断除以16,直到商0为止,然后将每步得到的余数倒过来,就是对应的十六进制
案例
237 => 0XED
二进制转八进制
规则:从低位开始,将二进制每三位为一组,转成对应的八进制即可
案例
0b11010101 => 11(3)010(2)101(5) => 0325
二进制转十六进制
规则:从低位开始,将二进制每四位为一组,转成对应的十六进制即可
案例
0b11010101 => 1101(13)0101(5) => 0xD5
八进制转二进制
规则:将八进制数每一位,转成对应的一个3位的二进制数即可
案例
0237 => 2(010)3(011)7(111) => 0b010011111 => 0b10011111
十六进制转二进制
规则:将十六进制数每一位,转成对应的一个4位的二进制数即可
案例
0x23B = 2(0010)3(0011)B(1011) => 0b001000111011