一直以来,我从未想过问这个问题;我知道这源自于C++,但背后的理由是什么呢:
- 按照正常方式指定十进制数
- 通过前导0指定八进制数
- 通过前导0x指定十六进制数
为什么是0?为什么是0x?是否存在自然的32进制进展?
一直以来,我从未想过问这个问题;我知道这源自于C++,但背后的理由是什么呢:
为什么是0?为什么是0x?是否存在自然的32进制进展?
0x代表十六进制,可能是因为它是对八进制前缀标准的自然且向后兼容的扩展,并且仍然相对高效地解析。
八进制的零前缀和十六进制的0x来自Unix早期。
八进制存在的原因可以追溯到当有6位字节的硬件时,这使得八进制成为了自然选择。每个八进制数字代表3位,因此6位字节是两个八进制数字。同样地,对于8位字节的十六进制也是如此,其中一个十六进制数字表示4位,因此一个字节是两个十六进制数字。将8位字节表示为八进制需要3个八进制数字,其中第一个只能有值0、1、2和3(第一个数字实际上是'四进制',不是八进制)。除非有人开发出一种字节长度为10位的系统,否则没有理由转向基于32的表示方法,因此10位字节可以表示为两个5位的“nybble”。
我不确定...
0表示八进制
0x表示十六进制,因为我们已经使用了0来表示八进制,在十六进制中有个x,所以加上它
至于自然进展,最好参考最新的编程语言,这些语言可以附加下标,例如
123_27(将“_”解释为下标)
等等
?
马克
我认为它实际上来自UNIX/Linux世界,并被C/C++和其他语言采用。但我不知道确切的原因或真正的起源。