进制转换(二进制、八进制、十进制、十六进制)

在二进制、八进制、十进制、十六进制之间相互转换数值。使用 BigInt 进行运算,即使位数很大的整数也能精确转换,不会产生误差。

使用提示

  • 输入十六进制数值时,请不要添加 `0x` 等前缀,只需输入数字部分(例如:`FF`)。大小写字母均可识别。
  • 本工具使用 BigInt 进行计算,因此即使是超过 2^53 的大整数(在 JavaScript 的 Number 类型下会产生误差)也能精确转换。
  • 可用于编程中常见的十六进制颜色代码(例如:`#FF0000`),或在确认位运算结果时使用二进制表示法。
  • 八进制常用于类 Unix 系统的文件权限表示(例如:`755`)。将其与十进制、二进制对照查看,能更容易理解权限的含义。

常见问题

它们都是表示数值时使用的不同"进制"(基数)。十进制使用 0~9 共 10 个数字,是我们日常最熟悉的表示法;二进制只使用 0 和 1 两种数字,是计算机内部处理所使用的表示法;八进制使用 0~7;十六进制使用 0~9 和 A~F,在计算机科学和电子工程领域被广泛使用。

十六进制的一位数恰好可以表示 4 个比特(相当于二进制的 4 位),因此能够以人类更容易阅读的方式压缩表示二进制数据。它被广泛用于内存地址、颜色代码(`#RRGGBB`)、字符编码等需要处理计算机内部位序列的场合。

使用普通计算器或 JavaScript 的 Number 类型进行转换时,超过 2 的 53 次方(约 900 万亿)的整数可能会产生误差。本工具使用 BigInt(位数无限制的整数类型)进行计算,因此无论整数位数多大,都能精确转换,不会产生误差。

八进制主要用于类 Unix 系统(Linux、macOS 等)的文件权限表示(例如:`chmod 755`)。每一位数字代表"读取(4)、写入(2)、执行(1)"权限的组合,一位八进制数字就能简洁地表示所有者、所属组、其他用户各自的权限。
ツールくん

闲话 ― 为什么计算机采用二进制运行

计算机之所以以二进制(0 和 1)为基础,是因为电子电路更容易稳定地区分"电压高/低"或"开关开/关"这两种状态。相比之下,若要像十进制那样精确识别十个不同的电压等级,电路会更容易受噪声干扰、结构也更复杂。出于这种实用的工程考量,现代几乎所有计算机都采用了二进制。

十六进制之所以在编程中备受青睐,源于一个数学上的巧合:二进制的 4 位(0000~1111)恰好对应十六进制的 1 位(0~F)。例如,1 字节(8 比特)的数据用十六进制恰好可以表示为 2 位(`00`~`FF`),把原本需要 8 位二进制才能表达的信息压缩成了更易读的长度。

八进制的流行有其历史原因:早期计算机(如 20 世纪 60 年代的 PDP-8)采用了 12 位、36 位等 3 的倍数的字长,当时八进制与二进制的对应关系更为方便。此后,随着计算机逐渐统一采用 8 位、16 位、32 位(4 的倍数)等字长,十六进制在实用性上超过了八进制,如今已成为主流。不过,在 Unix 文件权限等场合,八进制至今仍在使用。