进制转换器

数据转换 完全免费 🔒 本地处理不上传 🎯 BigInt 精确大数 📐 位宽统计 🌙 支持黑夜模式

调试寄存器、看内存地址、算颜色值、做权限位掩码……总要在几种进制之间来回倒。在任意一个输入框里敲数字,另外四种进制实时同步,采用 BigInt 精确计算,再大的整数也不丢精度。

类别程序员 · 数据转换
运行方式纯前端 · 离线运行
支持进制2 / 8 / 10 / 16 任意输入
数值范围整数(支持负数),位数不限
补码位宽8 / 16 / 32 / 64 位可选
Unicode码点 / 字符 / UTF-8 / UTF-16 / UTF-32 字节

🔢 进制互转

任意一栏可输入(支持负数),其余实时联动
⚡ 常用值

📐 字节分组

二进制按 8 位、十六进制按 2 位切开,便于逐字段比对

🔤 Unicode 字符联动

输入 0 ~ U+10FFFF 的码点,查看字符与 UTF-8 / UTF-16 / UTF-32 字节序列

📖 原码 / 反码 / 补码是什么

先看规则,再用下面的输入框验证

计算机里只存 0 和 1,没地方写字正负号,于是约定:定长(8 / 16 / 32 / 64 位)二进制的最高位当符号位——0 是正、1 是负。为了把「符号 + 数值」塞进同一串 0/1,就出现了三套规则。

表示法正数 +5(8 位)负数 −5(8 位)规则(8 位)
原码0000 01011000 0101符号位:正数 0、负数 1;其余 7 位照抄 |x| 的二进制
反码0000 01011111 1010正数照抄原码;负数符号位保持 1,其余 7 位逐位 0↔1
补码0000 01011111 1011正数照抄原码;负数 = 反码 + 1(也等于 28 − 5 = 251)

三码的关系:补码 = 反码 + 1;反码 = 原码除符号位外逐位取反;正数的原码 / 反码 / 补码完全相同,只有负数才有区别。

为什么最后统一用补码:原码里 0000 0000 表示 +0,1000 0000 表示 −0——同一个 0 有两种写法;反码也一样。而且做减法得先比大小、再定符号,电路很麻烦。补码把 −0 这个图案让给了 −128,0 只剩一种写法;减法也变成「加一个负数」:a − b = a + (−b),CPU 只留一套加法器。

范围怎么来的:8 位一共 28 = 256 个图案。补码把这些图案平分成两半:0 ~ 127 给正数与 0,−128 ~ −1 给负数,所以 8 位有符号的范围是 −128 ~ 127;不考虑符号则是 0 ~ 255。最大值再加 1 会翻到最小值,例如 0x7F + 1 = 0x80(127 + 1 = −128)。

下面的表格会用你输入的数值和当前位宽,逐步算出原码 → 反码 → 补码。

🔲 负数补码视图

原码 / 反码 / 补码对照,输入负数(如 -1)最直观

🧮 数值规模

判断需要几个字节存放时先看这里

核心特性

四种进制任意输入,其余实时联动
BigInt 精确计算,超大整数不丢精度
输入合法性校验并给出明确错误提示
二进制位数 / 十六进制位数统计
2 的 N 次方数值规模展开
二进制与十六进制字节分组显示
负数原码 / 反码 / 补码对照(8/16/32/64 位)
原码 / 反码 / 补码逐位推导,正负数规则对照
支持 0x / 0b / 0o 前缀输入
Unicode 字符联动:码点、字符、UTF-8/UTF-16/UTF-32 字节
0xFF、0x7FFFFFFF 等常用值一键填入
每个进制结果都能单独复制
支持黑夜模式与离线使用

什么时候会用到进制转换?

二进制、八进制、十进制、十六进制只是同一个数字的四种写法。计算机底层全是二进制,而十六进制每 1 位恰好对应 4 位二进制,转换不用心算,所以内存地址、颜色值、字节序列、协议字段几乎都用十六进制书写;八进制现在主要出现在 chmod 755 这类文件权限里。

开发中常见场景:把 IPv4 地址转成 32 位整数存进数据库(192.168.1.1 → 3232235777),用位掩码做权限组合(1 | 2 | 4),调试硬件寄存器与协议报文,分析 #FF5733 这类颜色分量,读 0x7FFFFFFF 判断 signed / unsigned 边界。

这些换算本身不难,但手算容易出错,尤其是位数一多。本工具让四种进制互为镜像实时联动:改动任意一个,其余三个立即跟上;输入了非法字符(比如二进制里出现 2)会立刻指出问题,而不是静默给你一个错值。

实现上采用 JavaScript 的 BigInt 而不是 Number:Number 只有 53 位安全整数精度,超过就会变成 1.2345678901234568e+21 这种失真的科学计数法;BigInt 是任意精度整数,64 位、128 位甚至几百位的数值都能精确展开。所有计算在你的浏览器里完成,没有任何数据上传。

