|
|
1
16
C,C++和Java的祖先,最初是由Dennis Richie在70年代初在PDP8S上开发的。 12-bit address space ,所以指针(地址)是12位长,最方便地用3个4位八进制数字(第一个可寻址字是000八进制,最后一个可寻址字是777八进制)在代码中表示。 八进制不能很好地映射到8位字节,因为每个八进制数字代表三位,所以在八进制表示法中总是有多余的位可以表示。全真位字节(1111111)的八进制数是377,十六进制数是FF。 十六进制对大多数人来说更容易在他们的大脑中转换为二进制,因为二进制数字通常用八个字节(因为这是一个字节的大小)来表示,而八个恰恰是两个十六进制数字,但是十六进制符号在丹尼斯的时间里会显得笨拙和误导(意味着能够处理16位)。程序员在处理硬件(每个位通常代表一条物理线)和位逻辑(每个位都有程序员定义的含义)时,需要用二进制来思考。 我认为丹尼斯在日常的十进制数字中添加了0前缀,这是最简单的变化,对于早期的解析器来说也是最容易区分的。 我相信十六进制符号0x_uuu是在稍后添加到c中的。编译器解析树来区分1-9(十进制常量的第一位)、0(八进制常量的第一[不重要]位)和0x(表示十六进制常量后接数字),这比仅使用前导0作为指示器来切换将后续数字解析为八进制比率要复杂得多。比小数高。 丹尼斯为什么要这样设计? Contemporary programmers 不要欣赏那些早期的计算机通常是通过物理地翻转CPU前面板上的开关,或使用穿孔卡或纸带将指令切换到CPU来控制的;所有节省几步或指令的环境都代表着节省大量人工劳动。而且,内存有限且昂贵,因此即使保存一些指令也有很高的价值。 综上所述: 0代表八进制,因为它是高效可解析的,八进制在PDP-8S上是用户友好的(至少用于地址操作) 对于十六进制,可能是因为它是八进制前缀标准的自然向后兼容扩展,而且解析起来仍然相对高效。 |
|
|
2
7
八进制的零前缀和十六进制的0x来自于Unix的早期。 八进制存在的原因可以追溯到有6位字节的硬件,这使得八进制成为了自然的选择。每个八进制数字代表3位,所以6位字节是两个八进制数字。十六进制也是如此,从8位字节开始,十六进制数字是4位,因此一个字节是两个十六进制数字。将八进制用于8位字节需要3个八进制数字,其中第一个数字只能具有0、1、2和3的值(第一个数字实际上是“四进制”,而不是八进制)。 除非有人开发了一个字节长度为10位的系统,否则没有理由转到base32,所以一个10位字节可以表示为两个5位的“nybols”。 |
|
|
3
5
_156;new_157;数字必须以数字开头,才能使用现有语法。 已建立的实践有变量名和其他标识符,以字母(或其他一些符号,可能是下划线或美元符号)开头。因此,a_,_ abc_,和a04_都是名字。数字以数字开头。因此,__3_和__3e5_是数字。 当您向编程语言中添加新的东西时,您会设法使它们与现有的语法、语法和语义相匹配,并尝试使现有的代码继续工作。因此,您不希望更改语法使__x34_157;成为十六进制数字或__o34_157;成为八进制数字。 那么,如何将八进制数字放入这个语法中呢?有人意识到,除了__0__之外,不需要以_0__开头的数字。没有人需要为123写__0123__。所以我们用前导零来表示八进制数字。 十六进制数字呢?您可以使用后缀,因此__34x_表示34 十六 . 但是,在解析器知道如何解释数字之前,它必须一直读到数字的末尾(除非遇到一个A到F数字,这当然表示十六进制)。解析器上更容易知道数字是十六进制的。但是你还是要从一个数字开始,零技巧已经被使用了,所以我们需要一些其他的东西。__x_被选中,现在我们有__x_用于十六进制。 (以上是基于我对解析的理解和一些语言开发的一般历史,而不是基于编译器开发人员或语言委员会做出的特定决策的知识。) |
|
4
3
我不知道… 0是0cTAR 我们已经用了0来表示八进制,还有一个十六进制的x,所以这里也没有。 至于自然进程,最好看最新的编程语言,它可以附加下标,例如 123_27(解释为下标) 等等 ? 作记号 |
|
5
2
这就是为什么Ada使用16形式引入十六进制常量、8表示八进制、2表示二进制等的部分原因。 不过,我不会太担心在基地建设中需要“未来增长”的空间。这不像RAM或寻址空间那样,每代人都需要一个数量级以上的空间。 事实上,研究表明,八进制和十六进制几乎是 甜点 用于二进制兼容的人类可读表示。如果比八进制低一点,就需要一个不可计算的数字来表示更大的数字。如果超过十六进制,数学表就会变得异常大。十六进制实际上已经有点太多了,但八进制有一个问题,即它不能均匀地适应一个字节。 |
|
|
6
1
|
|
|
7
-1
我认为
|
|
|
MaPo · Linux,设置锁定ICMP_过滤器选项 11 月前 |
|
Doohyeon Won · 内联函数上的奇怪现象?[关闭] 1 年前 |
|
|
Bobby · 复合字面值总是左值吗? 1 年前 |
|
9-Pin · C: 嵌套结构的堆栈内存分配 1 年前 |