数学

进制转换器

在二进制、八进制、十进制和十六进制之间即时转换数字,并通过实时位权分解直观展示每一位数字对总值的贡献。

这个计算器对您有帮助吗?

什么是进制转换器?

进制转换器可将一个数从一种位值计数系统转换为另一种——最常见的是在二进制(基数2)、八进制(基数8)、十进制(基数10)和十六进制(基数16)之间进行转换。所有数制的工作原理都相同:每一位数字的值取决于其所在位置,等于该数字乘以基数的对应位次幂。计算机内部一切都以二进制存储和处理,但二进制字符串冗长难读,因此程序员使用十六进制作为紧凑的简写形式,而八进制则出现在较早的Unix文件权限中。 此计算器可即时在全部四种进制之间同时转换您的输入,并展示位值分解——每一位数字乘以其位置权重——让您清楚地看到转换是如何实现的,而不仅仅是得到一个不透明的答案。

何时使用此计算器

  • 在软件开发中调试内存地址和字节值,十六进制输出是惯例。
  • 为网页设计和 CSS 样式将十六进制颜色代码转换为 RGB 值。
  • 理解以点分二进制或十六进制书写的 IP 子网掩码和网络地址。
  • 读取使用八进制记法的 Unix/Linux 文件权限代码,如 chmod 755。
  • 涵盖数制和数字表示的计算机科学课程作业与考试。
  • 在需要使用二进制或十六进制表达位运算的竞赛编程和底层编码中。

步骤:

  1. 输入你想要转换的数字。
  2. 选择该数字当前所使用的进制(二进制、八进制、十进制或十六进制)。
  3. 即时查看该数值在全部四种进制下的转换结果。
  4. 展开位权分解,查看每一位数字对总值的具体贡献。

公式

数值 = Σ(数字 × 基数^位次) 位次从最右侧数字的0开始计数。 示例(二进制1011):1×2³ + 0×2² + 1×2¹ + 1×2⁰ = 11(十进制)

使用场景

  • 在软件开发中调试内存地址和字节值
  • 在网页设计中将颜色代码在十六进制与十进制之间转换
  • 在计算机科学课程中处理二进制和十六进制运算
  • 读取以八进制表示的Unix/Linux文件权限代码
  • 理解IP子网掩码与网络地址划分

主要优势

  • 同时在二进制、八进制、十进制和十六进制之间即时转换
  • 可视化的位权分解清楚展示运算过程
  • 立即识别所选进制下的无效数字
  • 无需手动进行长除法或反复求余数的计算

专业提示

  • 阅读十六进制时,记住每一位恰好对应4个比特——这对心算转换为二进制很有帮助
  • 从右侧起将二进制数字每四位分为一组,即可快速手动换算为十六进制
  • 八进制是将二进制每三位分为一组,这也是它在早期12/24位系统中常见的原因
  • 在信任结果之前,请再次确认所选的'原始'进制与你实际输入的内容一致

需要避免的常见错误

  • 输入了所选进制下无效的数字,例如在二进制或八进制中输入'9'
  • 忘记十六进制数字A-F虽不区分大小写,但代表固定的数值
  • 在较旧的编程语言中,把八进制的前导零写法误认为普通十进制数字
  • 误以为二进制转换在没有补码方案的情况下也能处理负数

关键术语解释

基数:数制的基数(radix)的另一种说法
位值记数法:一种数字的值取决于其所在位置的记数系统
比特:一个二进制数字(0或1)
半字节:由4个比特组成的一组,恰好对应一位十六进制数字

相关概念

  • 颜色值:像 #FF5733 这样的十六进制颜色是三个以 16 为基数的字节。我们的颜色转换器可在十六进制、RGB、HSL 和命名颜色格式之间转换。
  • 二进制与数据大小:十六进制表示的字节值可直接对应数据量。我们的数据转换器可在位、字节和存储单位之间转换。
  • Epoch 时间戳:Unix 时间通常以十进制和十六进制显示。我们的Unix 时间戳转换器可在时间戳与人类可读日期之间相互转换。
  • 哈希:MD5 和 SHA-256 等加密摘要就是十六进制数字字符串。我们的哈希生成器可生成这些常见的哈希格式。
  • 编码:URL 中的百分号编码会将每个特殊字符写成如 %2F 这样的十六进制转义。我们的URL 编解码器可对 URL 内容进行编码和解码。

示例

将十六进制2F转换为十进制:2×16¹ + 15×16⁰ = 32 + 15 = 47。转换为二进制是101111,转换为八进制是57。

解读您的结果

转换器会将每个结果以你选择的进制显示为数字字符串,而位权分解会将每一位展开为 数字 × 进制^位次,让你可以手工验证计算,而不必信任一个黑盒。最右边的数字是第 0 位,其权重恒为 1;向左移动时,每个权重再乘以一次进制(因此在二进制中权重为 1、2、4、8…,在十六进制中为 1、16、256…)。将所有数字 × 权重相加即可精确还原出十进制值。输入只能使用所选进制允许的数字——工具会立即标记任何无效数字。请注意,该工具仅处理非负整数;负数和带小数的数值需要补码或浮点数处理,这是位值整数转换器所不覆盖的。

常见问题