怎么用

  1. 在任意一栏输入
    四个输入框都是「可输入」的,平时习惯用哪个进制就填哪个,其余三栏会自动补全。
  2. 读联动结果
    十进制、二进制、八进制、十六进制同时更新;十六进制统一大写输出,方便与文档比对。
  3. 看辅助信息
    下方给出二进制位数、十六进制位数、占用字节数,以及 2 的 N 次方的十进制真值,方便判断数值规模与位宽。
  4. 查字节分组
    「字节分组」区把二进制按 8 位、十六进制按 2 位切开,分析报文字段、颜色分量时比一长串字符直观得多。
  5. 看补码与字符
    输入负数并在「补码视图」切换位宽,即可得到原码 / 反码 / 补码对照;输入 0 ~ U+10FFFF 的码点,「Unicode 字符联动」区会给出字符与各编码的字节序列。
  6. 复制需要的那一栏
    每栏右侧都有复制按钮,点一下直接取走对应进制的结果,不用手动选中。

使用技巧

  • 十六进制前缀 0x 可写可不写,工具会自动识别并去掉,输入 0xFF 与 FF 等价。
  • 二进制每 4 位正好对应 1 位十六进制:1111 = F。记住这一点,手工粗算时会快很多。
  • 判断 signed / unsigned 边界:32 位有符号最大值是 0x7FFFFFFF(2147483647),加一就溢出成负数。
  • 颜色值 #RRGGBB 每个分量是 0–255,拆开填进十进制框就能看清各通道强度。
  • 数值超过 64 位时「2 的 N 次方」不再展开真值,只显示指数——几十位的数字展开后没有阅读价值,还会把页面撑爆。
  • 补码口诀:-x 的补码等于 2n - x。8 位下 -1 的补码就是 0xFF;-128(0x80)是补码独有值,没有原码和反码。

更新记录

  • v1.3 2026-10-18 原码 / 反码 / 补码视图重做:新增「原码 → 反码 → 补码」逐位推导与十进制校验,明确正数三码相同、负数取反加一、边界值(如 -128 / 0x80)只有补码;越界判定改为按有符号范围(此前 8 位下 128~255 不提示越界),表格补充「怎么来的」一列;输入支持 0x / 0b / 0o 前缀,输入过程中不再打断(只回写其它栏,失焦后规范化);新增原码反码补码原理说明区,并与输入联动——示例数字取当前值、位宽跟随选择、范围与溢出示例实时重算,输入为 0 或超出原码范围时自动退回示例值并说明原因。
  • v1.2 2026-09-16 新增:负数输入与 8/16/32/64 位原码反码补码对照视图、Unicode 字符联动(码点 / 字符 / UTF-8 / UTF-16 / UTF-32 字节序列)、常用值一键填入。
  • v1.1 2026-09-11 重构页面:新增核心特性、上手步骤、使用技巧与 6 组常见问题,补充字节分组显示与各进制单独复制,位宽与数值规模说明更完整。
  • v1.0 2026-08-31 工具上线:二 / 八 / 十 / 十六进制实时联动互转,BigInt 大数精确计算,输入校验与位宽统计;支持黑夜模式。

常见问题

为什么普通计算器算大整数会出错?
JavaScript 的 Number 是 IEEE 754 双精度浮点,只能安全表示 53 位整数(约 9×1015)。超过这个范围,末位就开始被四舍五入,例如 9007199254740993 会变成 9007199254740992。本工具使用 BigInt,任意精度、逐位精确,64 位以上的数值也能完整转换。
支持负数和小数吗?
支持负整数:任意一栏都可以输入 -255、-0xFF 这类负值,四栏联动显示绝对值,同时在「补码视图」按 8 / 16 / 32 / 64 位给出原码 / 反码 / 补码对照。小数涉及浮点表示与精度问题,不在整数转换的范围内。
负数的原码、反码、补码有什么区别?
以 8 位的 -1 为例:原码把最高位当符号位,写作 1000 0001;反码保持符号位、其余位取反,得到 1111 1110;补码再加一,得到 1111 1111,即 0xFF。计算机实际存储用的是补码,加减法电路统一、0 的表示唯一。-128(0x80)是补码独有值,没有原码和反码。
八进制现在还有用吗?
有,但场景集中。最典型的是 Linux 文件权限:chmod 755 里的 755 就是八进制,表示 user / group / other 三组的 rwx 位组合。此外 tar 归档格式的头部字段、老式 C 代码里的字面量(0755)也在用八进制。
IPv4 地址怎么转成整数?
把四段地址按位移拼起来即可:(a << 24) | (b << 16) | (c << 8) | d。例如 192.168.1.1 得到 32 位整数 3232235777,用十六进制看就是 0xC0A80101。这类转换在 IP 段比较、数据库索引优化中很常见,本工具可以直接双向验证。
二进制位数和字节数怎么算?
二进制位数就是最高位 1 所在的位置,例如 255 的二进制是 11111111,共 8 位、占 1 字节;256 是 100000000,共 9 位、占 2 字节。工具会在结果下方直接给出换算好的位数与字节数,判断需要几个字节存放时很方便。
计算结果会被保存或上传吗?
不会。四种进制的转换、位宽统计、字节分组全部用浏览器本地 JavaScript 完成,渲染结果直接写进输入框,没有任何网络请求,也没有历史记录存储。关闭页面即无痕迹,处理内部协议字段、私有地址规划时也能放心使用。

💬 留言板 0

全部留言需审核通过后展示
💬

还没有留言,来抢沙发吧!

✍️ 说点什么
0 / 500
图形验证码