进制
对于整数,有四种表现方式:
- 二进制: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不区分大小写。
举例说明
package five;
public class y1 {
public static void main(String[] args) {
//n1 二进制
int n1 = 0b1010;
//n2 10进制
int n2 = 1010;
//n3 8进制
int n3 = 01010;
//n4 16进制
int n4 = 0x10101;
System.out.println("n1 ="+n1);//10
System.out.println("n2 ="+n2);//1010
System.out.println("n3 ="+n3);//520
System.out.println("n4 ="+n4);//65793
}
}
进制的图示
| 十进制 | 十六进制 | 八进制 | 二进制 |
|---|---|---|---|
| 0 | 0 | 0 | 0 |
| 1 | 1 | 1 | 1 |
| 2 | 2 | 2 | 10 |
| 3 | 3 | 3 | 11 |
| 4 | 4 | 4 | 100 |
| 5 | 5 | 5 | 101 |
| 6 | 6 | 6 | 110 |
| 7 | 7 | 7 | 111 |
| 8 | 8 | 10 | 1000 |
| 以此类推 |
进制转换介绍
其他进制转十进制
- 规则:从最低位(右边)开始,将每个位上的数提取出来,乘以(2,8,16进制)的(位数-1)次方,然后求和
- 二进制转十进制
案例
0b1011
1*2的(1-1)次方+1*2的(2-1)次方+0*2的(3-1)次方+1*2的(4-1)次方
- 八进制转十进制
0234
4*8的(1-1)次方+3*8的(2-1)次方+2*8的(3-1)次方+0*8的(4-1)次方
- 十六进制转十进制
0x23A A(10)-F(15)
10*16的(1-1)次方+3*16的(2-1)次方+2*16的(3-1)次方
十进制转其他进制
- 规则:将该数不断除以(2,8,16),直到商为0为止,然后将每步得到的余数倒过来写,就是对应的二进制。
- 10进制转2进制
案例:
将34转为二进制
0b100010
转换步骤:
34 ÷ 2 = 17 余 0⬆️
17 ÷ 2 = 8 余 1⬆️
8 ÷ 2 = 4 余 0⬆️
4 ÷ 2 = 2 余 0⬆️
2 ÷ 2 = 1 余 0⬆️
1 ÷ 2 = 0 余 1⬆️
flowchart TD
A[34 ÷ 2 = 17] --> B[余0]
B --> C[17 ÷ 2 = 8]
C --> D[余1]
D --> E[8 ÷ 2 = 4]
E --> F[余0]
F --> G[4 ÷ 2 = 2]
G --> H[余0]
H --> I[2 ÷ 2 = 1]
I --> J[余0]
J --> K[1 ÷ 2 = 0]
K --> L[余1]
M[二进制结果: 0b100010]
L --> M
- 10进制转8进制
案例:
将131转为8进制
0203
转换步骤:
131 ÷ 8 = 16 余 3⬆️
16 ÷ 8 = 2 余 0⬆️
2 ÷ 8 = 0 余 2⬆️
flowchart TD
A[131 ÷ 8 = 16] --> B[余3]
B --> C[16 ÷ 8 = 2]
C --> D[余0]
D --> E[2 ÷ 8 = 0]
E --> F[余2]
G[八进制结果: 0203]
F --> G
- 10进制转16进制
案例:
将237转为8进制
0xED
转换步骤:
237 ÷ 16 = 14 余 13(十六进制中 13 表示为 D)⬆️
114 ÷ 16 = 0 余 14(十六进制中 14 表示为 E)⬆️
flowchart TD
A[237 ÷ 16 = 14] --> B[余13 = D]
B --> C[14 ÷ 16 = 0]
C --> D[余14 = E]
E[十六进制结果: 0xED]
D --> E
二进制转其他进制
- 2进制转换成8进制
- 从低位开始,将二进制数每三位一组,转成对应的八进制数即可。
案例:
请将0b11010101转为八进制
0325
转换步骤:
将二进制数从右至左每 3 位分组:0b11 010 101
左侧不足 3 位时补 0:0b011 010 101
转换每组二进制为八进制:
011 → 3
010 → 2
101 → 5
flowchart TD
A[二进制: 0b11010101] --> B[分组: 011 010 101]
B --> C1[011 → 3]
B --> C2[010 → 2]
B --> C3[101 → 5]
C1 --> D[八进制结果: 0325]
C2 --> D
C3 --> D
- 2进制转换成16进制
- 从低位开始,将二进制数每四位一组,转成对应的十六进制数即可。
案例:
请将0b11010101转为十六进制
0xD5
转换步骤:
0101 → 5 (十进制) → 5 (十六进制)
将二进制数从右至左每 4 位分组:0b1101 0101
1101 → 13 (十进制) → D (十六进制)
flowchart TD
A[二进制: 0b11010101] --> B[分组: 1101 0101]
B --> C1[1101 → 13 → D]
B --> C2[0101 → 5 → 5]
C1 --> D[十六进制结果: D5]
C2 --> D
八进制,十六进制转成二进制
- 八进制转为二进制
- 规则:将八进制数每一位,转成对应的一个三位的二进制数即可。
案例:
请将0237转成二进制
转换步骤:
将八进制数按位拆分:0、2、3、7
转换每位八进制为二进制:
0 → 000
2 → 010
3 → 011
7 → 111
合并所有二进制位:000 010 011 111
去掉前导零,得到最终二进制结果:10011111
flowchart TD
A[八进制: 0237] --> B[按位拆分]
B --> C1[0 → 000]
B --> C2[2 → 010]
B --> C3[3 → 011]
B --> C4[7 → 111]
C1 --> D[合并: 000 010 011 111]
C2 --> D
C3 --> D
C4 --> D
D --> E[去掉前导零]
E --> F[二进制结果: 10011111]
- 十六进制转为二进制
- 规则:将十六进制数每一位,转成对应的一个四位的二进制数即可。
案例:
请将0x23B转成二进制
转换步骤:
将十六进制数按位拆分:2、3、B
转换每位十六进制为二进制:
2 → 0010
3 → 0011
B → 1011(B 在十六进制中表示 11)
合并所有二进制位:0010 0011 1011
去掉前导零,得到最终二进制结果:1000111011
flowchart TD
A[十六进制: 0x23B] --> B[按位拆分]
B --> C1[2 → 0010]
B --> C2[3 → 0011]
B --> C3[B → 1011]
C1 --> D[合并: 0010 0011 1011]
C2 --> D
C3 --> D
D --> E[去掉前导零]
E --> F[二进制结果: 1000111011]

被折叠的 条评论
为什么被折叠?



