数据的表示--进位计数制与转换

发布时间:2026/7/22 3:48:06
数据的表示--进位计数制与转换 进制转换进制是计算机组成原理的入门核心知识点。计算机底层所有数据都以二进制形式存储、运算日常计算我们习惯使用十进制而在编程、硬件描述、网络地址等场景中八进制与十六进制也十分常见。很多人觉得进制转换零散难记其实只要理清核心规则、选对对应方法就能高效完成各类转换。本文从基础概念到进阶速算技巧完整梳理常用进制转换的全部方法。一、四种常用进制的基础概念进制的核心规则是「逢基数进一」不同进制的可用数码、进位规则、表示方式各有区别。1. 核心参数对比进制类型可用数码基数 r进位规则下标表示法后缀表示法C 语言前缀写法十进制0,1,2,3,4,5,6,7,8,910逢十进一(数)₁₀数 D无前缀直接书写数字二进制0,12逢二进一(数)₂数 B0b 开头如 0b101011八进制0,1,2,3,4,5,6,78逢八进一(数)₈数 O0 开头如 0101011十六进制0-9、A/B/C/D/E/F16逢十六进一(数)₁₆数 H0x 开头如 0x1010112. 补充说明十六进制中用 A~F 依次对应十进制的 10~15书写时大小写不影响含义C 语言中需特别注意前缀区分避免将八进制误判为十进制。二、进制转换核心方法1. 任意进制 → 十进制按权展开法这是所有进制转十进制的通用方法核心是利用「位权」计算最终数值。核心原理将每一位的数码乘以对应位的权值基数的 n 次方所有结果相加即可得到十进制数。权值规则整数部分从右往左权值从基数的 0 次方开始递增小数部分从左往右权值从基数的 - 1 次方开始递减。示例二进制 (101.1)₂转十进制整数部分1×2² 0×2¹ 1×2⁰ 4 0 1 5 小数部分1×2⁻¹ 0.5 最终结果(101.1)₂ (5.5)₁₀2. 十进制 → 任意进制除基取余 乘基取整十进制转其他进制时整数部分与小数部分需分开处理二者操作规则完全不同。2.1 整数部分除基取余法低位先得操作步骤用十进制整数除以目标进制的基数记录余数用上一步得到的商继续除以基数再次记录余数重复操作直到商为 0将所有余数从下往上排列先得到的是最低位后得到的是最高位即为转换结果示例十进制 123 分别转二、八、十六进制转二进制反复除以 2余数依次为 1、1、0、1、1、1、1倒序得 1111011转八进制反复除以 8余数依次为 3、7、1倒序得 173转十六进制反复除以 16余数依次为 11 (对应 B)、7倒序得 7B2.2 小数部分乘基取整法高位先得操作步骤用十进制小数乘以目标进制的基数记录结果的整数部分用上一步结果的小数部分继续乘以基数再次记录整数部分重复操作直到小数部分为 0或达到所需精度位数将所有整数部分从上往下排列先得到的是最高位即为小数部分结果示例十进制 0.6875 分别转二、八、十六进制转二进制反复乘 2整数部分依次为 1、0、1、1得 0.1011转八进制反复乘 8整数部分依次为 5、4得 0.54转十六进制乘 16 得整数 11 (对应 B)得 0.B注意事项并非所有十进制小数都能精确转换为其他进制可能出现无限循环此时按需求保留对应精度即可。3. 二进制 ↔ 八进制 / 十六进制分组映射法因为 82³、162⁴因此 1 位八进制对应 3 位二进制1 位十六进制对应 4 位二进制。这类转换无需经过十进制中转直接分组映射即可效率更高。3.1 二进制 → 八进制 / 十六进制分组规则整数部分从右往左分组位数不足时在左侧补 0小数部分从左往右分组位数不足时在右侧补 0每组分别换算为对应进制的一位数按顺序拼接即为结果示例二进制 (1011001100.11011)₂转换转八进制3 位一组分组为 001 011 001 100 . 110 110对应结果 1314.66转十六进制4 位一组分组为 0010 1100 1100 . 1101 1000对应结果 2CC.D83.2 八进制 / 十六进制 → 二进制反向操作即可每 1 位八进制展开为 3 位二进制每 1 位十六进制展开为 4 位二进制整数前导 0、小数末尾 0 可按需省略。示例八进制 34 → 011 100 → 二进制 11100示例十六进制 2A → 0010 1010 → 二进制 1010104. 十进制转二进制进阶凑值法重点对于 8 位、16 位以内的小整数凑值法是比除基取余更快的口算方法在 IP 地址换算、选择题验算等场景中非常实用。4.1 核心原理凑值法是按权展开的反向操作二进制每一位对应一个 2 的幂次将目标十进制数拆分为若干个 2 的幂次之和用到的幂次对应位写 1未用到的写 0即可得到二进制结果。生活化类比就像用固定面额1、2、4、8、16…的钞票凑钱从最大面额开始尝试够就拿一张对应位写 1不够就跳过对应位写 0最终拿出的钞票序列就是对应的二进制数。4.2 常用 2 的幂次表建议熟记幂次2⁰2¹2²2³2⁴2⁵2⁶2⁷2⁸十进制数值1248163264128256其中 2⁷到 2⁰对应 1 字节8 位的位权是最常用的一组数值。4.3 操作步骤定高位找到不大于目标数的最大 2 的幂确定二进制最高位位置。逐位判从最高位到最低位依次比对剩余数值≥当前位权则写 1 并减去权值否则写 0。得结果判断到最低位后拼接所有 0、1 序列即为最终二进制数。4.4 实战示例示例 1十进制 166 转二进制IPv4 地址常用值最高位不大于 166 的最大 2 的幂是 1282⁷逐位计算 128166≥128 → 1余 38 643864 → 0 3238≥32 → 1余 6 16616 → 0 868 → 0 46≥4 → 1余 2 22≥2 → 1余 0 101 → 0结果10100110其实就是1283242示例 2十进制 23 转二进制快速口算最高位为 16依次判断得结果 10111。三、转换总览1. 转换路径总览任意进制转十进制统一使用按权展开法十进制转任意进制整数除基取余、小数乘基取整二进制与八 / 十六进制互转3 位 / 4 位分组映射法八进制与十六进制互转推荐以二进制为中转操作最简便2. 易错点整数除基取余后余数要从下往上读低位先得小数乘基取整后整数要从上往下读高位先得二者顺序不可混淆。分组转换时整数部分左补 0小数部分右补 0补位方向不能出错。十进制小数转二进制可能存在精度丢失属于正常现象按需保留位数即可。