为什么十六进制默认使用 0x 作为前导符

本文探讨了十六进制数在编程中使用0x作为前导符的历史,从CPL语言的起源,B语言和C语言的发展变化,以及为何0x成为主流选择,包括与八进制和十进制的区别,以及编程命名规则的影响。
摘要由CSDN通过智能技术生成

为什么十六进制默认使用 0x 作为前导符呢?

这个问题,应该涉及以C语言为背景的编程语言发展史。

首先给忘记编程的人科普一下:十六进制数的组成部分有0-9以及ABCDEF,八进制数的组成有0-7,十进制数的组成有0-9,这其中有相互交叉的部分。所以要用创造性的天才设计前导符,来在程序中告诉计算机,你所表达的数字究竟是二进制、八进制、十进制还是十六进制,毕竟计算结果可能会根据进制的不同产生差异。

往前翻查编程语言的发展史,那么CPL 语言(1966)可能是前导符的万物起源,1966年诞生的古老编程语言,CPL 语言已经支持二、八和十进制整数。其中二和八进制已经设计了前导符:底数以及空格,方便在程序中对二、八和十进制整数进行区分。

1972年,诞生了B 语言,比尔盖茨据说就非常善于使用B语言编程。B语言使用 0 作为八进制的前导符,比如 036表示为八进制,但在B 语言中移除了十六进制的支持。

1976年前后,Ken设计的C 语言一开始也延续了 B 语言的设计,没有十六进制。但到 1978 为了支持Linux重写的版本就全面支持了十六进制,并使用了 0x 作为前导符,比如 0x12ab。

文头科普了,在编程中要表示一个十六进制、八进制的数字,需要用东西来标识,用于和十进制数字进行区分。而根据主流语言变量名的命名规则(C语言做例子):变量名只能由数字、字母、下划线构成,且必须由字母开头。这个标识符,最好以数字开头,不以字母和 下划线开头,避免把一个数字整体识别为变量。数字中,选用0比较合适,不会对数字进行错误的解释,不会改变数字的大小。再一个原因是八进制英文为Octal ,首字母O和数字0相似,用0作为前缀表示八进制符合习惯,转而十六进制沿用此方法,只是多加一个字符x用于表示十六进制,与八进制进行区分。十六进制数字的前缀为0x,可能是取了十六进制英文hexadecimal(hex)中的x,比八进制的0多加一个字符x用于区分

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

虽然 0x 是主流,但也有一些其他编程场景常用的十六进制前导符。比如网页发扬的十六进制颜色 #66ccff,这被认为 延续了开源图形化界面 X11(X Window System)的颜色写法习,而 X11 的写法源自更早的一些汇编软件,算是另一支传承吧,归根到底嘛,程序员还是很念旧的,学编程的时候的习惯会带到骨灰盒里。

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值