# 进制与进制转换 — 学习笔记 **日期**: 2026/07/10 **作者**: WanJl --- ## 一、为什么计算机使用二进制 - 计算机由晶体管组成,只有**通电(1)**和**断电(0)**两种状态 - 两种状态最稳定可靠,电路设计最简单 - 如果使用十进制需要10种电压值,电路极其复杂 > 计算机使用二进制不是因为二进制高级,只是因为硬件只识别通电/断电。 --- ## 二、四种进制 | 进制 | 基数 | 数字符号 | Java 前缀 | |------|------|---------|-----------| | 二进制 | 2 | 0, 1 | `0b` / `0B` | | 八进制 | 8 | 0~7 | `0` | | 十进制 | 10 | 0~9 | 正常写 | | 十六进制 | 16 | 0~9, A~F | `0x` / `0X` | **十六进制 A~F 对应值**:A=10, B=11, C=12, D=13, E=14, F=15 ### 编码与解码 - **编码**:将人能看懂的信息(十进制数、文本、图片等)转换为二进制数据 - **解码**:编码的逆过程,将二进制数据转换回人能看懂的信息 --- ## 三、二进制 → 十进制(按权展开法) 二进制位权从右往左:`2^0, 2^1, 2^2, 2^3, ...` **示例**:`1101`(二进制) | 位 | 1 | 1 | 0 | 1 | |---|:---:|:---:|:---:|:---:| | 位权 | 2³=8 | 2²=4 | 2¹=2 | 2⁰=1 | | 计算 | 1×8 | 1×4 | 0×2 | 1×1 | 结果:`1×8 + 1×4 + 0×2 + 1×1 = 13`(十进制) **示例**:`1010` → `1×8 + 0×4 + 1×2 + 0×1 = 10` --- ## 四、八进制 → 二进制 与 十六进制 → 二进制 ### 八进制与二进制(3位一组) ``` 二进制: 001 101 111 八进制: 1 5 7 ``` 每 **3** 位二进制对应 **1** 位八进制。 ### 十六进制与二进制(4位一组) ``` 二进制: 1101 1110 1010 0101 十六进制: D E A 5 ``` 每 **4** 位二进制对应 **1** 位十六进制。 **十六进制常见用途**:颜色色值、内存地址、MAC 地址、文件权限等。 --- ## 五、任意进制 → 十进制(按权展开法) **方法**:每一位数字 × 位权,再求和。 ### 二进制 → 十进制 ``` 0b1001 → 1×2³ + 0×2² + 0×2¹ + 1×2⁰ = 8 + 0 + 0 + 1 = 9 ``` ### 八进制 → 十进制 ``` 0257 → 2×8² + 5×8¹ + 7×8⁰ = 128 + 40 + 7 = 175 ``` ### 十六进制 → 十进制 ``` 0x3F → 3×16¹ + 15×16⁰ = 48 + 15 = 63 ``` --- ## 六、Java 代码示例 ```java int a = 0b0101011; // 二进制,加前缀 0b int b = 01234567; // 八进制,加前缀 0 int c = 0x123AFEC9; // 十六进制,加前缀 0x System.out.println(a); // Java 自动转换为十进制输出 System.out.println(b); System.out.println(c); ``` --- ## 七、知识总结 | 知识点 | 要点 | |-------|------| | 二进制 | `0b` 前缀,基数 2,符号 0/1 | | 八进制 | `0` 前缀,基数 8,3位二进制对应1位八进制 | | 十六进制 | `0x` 前缀,基数 16,4位二进制对应1位十六进制 | | 按权展开法 | 每位数字 × 位权,再求和 → 得到十进制 | | 编码/解码 | 人→机器(编码),机器→人(解码) | --- ## 八、十进制 → 任意进制(除基取余法) **方法**:不断除以目标进制,取余数,**从下往上**排列余数。 ### 十进制 → 二进制(除2取余) 将 25 转换为二进制: ``` 25 ÷ 2 = 12 余 1 12 ÷ 2 = 6 余 0 6 ÷ 2 = 3 余 0 3 ÷ 2 = 1 余 1 1 ÷ 2 = 0 余 1 ``` 从下往上读:**11001** > 结果:十进制数 25 = 二进制数 11001 ### 十进制 → 八进制(除8取余) 将 175 转换为八进制: ``` 175 ÷ 8 = 21 余 7 21 ÷ 8 = 2 余 5 2 ÷ 8 = 0 余 2 ``` 从下往上读:**257** > 结果:十进制数 175 = 八进制数 257 ### 十进制 → 十六进制(除16取余) 将 255 转换为十六进制: ``` 255 ÷ 16 = 15 余 15 → F 15 ÷ 16 = 0 余 15 → F ``` 从下往上读:**FF** > 结果:十进制数 255 = 十六进制数 FF --- ## 九、进制转换总结 | 转换方向 | 方法 | 说明 | |---------|------|------| | 任意进制 → 十进制 | 按权展开法 | 每位数字 × 位权,再求和 | | 十进制 → 任意进制 | 除基取余法 | 不断除以目标进制,取余数从下往上排列 | --- ## 练习题 将十进制数 357 分别转换为二进制、八进制、十六进制: - 二进制: - 八进制: - 十六进制: 将十进制数 1234 分别转换为二进制、八进制、十六进制: - 二进制: - 八进制: - 十六进制: