为什么十六进制大多使用 0x 作为前导符

CPL 语言(1966)可能是前导符的万物起源,它支持二、八和十进制整数。其中二和八进制需要前导符:底数以及空格,比如 8 362 1000000

B 语言(1972)使用 0 作为八进制的前导符,比如 036,但移除了十六进制支持。

C 语言一开始,也延续了 B 语言的设计,没有十六进制。直到 1978 才支持十六进制,并使用了 0x 作为前导符,比如 0x12ab。由于没有设计者的备忘录,所以有人猜测 0 可能是延续 B 语言的设计,而 x 是 hex(十六进制)的缩写,因为读音类似。

所以 0x 前导符现在这么流行,主要还是 C 语言足够流行吧。比如 Intel 的汇编语言与 Modula-2,使用后导符 h,比如 FFh05A3H,这种写法就没有被其他语言吸收。(后导符也不利于人类识别)

虽然 0x 是主流,但也有一些其他常用的十六进制前导符。比如网页发扬的十六进制颜色 #66ccff这被认为 延续了开源图形化界面 X11(X Window System)的颜色写法习,而 X11 的写法源自更早的一些汇编软件,算是另一支传承吧。

附言:Unicode 也是十六进制,不过常用的 U+ 前缀,根据 Jim DeLaHunt 的考据与回忆,U+ 其实是事实标准。当时许多人使用 U+12EF 来表示 Unicode,之后 Unicode 标准才使用这种写法。

参考了 Russ Cox 和 Robert Griesemer 的考据 | #考据
 
 
Back to Top