我正在写一个教程来教孩子(9 到 13 岁)编程。我从计算机本身开始,它们与计算机科学没有太大关系,它更多的是关于解决计算问题的过程。
有了这个起点,我正在引导他们理解机器可以帮助我们解决某些计算问题。人们擅长抽象思维和想象力,但计算机在遵循明确规定的程序方面非常出色。他们可以以惊人的速度一次又一次地做到这一点!
我的教程中已经介绍了以二进制格式表示数字。但是你如何表示负数?在任何符号系统中都有很多方法可以做到这一点,但为计算机选择的系统有一个非常具体的原因:减少添加有符号整数值所涉及的机器数量。我们不想仅仅为了处理负数而构建和构建单独的芯片,我们希望使用我们一直用于自然数运算的相同芯片!
如果有人在街上问你(这看起来完全不现实)“计算机如何表示负数,为什么它们会这样表示?”
我的具体问题:
计算机如何表示负数?
为什么计算机以这种方式表示负数?
我猜这么多有经验的开发人员会不得不考虑一下。有些人甚至无法想出答案。我不是想浮夸,这是从实际经验中得出的,我问过专业开发人员这个问题,他们无法回答。他们面无表情。给他们 JBoss 和 JavaBeans,他们会让你充满信心。太搞笑了!我也很纠结这个问题,我每次都必须提醒自己答案,我需要一张纸或白板来制定解决方案。我希望引导学生更好地了解他们正在使用的机器。