Skip to content

进制与进制转换


进制介绍

(1)二进制:0、1,满 2 进 1,以 0b 或 0B 开头

(2)十进制:0-9,满 10 进 1

(3) 八进制:0-7,满 8 进 1,以数字 0 开头表示

(4) 十六进制:0-9 及 A(10)-F(15),满 16 进 1,以 0x 或 0X 开头表示。此处的 A-F 不区分大小写


进制转换

各进制转十进制

(1) 二进制转十进制

(2) 八进制转十进制

(3) 十六进制转十进制

转换方法:从末尾开始,位数值乘以进制数的位数减一次方,末尾的位数设为 0,依次相加求得结果

举例:二进制101转十进制

计算过程:1*2的0次方 + 0*2的1次方 + 1 * 2的2次方 = 5

0b101=5

java
String binary = "11111111";
int decimal1 = Integer.parseInt(binary, 2);  // 255
String hex = "FF";
int decimal2 = Integer.parseInt(hex, 16);   // 255(不区分大小写)

十进制转各进制

(1) 十进制转二进制

(2) 十进制转八进制

(3) 十进制转十六进制

转换方法:除 n 取余法,逆序拼接

注意点:对于二进制,当成是一个字节,即 8 各 bit 位,如果不足八位,在前面补 0

java
int decimal = 255;

String binary1 = Integer.toString(decimal, 2);    // 二进制:"11111111"
String binary2 = Integer.toBinaryString(decimal);

String octal1 = Integer.toString(decimal, 8);     // 八进制:"377"
String octal2 = Integer.toOctalString(decimal);

String hex1 = Integer.toString(decimal, 16);      // 十六进制:"ff"(小写)
String hex2 = Integer.toHexString(decimal);      // 十六进制(大写):"FF"(专门方法)

二进制各进制

(1) 二进制转八进制

(2) 二进制转十六进制

转换方法

八进制:二进制中的每 3 位表示八进制中的1 位,23 = 8

十六进制:二进制中的每 4 位表示十六进制中的1 位,24 = 16

各进制转二进制

(1) 八进制转二进制

(2) 十六进制转二进制

转换方法;各进制 --> 十进制 --> 二进制

java
String binary = "11111111";
// 1. 二进制 → 十进制
int decimal = Integer.parseInt(binary, 2);
// 2. 十进制 → 八进制
String octal = Integer.toString(decimal, 8); // "377"