八进制/十六进制符号来自哪里?

毕竟这一次,我从来没有想过要问这个问题,我明白这是来自c,但是它背后的原因是什么:

>指定十进制数
通常会
>通过前导0指定八进制数
>通过前导0x指定十六进制数字

为什么0为什么是0x? 32号基地有自然进展吗?

解决方法

C,C和 Java的祖先,最初由Dennis Richie在七十年代初PDP-8开发.那些机器有一个 12-bit address space,所以指针(地址)是12位长,最方便地用代码表示三个4位八进制数字(第一个可寻址字将是000个字,最后一个可寻址字777cctal).

八进制不能很好地映射到8位字节,因为每个八进制数字表示三位,所以在八进制符号中总是存在多余的位.全为TRUE位字节(1111 1111)为八进制377,但十六进制FF.

十六进制对于大多数人来说比较容易,因为二进制数通常用八进制表示(因为这是一个字节的大小),而八位正好是两个十六进制数字,但是十六进制符号将被笨拙并在丹尼斯的时间误导(意味着能够解决16位).当使用硬件(每个位通常代表物理线)和处理逐位逻辑(每个位具有程序员定义的含义)时,程序员需要考虑二进制.

我想像丹尼斯添加了0前缀作为日常十进制数的最简单的可能变化,最简单的那些早期的解析器来区分.

我相信十六进制符号0x__稍后稍后添加到C中.编译器解析树来区分1-9(十进制常数的第一位数),0(八进制常数的第一个[无效数字))和0x(表示后续数字中遵循的十六进制常量)相当多比仅使用前导0作为指示符从分析后续数字转换为八进制而不是十进制而复杂.

为什么丹尼斯这样设计? Contemporary programmers不明白,这些早期的计算机通常通过在cpu前面板上或通过打孔卡或纸带物理翻转开关来切换指令来控制cpu;节省了几个步骤或指令的所有环境代表了大量体力劳动的节省.而且,内存有限而且昂贵,所以节省甚至几个指令都具有很高的价值.

综上所述:
0为八进制,因为它是有效的可解析和八进制在PDP-8上是用户友好的(至少对于地址操纵)

0x的十六进制可能是因为它是八进制前缀标准的自然和向后兼容扩展,仍然相对有效率的解析.

相关文章

本程序的编译和运行环境如下(如果有运行方面的问题欢迎在评...
水了一学期的院选修,万万没想到期末考试还有比较硬核的编程...
补充一下,先前文章末尾给出的下载链接的完整代码含有部分C&...
思路如标题所说采用模N取余法,难点是这个除法过程如何实现。...
本篇博客有更新!!!更新后效果图如下: 文章末尾的完整代码...
刚开始学习模块化程序设计时,估计大家都被形参和实参搞迷糊...