数字进制转换器

数字系统详解:从二进制到罗马数字及其他

数字系统是数学、计算机科学和人类历史的基础。从计算机的二进制逻辑到我们日常使用的十进制系统,理解不同的进位制能让我们深入了解数据表示、编程和古代文明。本指南涵盖了 20 多种数字系统,包括二进制、十六进制、罗马数字和特殊编码。

关于此工具
此转换器可在 20 多种不同的数字系统之间转换数字,包括:位置性基数(二进制、八进制、十进制、十六进制以及基数 2-36)、非位置性系统(罗马数字)、专用计算机编码(BCD、格雷码)和历史系统(六十进制)。每个系统在计算机科学、数学、古代历史和现代工程中都有独特的应用。

基本概念:数字系统如何运作

什么是位置表示法?
位置表示法是一种表示数字的方式,其中每个数字的位置决定其值。在十进制(基数 10)中,最右边的数字代表个位,其次是十位,然后是百位。每个位置都是基数的幂次方:365 = 3×10² + 6×10¹ + 5×10⁰。此原则适用于所有数字基数。

基数 (Radix)

任何数字系统的基础

基数决定了使用多少个独立数字以及位值如何增加。基数 10 使用数字 0-9。基数 2(二进制)使用 0-1。基数 16(十六进制)使用 0-9 加上 A-F。

在基数 8(八进制)中:157₈ = 1×64 + 5×8 + 7×1 = 111₁₀

数字集

在数字系统中代表值的符号

每个基数都需要从 0 到(基数-1)的独立符号。二进制使用 {0,1}。十进制使用 {0-9}。十六进制扩展到 {0-9, A-F},其中 A=10...F=15。

十六进制中的 2F3₁₆ = 2×256 + 15×16 + 3 = 755₁₀

基数转换

在不同系统之间转换数字

转换涉及使用位置值扩展到十进制,然后转换到目标基数。从任何基数到十进制:总和为 数字×基数^位置。

1011₂ → 十进制:8 + 0 + 2 + 1 = 11₁₀

关键原则
  • 每个基数使用从 0 到(基数-1)的数字:二进制 {0,1}、八进制 {0-7}、十六进制 {0-F}
  • 位置值 = 基数^位置:最右边是 基数⁰=1,其次是 基数¹,然后是 基数²
  • 基数越大 = 表示越紧凑:255₁₀ = 11111111₂ = FF₁₆
  • 计算机科学偏好 2 的幂:二进制 (2¹)、八进制 (2³)、十六进制 (2⁴)
  • 罗马数字是非位置性的:V 无论在哪个位置都等于 5
  • 基数 10 的主导地位来自人类解剖学(10 根手指)

四种必要的数字系统

二进制 (基数 2)

计算机的语言 - 只有 0 和 1

二进制是所有数字系统的基础。每个计算机操作都简化为二进制。每个数字(比特)代表开/关状态。

  • 数字:{0, 1} - 最小符号集
  • 一个字节 = 8 比特,在十进制中表示 0-255
  • 2 的幂是整数:1024₁₀ = 10000000000₂
  • 加法简单:0+0=0, 0+1=1, 1+1=10
  • 用于:CPU、内存、网络、数字逻辑

八进制 (基数 8)

使用数字 0-7 的紧凑二进制表示

八进制将二进制数字以三个为一组(2³=8)。每个八进制数字 = 正好 3 个二进制比特。

  • 数字:{0-7} - 不存在 8 或 9
  • 每个八进制数字 = 3 个二进制比特:7₈ = 111₂
  • Unix 权限:755 = rwxr-xr-x
  • 历史:早期的微型计算机
  • 现今较少见:十六进制已取代八进制

十进制 (基数 10)

通用的人类数字系统

十进制是全球人类沟通的标准。其基数 10 的结构是从用手指计数演变而来。

  • 数字:{0-9} - 十个符号
  • 对人类而言自然:10 根手指
  • 科学记数法使用十进制:6.022×10²³
  • 货币、测量、日历
  • 计算机在内部转换为二进制

十六进制 (基数 16)

程序员对二进制的简写

十六进制是紧凑表示二进制的现代标准。一个十六进制数字 = 正好 4 个比特 (2⁴=16)。

  • 数字:{0-9, A-F} 其中 A=10...F=15
  • 每个十六进制数字 = 4 个比特:F₁₆ = 1111₂
  • 一个字节 = 2 个十六进制数字:FF₁₆ = 255₁₀
  • RGB 颜色:#FF5733 = 红(255) 绿(87) 蓝(51)
  • 内存地址:0x7FFF8A2C

快速参考:相同数字,四种表示法

了解相同的值在不同基数中如何呈现,对于编程至关重要:

十进制二进制八进制十六进制
0000
81000108
15111117F
16100002010
64100000010040
25511111111377FF
256100000000400100
1024100000000002000400

数学与替代基数

除了计算机科学的标准基数外,其他系统也有独特的应用:

三进制 (基数 3)

数学上最有效率的基数

