进制转换-基本知识

进制

对于整数,有四种表现方式:

  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不区分大小写。

举例说明

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
    }
}

进制的图示

十进制十六进制八进制二进制
0000
1111
22210
33311
444100
555101
666110
777111
88101000
以此类推

进制转换介绍

其他进制转十进制

  • 规则:从最低位(右边)开始,将每个位上的数提取出来,乘以(2,8,16进制)的(位数-1)次方,然后求和
  1. 二进制转十进制

案例

0b1011

1*2的(1-1)次方+1*2的(2-1)次方+0*2的(3-1)次方+1*2的(4-1)次方
  1. 八进制转十进制
0234

4*8的(1-1)次方+3*8的(2-1)次方+2*8的(3-1)次方+0*8的(4-1)次方
  1. 十六进制转十进制
0x23A        A(10)-F(15)

10*16的(1-1)次方+3*16的(2-1)次方+2*16的(3-1)次方

十进制转其他进制

  • 规则:将该数不断除以(2,8,16),直到商为0为止,然后将每步得到的余数倒过来写,就是对应的二进制。
  1. 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

  1. 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

  1. 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

二进制转其他进制

  1. 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

  1. 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

八进制,十六进制转成二进制

  1. 八进制转为二进制
  • 规则:将八进制数每一位,转成对应的一个三位的二进制数即可。
    案例:
    请将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]

  1. 十六进制转为二进制
  • 规则:将十六进制数每一位,转成对应的一个四位的二进制数即可。
    案例:
    请将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]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值