:从“10种人”开始——破译C语言的内存密码)
免责声明本文内容仅限学习使用。文中涉及的C语言类型系统、二进制/十六进制表示、整数溢出行为等基于ISO C标准和通用嵌入式开发实践。不同编译器(GCC、IAR、Keil)对不同平台上的类型大小和溢出行为可能有不同实现。若将文中内容应用于实际项目,请务必查阅目标平台的编译器文档和芯片数据手册自行验证。因使用不当造成的任何损失,责任由使用者自行承担。序章:玩笑背后的终极真理还记得我们在上一章里,看着8个LED像赛博人一样左右扫射时发出的惊叹吗?当时,我们只是借用了一串神奇的数字,让芯片乖乖听话。现在,我们要回到源头,去探索那些数字究竟是怎么来的。在我们的探险旅途中,有一件T恤的名言是这样说的:“世界上有10种人:懂二进制的人,和不懂二进制的人。”要是你不懂这个笑话,没关系,这一章我们就要搞懂它。其实,这不仅仅是个笑话,这是通往计算机底层世界的终极密码。为什么“10”代表两种人?因为在二进制中,数字“10”表示的是十进制中的“2”。这个笑话的巧妙之处在于:它用二进制语言(10 = 2)说出了十进制的“两种人”。如果你能秒懂,说明你的大脑已经被二进制的思维“污染”了——这正是我们需要达到的状态。对于8个LED来说,它们的电源只有两种状态:有电(+3V)和没电(0V)。而在逻辑层面上,这对应着真(1)