三进制使用数字 {0,1,2}。是表示数字最有效率的基数(最接近 e=2.718)。

  • 数学效率最佳
  • 平衡三进制:{-,0,+} 对称
  • 模糊系统中的三元逻辑
  • 提议用于量子计算(三进制位)

十二进制 (基数 12)

十进制的实用替代方案

基数 12 的因数(2,3,4,6)比 10(2,5)多,简化了分数。用于时间、打、英寸/英尺。

  • 时间:12 小时制时钟、60 分钟 (5×12)
  • 英制:12 英寸 = 1 英尺
  • 分数更容易:1/3 = 0.4₁₂
  • 十二进制学会倡导采用

二十进制 (基数 20)

以二十为单位计数

基数 20 系统是从计算手指加脚趾演变而来。玛雅、阿兹特克、凯尔特和巴斯克等例子。

  • 玛雅历法系统
  • 法语:quatre-vingts (80)
  • 英语:'score' = 20
  • 因纽特传统计数法

基数 36

最大字母数字基数

使用所有十进制数字(0-9)加上所有字母(A-Z)。紧凑且人类可读。

  • URL 缩短器:紧凑的链接
  • 许可证密钥:软件激活
  • 数据库 ID:可输入的标识符
  • 跟踪码:包裹、订单

古代与历史数字系统

罗马数字

古罗马(公元前 500 年 - 公元 1500 年)

主宰欧洲 2000 年。每个符号都有固定值:I=1, V=5, X=10, L=50, C=100, D=500, M=1000。

  • 仍在使用:时钟、超级碗、大纲
  • 没有零:计算困难
  • 减法规则:IV=4, IX=9, XL=40
  • 有限:标准最多到 3999
  • 被印度-阿拉伯数字取代

六十进制 (基数 60)

古巴比伦(公元前 3000 年)

现存最古老的系统。60 有 12 个因数,使分数更容易。用于时间和角度。

  • 时间:60 秒/分钟,60 分钟/小时
  • 角度:360° 圆,60 弧分
  • 可除性:1/2, 1/3, 1/4, 1/5, 1/6 皆可整除
  • 巴比伦天文计算

计算机专用编码

二进制编码的十进制 (BCD)

每个十进制数字编码为 4 比特

BCD 将每个十进制数字(0-9)表示为 4 比特的二进制。392 变成 0011 1001 0010。避免了浮点数错误。

  • 金融系统:精确的十进制
  • 数字时钟和计算器
  • IBM 主机:十进制单元
  • 信用卡磁条

格雷码

相邻值仅相差一个比特

格雷码确保连续数字之间只有一个比特发生变化。对于模拟-数字转换至关重要。

  • 旋转编码器:位置传感器
  • 模拟-数字转换
  • 卡诺图:逻辑简化
  • 错误校正码

实际应用

软件开发

程序员每天都与多种基数打交道:

  • 内存地址:0x7FFEE4B2A000 (十六进制)
  • 比特标志:0b10110101 (二进制)
  • 颜色代码:#FF5733 (十六进制 RGB)
  • 文件权限:chmod 755 (八进制)
  • 调试:hexdump、内存检查

网络工程

网络协议使用十六进制和二进制:

  • MAC 地址:00:1A:2B:3C:4D:5E (十六进制)
  • IPv4:192.168.1.1 = 二进制表示法
  • IPv6:2001:0db8:85a3:: (十六进制)
  • 子网掩码:255.255.255.0 = /24
  • 数据包检查:Wireshark 十六进制

数字电子学

二进制层级的硬件设计:

  • 逻辑门:AND, OR, NOT 二进制
  • CPU 寄存器:64 位 = 16 个十六进制数字
  • 汇编语言:十六进制的操作码
  • FPGA 编程:二进制流
  • 硬件调试:逻辑分析仪

数学与理论

数论探索各种属性:

  • 模运算:各种基数
  • 密码学:RSA、椭圆曲线
  • 分形生成:康托尔集三进制
  • 素数模式
  • 组合数学:计数模式

精通基数转换

任何基数 → 十进制

使用位置值展开:

  • 识别基数和数字
  • 从右到左分配位置 (0, 1, 2...)
  • 将数字转换为十进制值
  • 相乘:数字 × 基数^位置
  • 将所有项相加

十进制 → 任何基数

重复除以目标基数:

  • 将数字除以目标基数
  • 记录余数(最右边的数字)
  • 再次将商除以基数
  • 重复直到商为 0
  • 从下到上读取余数

二进制 ↔ 八进制/十六进制

将二进制比特分组:

  • 二进制 → 十六进制:以 4 比特为一组
  • 二进制 → 八进制:以 3 比特为一组
  • 十六进制 → 二进制:将每个数字扩展为 4 比特
  • 八进制 → 二进制:每个数字扩展为 3 比特
  • 完全跳过十进制转换!

快速心算

常见转换的技巧:

  • 2 的幂:记住 2¹⁰=1024, 2¹⁶=65536
  • 十六进制:F=15, FF=255, FFF=4095
  • 八进制 777 = 二进制 111111111
  • 加倍/减半:移动二进制
  • 使用计算器的程序员模式

