【问题标题】:Just started learning C this semester, but I can't seem to understand what the professor wants from us in this question这学期刚开始学C,但我似乎无法理解教授在这个问题上对我们的要求
【发布时间】:2020-02-17 16:12:28
【问题描述】:

原问题:

正数在一个补码和二进制补码中具有相同的表示。假设它的表示被解释为二进制补码,并且它的加法逆是确定的。现在这个表示被解释为一个的补码,并且确定了加法逆。无论解释为一个补码还是二进制补码,结果都是一样的,因为它是一个正数。这个结果和原来的数字有什么关系?

不知道他说的“这个结果和原来的数字是什么关系”是什么意思。我想我理解他要我们做什么的过程:

先取二进制 (0101),然后取二进制补码 (1011),然后取二进制补码 (0100)。接下来呢?

【问题讨论】:

  • 好的,你从 0101 开始得到 0100。如果你从 0001、0010 或 0011 开始会发生什么,那么你会得到什么?你看到模式了吗?

标签: c twos-complement ones-complement


【解决方案1】:

如果我发布的内容不止于此,我会给你答案....

生成的数字将与原始数字不同,但无论选择哪个值作为原始数字,它们之间的差异都是一致的。研究几个例子,直到你看到关系。您已经展示了一个二进制示例,这可能会使查看关系变得更加困难。以十进制格式处理几个示例(如果有帮助,请转换为二进制,然后再转换回十进制)。选择以偶数开头的示例,以及以奇数开头的其他示例,这样您就不会对关系得出错误的结论。

然后,作为奖励,看看你是否能弄清楚为什么存在这种关系。这与以下事实有关:对其中一种格式的值求反的执行方式与对另一种格式的值的求反不同。

【讨论】:

  • 赞成不完全完成 OP 的作业,而是提供出色的指导。
  • 仅供参考,也许您想在将来引用它,同样美丽,答案:meta.stackoverflow.com/questions/334822/…
  • @Yunnosch 您链接的元帖子是我用来指导的。也许在那里添加一个答案,链接这篇文章,会是一个很好的补充吗?
  • 啊,我明白了!我只专门看二进制,但是一旦我把它变成十进制并尝试了负数和正数,在转换为二进制补码后,数字将不断下降,直到达到溢出点。我猜原因是因为转换的顺序,如果你翻转并做一个然后两个,它会增加。在整数上使用一个补码并不能将整数完全反映到它的另一个符号,但是二进制补码会,所以当你对一个整数使用两种转换时,它要么总是增加要么减少。
猜你喜欢
  • 2022-09-22
  • 2023-01-20
  • 1970-01-01
  • 2011-05-12
  • 1970-01-01
  • 2017-04-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多