Skip to content
On this page

进制转换

二进制转十进制

从最低位(右边)开始,将每个位上的数提取出来,乘以2的(位数-1)次方,然后求和

java
// 将二进制0b1011转为十进制
int a = 0b1011;
// 1*2 的0次方+1*2 的1次方+0*2 的2次方+1*2 的3次方
int b = 1 + 2 + 0 + 8;// 二进制a -> 十进制b 为 11

八进制转十进制

从最低位(右边)开始,将每个位上的数提取出来,乘以8的(位数-1)次方,然后求和

java
// 将8进制0234转为十进制
int c = 0234;
// 4*8 的0次方+3*8 的1次方+2*8 的2次方
int d = 4 + 24 + 128; // 八进制c -> 十进制d 为156

十六进制转十进制

从最低位(右边)开始,将每个位上的数提取出来,乘以16的(位数-1)次方,然后求和

java
// 将16进制0x23A转为十进制
int e = 0x23A;
// 10*16 的0次方+3*16 的1次方+2*16 的2次方
int f = 10 + 48 + 512; // 16进制e -> 十进制f 为 570

十进制转二进制

将该数不断除以2,直到商为0为止,然后将每步得到的余数倒过来,就是对应的二进制

java
// 将34转为二进制
int g = 34;
int h = 0b00100010; // 转换是得到0b100010,一个字节为8位,不足补0 -> 0b00100010

十进制转八进制

将该数不断除以8,直到商为0为止,然后将每步得到的余数倒过来,就是对应的八进制

java
// 将131转为八进制
int i = 131;
int j = 0203;

十进制转十六进制

将该数不断除以16,直到商为0为止,然后将每步得到的余数倒过来,就是对应的十六进制

java
// 将237转为十六进制
int k = 237;
int l = 0xed;

二进制转八进制

从最低位(右边)开始,将二进制数每3位一组,转成对应的八进制数即可

java
// 将0b11010101转成8进制
// 101 -> 5
// 010 -> 2
// 11 -> 3
// 结果 -> 0325

二进制转十六进制

从最低位(右边)开始,将二进制数每4位一组,转成对应的十六进制数即可

java
// 将0b11010101转成十六进制
// 0101 -> 5
// 1101 -> d
// 结果 -> 0xd5

八进制转二进制

将八进制每一位,转成对应的一个3位二进制数即可

java
// 0237转成2进制
// 7 -> 111
// 3 -> 011
// 2 -> 010
// 结果 0b10011111

十六进制转二进制

将16进制每一位,转成对应的一个4位二进制数即可

java
// 0x23b转成二进制
// b -> 1011
// 3 -> 0011
// 2 -> 0010
// 结果 0b001000111011