跳到主内容
算师傅 功能丰富的科学计算器与数学学习乐园
返回首页

进制转换器

二进制 / 八进制 / 十进制 / 十六进制精确互转,支持大整数、补码与位运算

进制转换完全指南

进制(基数)只是「用多少种不同的符号来表示一个数」。十进制用 0–9 十个符号, 二进制只用 0 和 1,八进制用 0–7,十六进制则用 0–9 加 A–F。 掌握进制互转,是理解计算机存储、网络协议和底层编程的基础。

一、四种常用进制的关系

因为 8、16 恰好是 2 的整数次幂(8 = 2³,16 = 2⁴),所以二进制与八 / 十六进制之间可以「按位直接替换」,这也是计算机偏爱 16 进制的原因:

  • 二进制 → 八进制:从右往左每 3 位一组,每组换成 1 位八进制。
  • 二进制 → 十六进制:从右往左每 4 位一组,每组换成 1 位十六进制。
  • 十六进制 → 二进制:每位展开成 4 位二进制(不足补前导 0)。
十进制二进制八进制十六进制
0000000
10101012A
15111117F
25511111111377FF

二、二进制与十进制互转

二进制 → 十进制:每位数字乘以 2 的「位权」(从右往左第 0、1、2… 位),再求和。例如 1010₂ = 1×2³ + 0×2² + 1×2¹ + 0×2⁰ = 8 + 0 + 2 + 0 = 10

十进制 → 二进制(除 2 取余):把十进制数不断除以 2,记录每次的余数,直到商为 0;再把余数从下往上排列。例如 10 ÷2 余 0、5 ÷2 余 1、2 ÷2 余 0、1 ÷2 余 1 → 倒序得到 1010

三、原码、反码、补码

计算机用固定位数(如 8 位、32 位)存放整数。要表示负数,需要一套编码规则:

  • 原码:最高位当符号位(0 正 1 负),其余位表示数值大小。缺点是有 +0−0 两种零。
  • 反码:正数的反码同原码;负数是把对应正数按位取反(0 变 1、1 变 0)。
  • 补码:反码再加 1。现代计算机统一用补码表示有符号整数,因为加减法可以用同一套电路,且零只有一种表示。

例:8 位下 −5 的原码是 10000101、反码是 11111010、补码是 11111011。在上方「补码·有符号」标签里可以随时验证任意数值。

四、文本与字节:编码的另一面

文字在内存里也是一串二进制。UTF-8 把每个字符编码成 1–4 个字节,于是「Hello」对应 48 65 6C 6C 6F(十六进制)。用「文本编码」标签,你可以看到任意文字的十六进制、二进制、八进制与 Base64 形态,也能把一段编码还原成文字。

五、使用技巧

  • 输入大数时可用空格或下划线分隔(如 FF_FF_FF),便于核对,工具会自动忽略。
  • 勾选「分组显示」,二进制每 4 位、十六进制每 2 位一组,长数字一眼可读。
  • 需要任意进制(如 7 进制、24 进制)时,用「进制互转」里的自定义目标进制即可。
  • 「位编辑器」适合教学演示:一个格子一个比特,直观看到改动如何影响十进制与十六进制值。

六、常见问题

进制转换器支持哪些进制?

支持二进制(2)、八进制(8)、十进制(10)、十六进制(16)之间的互转,也可以指定任意 2–36 进制作为源或目标。计算基于 BigInt,可精确处理超大整数而不会发生浮点精度丢失。

为什么大整数不会因为位数过多而出错?

本工具的整数计算完全使用 JavaScript 引擎原生的 BigInt,不依赖任何第三方库,也不走浮点数(float64 超过 2^53 就会失真)。只要不超过浏览器内存,任意长度的整数都能精确换算。

什么是补码?为什么计算机用补码表示负数?

补码(two's complement)是计算机中表示有符号整数的标准方式:正数与原码相同,负数是将其绝对值按位取反再加 1(即 2^w − 绝对值,w 为位宽)。它让加法器无需区分正负、统一用同一套加法电路,且 0 只有一种表示。本工具可同时给出原码、反码与补码。

原码、反码、补码有什么区别?

原码(sign-magnitude)最高位为符号位、其余为幅度,存在 +0 和 −0 两种零;反码(ones' complement)是负数的各位取反;补码(two's complement)是反码再加 1,是当今计算机普遍采用的方案。三者仅在负数与零的编码上不同,正数三者一致。

文本编码功能怎么用?

在「文本编码」中,把文字转为 UTF-8 字节的十六进制、二进制、八进制、十进制及 Base64;反过来,粘贴一段 Hex、二进制或 Base64 也能解码回原文,方便查看字符的底层字节。