gpt4 book ai didi

computer-science - 为什么是Two的补码?

转载 作者:行者123 更新时间:2023-12-03 21:04:20 25 4
gpt4 key购买 nike

我正在编写一个教程来教 child (9 到 13 岁)编程。我从计算机本身开始,它们与计算机科学没有太大关系,更多的是涉及解决计算问题的过程。

以此为出发点,我正在引导他们理解机器可以帮助我们解决某些计算问题。人们擅长抽象思维和想象力,但计算机在遵循明确规定的程序方面非常出色。他们可以以惊人的速度一次又一次地做到这一点!

我的教程中已经介绍了以二进制格式表示数字。但是你如何表示负数呢?在任何符号系统中,有很多方法可以做到这一点,但为计算机选择的系统有一个非常具体的原因:减少添加有符号整数值所涉及的机器数量。我们不想为了处理负数而构建和构建单独的芯片,我们希望使用我们一直用于自然数算术的相同芯片!

如果有人在街上问你(这看起来完全不现实)“计算机如何表示负数,为什么他们用这种方式表示它们?”

我的具体问题:

  1. How do computers represent negative numbers?

  2. Why do computers represent negative numbers this way?



我猜想这么多有经验的开发人员必须稍微考虑一下。有些人甚至可能无法想出答案。我不是想自大,这是来自实际经验,我问过专业开发人员这个问题,他们无法回答。他们画了一个空白的凝视。给他们 JBoss 和 JavaBeans,他们会充满信心地压倒你。太搞笑了!我也在这个问题上挣扎,我每次都必须提醒自己答案,我需要一张纸或白板来制定解决方案。我希望引导学生更好地了解他们正在使用的机器。

最佳答案

1.How do computers represent negative numbers?



取正值,反转所有位并加一。

2.Why do computers represent negative numbers this way?



很容易在 -7 中添加 7 并得出零。位操作很快。

它如何使它变得容易?

以 7 和 -7 为例。如果您将 7 表示为 00000111 , 找到 -7 反转所有位并加一:
11111000 -> 11111001

现在您可以添加以下标准数学规则:
  00000111
+ 11111001
-----------
00000000

对于计算机来说,这个操作相对容易,因为它基本上涉及到一点一点的比较和一个。

如果相反,您将 -7 表示为 10000111 ,这没有意义:
  00000111
+ 10000111
-----------
10001110 (-14)

要添加它们,您将涉及更复杂的规则,例如分析第一位和转换值。

并且不要忘记@trashgod 所说的话,在 2 的补码中,您只有一个零。要检查它:

00000000
11111111 (invert all bits)
00000000 (add one)



不同于 00000000 (0) 等于 10000000 (-0)

关于computer-science - 为什么是Two的补码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6853524/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com