有趣的事实

巴比伦的基数 60 沿用至今

每当你看时钟,你都在使用一个有 5000 年历史的巴比伦基数 60 系统。他们选择 60 是因为它有 12 个因数,使分数计算更容易。

火星气候探测者号灾难

1999 年,NASA 价值 1.25 亿美元的火星探测者号因单位转换错误而摧毁——一个团队使用英制单位,另一个使用公制单位。这是在精确性方面一个代价高昂的教训。

罗马数字中没有零

罗马数字没有零也没有负数。这使得高等数学几乎不可能,直到印度-阿拉伯数字(0-9)彻底改变了数学。

阿波罗计划使用八进制

阿波罗导航计算机以八进制(基数 8)显示所有内容。宇航员背诵了将人类送上月球的程序的八进制代码。

十六进制中的 1670 万种颜色

RGB 颜色代码使用十六进制:#RRGGBB,其中每个值为 00-FF (0-255)。这在 24 位真彩色中提供了 256³ = 16,777,216 种可能的颜色。

苏联的三进制计算机

苏联研究人员在 1950-70 年代建造了三进制(基数 3)计算机。Setun 计算机使用 -1, 0, +1 逻辑而非二进制。最终二进制基础设施获胜。

转换最佳实践

最佳实践

  • 了解上下文:二进制用于 CPU 操作,十六进制用于内存地址,十进制用于人类沟通
  • 记住关键映射:十六进制到二进制 (0-F)、2 的幂 (2, 4, 8, 16, 32, 64, 128, 256, 512, 1024)
  • 使用下标符号:1011₂、FF₁₆、255₁₀ 以避免歧义(15 可能是十五或二进制)
  • 将二进制数字分组:4 比特 = 1 个十六进制数字,3 比特 = 1 个八进制数字,以便快速转换
  • 检查有效数字:基数 n 只使用 0 到 n-1 的数字(基数 8 不能有 '8' 或 '9')
  • 对于大数:转换为中间基数(二进制↔十六进制比八进制↔十进制更容易)

常见错误避免

  • 在编程语言中混淆 0b (二进制)、0o (八进制)、0x (十六进制) 前缀
  • 在二进制转十六进制时忘记前导零:1010₂ = 0A₁₆ 而非 A₁₆ (需要偶数个半字节)
  • 使用无效数字:八进制中的 8、十六进制中的 G - 会导致解析错误
  • 混合使用基数而未加注记:'10' 是二进制、十进制还是十六进制?务必指明!
  • 假设八进制↔十六进制可直接转换:必须通过二进制(不同的比特分组)
  • 罗马数字算术:V + V ≠ VV (罗马数字不是位置性的)

常见问题

为什么计算机科学使用二进制而非十进制?

二进制完美对应电子电路:开/关、高/低电压。双态系统可靠、快速且易于制造。十进制需要 10 个不同的电压等级,会使电路变得复杂且容易出错。

如何快速将十六进制转换为二进制?

记住 16 个十六进制到二进制的映射(0=0000...F=1111)。独立转换每个十六进制数字:A5₁₆ = 1010|0101₂。从右边将二进制以 4 个为一组反向转换:110101₂ = 35₁₆。不需要十进制!

学习数字基数的实际用途是什么?

对于编程(内存地址、位运算)、网络(IP 地址、MAC 地址)、调试(内存转储)、数字电子学(逻辑设计)和安全(密码学、哈希)至关重要。

为什么现在八进制比十六进制少见?

十六进制与字节边界对齐(8 比特 = 2 个十六进制数字),而八进制则不对齐(8 比特 = 2.67 个八进制数字)。现代计算机是以字节为导向的,这使得十六进制更方便。只有 Unix 文件权限让八进制保持了相关性。

我可以直接在八进制和十六进制之间转换吗?

没有简单的直接方法。八进制以 3 个比特分组,十六进制以 4 个比特分组。必须通过二进制转换:八进制→二进制 (3 比特)→十六进制 (4 比特)。例如:52₈ = 101010₂ = 2A₁₆。或者使用十进制作为中介。

为什么罗马数字仍然存在?

传统和美学。用于正式场合(超级碗、电影)、区分(大纲)、永恒性(没有世纪歧义)和设计优雅。计算不实用,但在文化上持续存在。

如果我在一个基数中使用无效数字会怎样?

每个基数都有严格的规则。基数 8 不能包含 8 或 9。如果你写 189₈,它是无效的。转换器会拒绝它。编程语言会强制执行此规则:'09' 在八进制上下文中会导致错误。

有基数 1 吗?

基数 1(一元)使用一个符号(计数符号)。不是真正的位置性:5 = '11111'(五个标记)。用于原始计数但不实用。笑话:一元是最简单的基数 - 只要一直数下去就好!

完整工具目录

UNITS 上可用的所有 71 个工具

筛选条件:
类别:

额外