首页 / 开发工具指南 / 进制转换指南

进制转换完整指南

从原理到实践:一文掌握二进制、八进制、十进制、十六进制的本质区别与历史背景,进制转换的数学方法,位运算核心技巧,计算机内部数值表示(补码、IEEE 754 浮点数),以及日常开发中的最佳实践。

📖 阅读时长约 10 分钟 📅 更新于 2026-06-17 ✍️ 土豆丝工具团队
🔢 立即试用多进制转换工具
支持二进制、八进制、十进制、十六进制及 2-36 任意进制相互转换。使用 BigInt 保证大数精度,所有操作在本地浏览器完成。
打开工具
#01

进制的本质:为什么我们需要不同的计数系统?

进制(Number System / Radix)是表示数值的基本方式。一个 N 进制系统使用 N 个不同的符号来表示数值,每个位置的权值是基数的幂次。

人类历史上出现过多种计数系统:

  • 十进制(Base 10):最自然的计数方式,源于人类有 10 根手指。古巴比伦人曾使用六十进制(至今仍影响时间和角度的计量)。
  • 二进制(Base 2):莱布尼茨在 17 世纪提出,但直到 20 世纪电子计算机发明后才真正普及。晶体管的开关状态天然对应 0 和 1。
  • 八进制与十六进制:作为二进制的紧凑表示形式出现——八进制每 3 位对应 1 位,十六进制每 4 位对应 1 位,大大缩短了书写长度。
#02

常见进制体系详解:从二进制到 Base36

进制符号集典型用途
二进制 (Base 2)0, 1计算机底层存储、网络协议、位掩码
八进制 (Base 8)0-7Unix 文件权限 (chmod)、某些嵌入式系统
十进制 (Base 10)0-9日常计数、金融计算、用户界面显示
十六进制 (Base 16)0-9, A-F内存地址、颜色值 (#RGB)、MAC 地址、调试信息
Base36 / Base620-9A-Z / 0-9a-zA-Z短链接生成、唯一 ID 编码、URL 安全编码

本工具支持 2 到 36 进制之间的任意相互转换,覆盖了上述所有常见场景。Base36 使用 0-9 和 A-Z 共 36 个字符,是 URL 友好的常用编码方案。

#03

进制转换的数学原理:按权展开与除基取余

方法一:按权展开(其他进制 → 十进制)

将每一位数字乘以该位的权重(基数的幂次),然后求和。

// 十六进制 0x1A3F → 十进制 // = 1×16³ + 10×16² + 3×16¹ + 15×16⁰ // = 4096 + 2560 + 48 + 15 // = 6719

方法二:除基取余(十进制 → 其他进制)

不断用目标基数去除该数,记录每次余数,最后将余数倒序排列。

// 十进制 25 → 二进制 // 25 ÷ 2 = 12 余 1 // 12 ÷ 2 = 6 余 0 // 6 ÷ 2 = 3 余 0 // 3 ÷ 2 = 1 余 1 // 1 ÷ 2 = 0 余 1 // 倒序读取:11001

关于精度:JavaScript 的普通 Number 类型为 64 位浮点数,整数安全范围仅为 -(2⁵³-1) 到 2⁵³-1(约 ±9千万亿)。超出此范围会丢失精度。本工具使用 BigInt 类型,可以处理任意大小的整数,不会出现精度丢失问题。

#04

位运算核心技巧:程序员必备的底层操作

位运算是直接对二进制位进行操作的高效计算方式,常见于性能敏感的场景和系统编程中:

  • &(按位与):用于提取特定位或判断奇偶。n & 1 === 0 判断偶数;n & 0xFF 取低 8 位。
  • |(按位或):用于设置标志位。flags | 0b0010 设置第 2 位。
  • ^(按位异或):用于翻转位或交换变量。a ^= b; b ^= a; a ^= b; 无临时变量交换。
  • ~(按位取反)~n = -(n+1),常配合 & 使用。
  • <<(左移):等价于乘以 2 的幂。n << 3 = n × 8。
  • >>(右移):算术右移保留符号位;>>> 逻辑右移用 0 填充。

实际应用示例:IP 地址与整数的互转、颜色值分解((color >> 16) & 0xFF 取红色分量)、权限系统的位掩码设计等。

#05

计算机内部数值表示:补码与 IEEE 754 浮点数

补码(Two's Complement):负数的秘密

计算机使用补码表示有符号整数。其核心优势是加减法可以用同一套电路完成,无需单独处理符号位。

  • 正数的补码等于原码本身
  • 负数的补码 = 原码取反 + 1
  • 8 位有符号范围:-128 ~ 127(不是 -127~127!)
// 8 位示例:-5 的补码 // 原码(5) = 00000101 // 取反 = 11111010 // +1 = 11111011 → 这就是 -5

IEEE 754 浮点数标准

现代计算机遵循 IEEE 754 标准存储浮点数:

  • 单精度 float32:1 位符号 + 8 位指数 + 23 位尾数 ≈ 7 位有效数字
  • 双精度 float64:1 位符号 + 11 位指数 + 52 位尾数 ≈ 15-17 位有效数字

这就是为什么 0.1 + 0.2 !== 0.3 在 JavaScript 中返回 0.30000000000000004——二进制无法精确表示 0.1 这个十进制小数。

#06

常见误区与避坑指南

  • 「十六进制比十进制大」:错误!进制只是表示方式不同,255 (十进制) = FF (十六进制) = 11111111 (二进制),它们代表同一个数值。
  • 「parseInt 自动识别进制」:危险!parseInt("08") 在旧浏览器中返回 0(被当作八进制)。始终指定第二个参数:parseInt(str, 10)
  • 「Number 可以处理超大整数」:JavaScript Number 超过 2⁵³ 会丢失精度。处理大整数务必使用 BigInt(后缀 nBigInt() 构造)。
  • 「toString() 总是返回十进制」(255).toString(16) 返回 "ff",可以传入目标进制参数。
  • 「位运算只适用于 32 位整数」:JavaScript 的位运算会将操作数转换为 32 位有符号整数后再运算,结果可能溢出。BigInt 不支持位运算(ES2020+ 已部分支持)。
#07

总结与最佳实践:进制转换在实际开发中的应用

在使用在线进制转换工具时,您输入的可能是内部系统编码、密钥片段或其他敏感数据。数据隐私应当是首要考量

本工具采用纯前端架构(Frontend-Only Architecture),所有进制转换逻辑完全在您的浏览器本地执行:

  • 零网络传输:您的输入数值不会被发送到任何服务器
  • 零服务端日志:没有服务器参与,自然不存在访问日志或数据留存
  • 零注册要求:无需账号登录即可使用全部功能
  • 零持久化存储:关闭页面后所有数据自动清除

这意味着您可以放心地用它处理任何敏感数值转换需求,而不必担心信息泄露风险。对于团队和企业用户,建议将此工具部署到内网环境以获得更高的安全保障。