如何将二进制转换为十进制?
将每一位二进制数字乘以2的对应位次幂(从右侧的0开始计数),再将结果相加。例如,二进制1011 = 1×2³ + 0×2² + 1×2¹ + 1×2⁰ = 8 + 0 + 2 + 1 = 十进制11。
为什么计算机领域会使用十六进制?
十六进制(16进制)能与二进制完美对应,因为每一位十六进制数字恰好代表4个比特,这使它成为书写内存地址、颜色代码和字节值的一种紧凑且易读的方式,而无需像纯二进制那样冗长。
每种进制中哪些数字是有效的?
二进制使用0-1,八进制使用0-7,十进制使用0-9,十六进制则在0-9基础上加A-F(代表10-15)。如果为所选进制输入了超出该范围的数字,系统会显示错误。
可以转换负数或带小数部分的数吗?
本工具用于转换非负整数,这已覆盖绝大多数编程、网络和课程作业场景。若需处理带符号或小数形式的二进制表示,则需要专门的补码或浮点数工具。
如何将十六进制颜色代码(如 #FF5733)转换为 RGB?
十六进制颜色代码其实就是三个两位十六进制数字拼接在一起:红、绿、蓝。将 #FF5733 拆成 FF、57 和 33,再把每组转换为十进制:FF = 255、57 = 87、33 = 51,即得到 rgb(255, 87, 51)。每组取值范围为 00(0)到 FF(255),因此 16,777,216 种可能的颜色全部可以用六个十六进制数字来表示。这正是 CSS 如此大量使用十六进制的原因——它紧凑,而且每组数字直接对应浏览器为该通道存储的一个字节。
什么是补码?它如何表示负的二进制数?
补码是计算机存储负整数的标准方式。对一个数取负,只需将所有位取反再加 1:对于 8 位下的 +5(00000101),取反得到(11111010),再加 1 得到 11111011,即表示 −5。最左边一位充当符号位——0 表示非负,1 表示负数——同时让加法的电路对两种符号完全相同。4 位的补码取值范围是 −8 到 +7,而非 0 到 15,因为一半范围被负数占用。本工具转换的是非负整数;对于带符号的值,你需要自行在二进制输出的基础上应用补码。
为什么我的转换器在二进制中会显示多余的前导零?
前导零永远不会改变一个数的数值——0011 和 11 都是十进制 3——但它们通常是故意显示的。程序员会把二进制按半字节(4 位)或字节(8 位)分组,让排列方式与十六进制对齐:0011 0011 读作十六进制的 33,而未分组的 110011 更难解读。有些工具会补齐到固定宽度(8、16 或 32 位),以对应计算机中的实际寄存器。如果你更喜欢最短的形式,直接去掉输出中的前导零即可——数值完全不变。
八进制在 Unix 文件权限(chmod)中是如何使用的?
Unix 权限是三个三元组——读(r)、写(w)和执行(x)——分别针对所有者、组和其他用户。每个三元组是一个 3 位二进制数,因此对应一位八进制数字:rwx = 7、rw- = 6、r-x = 5、r-- = 4。因此命令 chmod 755 会将所有者设为 rwx、组设为 r-x、其他用户设为 r-x——这正是 7、5、5 以三位八进制数字出现的原因。八进制在这里是天然的表达方式,因为每一位数字恰好覆盖三位,正好对应每类用户的三个权限位。
这个工具能否在不损失精度的情况下转换非常大的数字?
本转换器对不超过 2^53 − 1 = 9,007,199,254,740,991 的所有整数都是精确的,这是 JavaScript 能精确表示的最大整数。超出该界限的值可能会舍入到最接近的可表示数字,因此输出可能与精确转换结果有偏差。对于日常应用——颜色代码、内存地址、IP 掩码、端口号和课程作业中的数字——这个范围远远够用。如果需要转换超过 53 位的数值,则需要使用任意精度工具,而不是标准的浏览器内转换器。
如何手工将一个十进制数转换为二进制?
反复将该数除以 2,记录每一步的余数,然后从下往上读取这些余数。以 47 为例:47 ÷ 2 = 23 余 1、23 ÷ 2 = 11 余 1、11 ÷ 2 = 5 余 1、5 ÷ 2 = 2 余 1、2 ÷ 2 = 1 余 0、1 ÷ 2 = 0 余 1。从下往上读余数得到 101111,等于 32 + 8 + 4 + 2 + 1 = 47。同样的反复除法方法适用于任何进制——除以 8 得到八进制、除以 16 得到十六进制——只需按逆序收集余数。
如何直接在二进制和十六进制之间转换,而不经过十进制?
因为一位十六进制数字恰好等于四位二进制位,所以可以在没有任何十进制步骤的情况下进行转换。从右侧起将二进制数字每四位分成一组,再把每组对应为十六进制数字:101111 → 0010 1111 → 2F。每个 4 位组对应一个十六进制符号(0000=0 直到 1111=F)。反过来,将每个十六进制数字展开为它的四位:2F → 0010 1111。同样的技巧也适用于八进制,它与二进制以三位一组对应——这正是二进制、八进制和十六进制之间可以如此轻松地互转的原因。

发现更多工具

精选于全站工具库的新发现。