计组学习
进入第二周的学习,我感觉自己真正开始触碰到了计算机的“内脏”。如果说第一周是俯瞰整台机器的轮廓,那么这一周,我们则是钻进了机器内部,观察数据是如何被存储和计算的。本周的内容围绕数据的表示与运算展开,既有抽象的数学逻辑,又有严谨的电路实现,让我受益匪浅,也遇到了一些挑战。
一、 学习内容回顾:从“数”到“码”的转变
本周的核心思想就是“计算机如何理解数字”。我们日常使用的十进制,在计算机的世界里必须被转换成二进制,但这仅仅是第一步。为了让计算机能够处理负数并进行高效的加减运算,我们学习了三种重要的机器数表示法:
原码:最直观的表示法,用最高位表示符号,但计算机在处理原码加减法时逻辑复杂,且存在“正负零”的歧义。
反码:作为原码到补码的过渡,负数是对原码按位取反。
补码:本周的重中之重! 补码的神奇之处在于,它将减法统一成了加法,大大简化了硬件电路的设计。通过“模”的概念理解补码,让我明白了为什么负数要用这样看似绕弯子的方式表示——一切都是为了化减为加。
二、 主要收获与感悟
从“加减法”看计算机的“智商”
以前我一直认为,计算机做1+1肯定比人快,但从未想过它内部是如何执行的。本周学习了ALU(算术逻辑单元)的基本原理,特别是加法器的构成。原来,计算机并不认识“减号”,它只会做加法。当我们在键盘上敲下 5 - 3 时,计算机实际上在做的是 5 + (-3),而这个 -3 正是以补码的形式存在的。这种“将复杂问题转化为最擅长的简单问题”的设计思想,让我感受到了计算机体系结构的精妙与简洁。
溢出判断的启示
在学习定点数加减法时,最让我头疼的是溢出问题。两个正数相加为什么会变成负数?这不仅仅是计算结果错了,更是计算机硬件资源有限性的体现。通过分析单符号位和双符号位(变形补码)的判溢逻辑,我意识到,在计算机的世界里,不仅要会算,还要能判断结果的合法性。这启示我在编程时,尤其是处理数据边界时,必须考虑数据类型的取值范围,避免隐晦的溢出bug。
三、 遇到的困难与解决
在初学阶段,我对原码、反码、补码之间的转换规则记忆得比较机械,导致在做练习题时容易出错。特别是对于补码的补码等于原码这一性质,理解得不够透彻。

浙公网安备 33010602011771号