MathTool

进制转换方法:二、八、十、十六进制手算互转

更新于

进制转换方法可以归成三条:十进制转成别的进制用「除基取余」,别的进制转回十进制用「按权展开」,二进制与八进制、十六进制之间直接「分组」互换。三条合起来,任意两种进制都能手算互转,八进制和十六进制之间就借二进制中转。下面用同一个数 185 把四种进制走一遍,每一步都能反向验算。

三种手算方法速查

方向 方法 要点
十进制整数 → 二 / 八 / 十六进制 除基取余 反复除以基数,余数从下往上读
十进制小数 → 二进制 乘基取整 反复乘 2,整数部分从上往下读
二 / 八 / 十六进制 → 十进制 按权展开 每位数字乘基数的幂,再相加
二进制 ↔ 八进制 三位一组 从小数点往两边分组,位数不够补 0
二进制 ↔ 十六进制 四位一组 10–15 写成 A–F

写结果时,在右下角标出基数,比如 (10111001)₂、(271)₈、(B9)₁₆,这样同一行里几种进制并排也看得清。编程里常见的 0b、0o、0x 前缀意思相同,作业和讲义里一般用下标写法。

例题:185 在四种进制之间走一遍

第一步,除基取余。 185 ÷ 2 = 92 余 1,92 ÷ 2 = 46 余 0,一直除到商为 0,共除 8 次。每一步只记两样:商写到下一行继续除,余数写在右边,余数只可能是 0 或 1。把 8 个余数从最后一个往第一个读,得到 (10111001)₂。

185 除以 2 逐次取余的八步过程表

第二步,按权展开验算。 从右往左,各位的权依次是 2⁰、2¹、2²……,只把是 1 的位相加:

(10111001)_2=1\times2^7+1\times2^5+1\times2^4+1\times2^3+1\times2^0=128+32+16+8+1=185

结果回到 185,说明除法那一步没有读反。

第三步,分组得到八进制和十六进制。 三位一组从右往左分:010 111 001,每组分别是 2、7、1,所以是 (271)₈。四位一组:1011 1001,分别是 11 和 9,11 写成 B,所以是 (B9)₁₆。

10111001 三位分组与四位分组的对照

再用按权展开核对一次:2 × 64 + 7 × 8 + 1 = 185,11 × 16 + 9 = 185。三种写法都回到同一个十进制数,这道题就算闭环了。

185 在四种进制下的等值写法

小数部分用乘基取整。 0.625 × 2 = 1.25,取出 1;0.25 × 2 = 0.5,取出 0;0.5 × 2 = 1.0,取出 1,小数部分变成 0 就停。从上往下读,0.625 = (0.101)₂。有的小数乘下去永远到不了 0,比如 0.1,这时按题目要求保留几位即可。

十六进制转八进制借二进制中转。 (2F3)₁₆ 每位拆成四位:0010 1111 0011,去掉最前面的 0 是 1011110011;再三位一组,最左边补零成 001 011 110 011,读作 (1363)₈。两个结果都等于十进制 755,可以按权展开核对。

四个容易出错的地方

  1. 余数读反。 除基取余要从最后一个余数读起,写成 10011101 就是读反了。按权展开一下,得 157,和原数对不上就能发现。
  2. 分组方向错。 整数部分从小数点往左分,小数部分从小数点往右分,补 0 都补在两头。从最左边开始分组,结果会整体错位。
  3. 十六进制字母写成两位数。 11 在十六进制里是一个数位 B;写成「1 1」就成了两位,数值完全变了。
  4. 小数和整数混在一起算。 整数部分用除法、小数部分用乘法,两部分分开算,最后用小数点拼起来。

把手算过程排进作业

本站编辑器只负责把算式排整齐,计算要自己完成。基数下标用 _ 输入,比如 (10111001)_2;乘号在 LaTeX 模式里打 \times,按空格结束命令,符号随打随显。公式工具栏右端的「LaTeX / 可视化」开关可以在「可视化」模式与「LaTeX」之间切换,写长式子时切到 LaTeX 模式对着源码改更快。上面那行按权展开的代码块,页面下方有「在编辑器中打开」,点一下就带着整行进编辑器,改成自己的数即可。

MathTool 编辑器里写好的二进制按权展开式

写好的算式要放进 Word 作业,公式工作区顶栏「导出」→「Word(含公式)」导出的是当前这一条;一份作业里有好几条算式时,在文档编辑里逐条插入,再导出「Word 文档 (.docx)」。导出要登录并开通本站会员。粘进 Word 后如果下标字体变了样,按公式转换字体丢失的顺序排查。

现在可以做的一件事:把 185 换成你作业里的数,照着按权展开那行改写,一行写出「二进制 = 各位乘权之和 = 十进制」,写完对着结果自己验一遍。

延伸阅读

常见问题

负数怎么转二进制?
先定好位数,常用8位。把负数的绝对值写成二进制并补足8位,再逐位取反,最后加1,得到的就是补码。以负5为例:5是00000101,取反得11111010,加1得11111011。验算时把补码与00000101相加,8位以内结果全是0,说明写对了。