工具
ZH

什么是十六进制?

十六进制(hexadecimal,简称 hex)是一种以 16 为基数的计数系统。它用 16 个符号来表示数字,即 0–9 和 A–F,是计算机领域表示二进制数据的标准简写方式,从网页颜色到内存地址都离不开它。

一句话解释十六进制

十六进制是一种基数为 16 的位置计数法:每一位的位权是其右边一位的 16 倍(逢十六进一),数值 10 到 15 用字母 A 到 F 表示。为了标明一个数是十六进制,程序员会写成 0x1A(C、Java、JavaScript、Python),CSS 颜色写作 #1A2B3C,汇编语言中写作 1Ah,数学中则写作 1A₁₆。

十六进制数字 0 到 15 对照表

十进制十六进制二进制十进制十六进制二进制
000000881000
110001991001
22001010A1010
33001111B1011
44010012C1100
55010113D1101
66011014E1110
77011115F1111

如何用十六进制计数

十六进制的计数方式和十进制类似,只不过要到 F 之后才进位,而不是 9 之后:… 8、9、A、B、C、D、E、F、10、11 … 19、1A … 1F、20 … FF、100。这里的 10 表示十六,100 表示 16 × 16 = 256。两位十六进制数字可以表示一个字节(00–FF = 0–255),四位最大到 FFFF = 65,535,八位最大到 FFFFFFFF = 4,294,967,295。

计算机为什么使用十六进制

计算机中的一切都以二进制存储,但一长串 0 和 1 不仅难以阅读,还容易输错。因为 16 = 2⁴,一位十六进制数字恰好代表四个二进制位(半字节),两位十六进制数字代表一个字节。十六进制和二进制之间的转换只需逐位查表,而且十六进制的长度只有二进制的四分之一:1101 1110 1010 1101 就是 DEAD。十进制与二进制之间没有这样简洁的对应关系,所以很少用来表示原始数据。

十六进制与十进制的相互转换

我们的转换器可以即时完成以上所有换算,并展示每一个步骤。

十六进制的常见用途

十六进制、十进制、八进制与二进制对比

进制基数数字255 的写法典型用途
二进制20–111111111硬件、标志位
八进制80–7377Unix 文件权限(chmod 755)
十进制100–9255日常计数
十六进制160–9、A–FFF字节、颜色、地址、哈希值

十六进制中的负数

十六进制本身没有专门的负数表示方式,所以负数通常以补码形式存储:固定长度数值的最高位表示它是负数。作为有符号字节时,7F 是 127,80 是 −128,FF 是 −1;作为 32 位整数时,FFFFFFFF 是 −1。在数学中以及我们的计算器里,也可以直接写负号:−1A = −26。

常见问题

十六进制为什么要用字母?

十六进制需要十六个单字符数字,但阿拉伯数字只有十个,所以用字母 A–F 表示数值 10–15。大写和小写含义相同:ff = FF = 255。

数字前面的 0x 是什么意思?

在 C、C++、Java、JavaScript、Python 等众多编程语言中,0x 前缀表示这个数是十六进制:0x10 是 16,而不是 10。CSS 颜色则用 # 表示,汇编代码中常在末尾加 h(10h)。

十六进制和 Base64 一样吗?

不一样。十六进制把每个字节写成两个 0–9 或 A–F 中的字符,因此数据体积会翻倍,但便于逐字节阅读。Base64 使用 64 种字符,把 3 个字节打包成 4 个字符,更加紧凑(体积只增加约 33%),但无法逐字节阅读。

最后更新: