二进制中1的补码和2的补码的重要性是什么[关闭]

问题描述 投票:0回答:3

我正在尝试学习二进制数字系统,而且几乎是新的。我刚刚完成了关于二进制数转换、加法、减法等一些基本知识的章节。

但是现在我看到了一章关于1的补码和2的补码。我知道什么是有符号数、有符号大小以及二进制数字如何以8位、16位等形式存储在内存中。但问题是我无法理解为什么1的补码和2的补码。还有为什么我们应该使用 2 的补码以及为什么它更好等等。

我正在关注一本书,它有转换为 1 的补码和 2 的补码的指南。但没有任何解释为什么 1 的补码和 2 的补码。

所以我需要一些帮助来更深入地理解它。任何有关二进制数字系统等的书籍建议都将受到赞赏。

c binary computer-science number-systems
3个回答
3
投票

1s 的补码 只是一个按位非门,即 1011 变成 0100。

2 的补码 最常用于表示有符号整数,因为它遵循加法和减法规则。如果将 1 与 1111 加 1,则会得到 0000。因此 1111 应该是 -1。


0
投票

1 的补码只是按位非(即 001 变成 110),这最终会得到两个零(111 和 000),因此在执行具有不同符号的数字的加法时(以及每当你跨越0)。然而,在硬件中实现求反非常简单(它是单个并行操作)。

2 的补码调整范围,因此负数比正数多一个(对于 8 位数字,范围是 -128 到 127),但您不必考虑任何事情,并且只有一个零。对数字求反的成本稍高(一次并行位翻转,然后进行加法),但这可能可以通过更简单的加法电路来补偿。

符号位仅使用最高位来表示负或正。它基本上具有 1 补码的所有缺点。求负数非常简单(翻转位)

还有偏移数,其中“所有位 0”数字实际上意味着“最大负数”,而“仅最高位 0”意味着“数字零”。例如,如果您使用数字来控制某个物理物体的位移(全零一直到一端,全1一直到另一端,“零”在中间),这可能很有吸引力.


0
投票

您可以使用任何系统,但有些系统各有利弊。

1 的补码很容易理解,但不提供统一的算术(当你想将两个数字相加时,你必须根据操作数的符号来区分不同的情况),因此在硬件中实现它的成本太高。另一个问题是存在两个0(一个负1和一个正1)。

2 的补码稍微难以理解,但提供了一种非常简单的统一算术,您只需以相同的方式添加数字,无论数字的符号是什么(例如)。因此,实施它会带来更便宜/更小的硬件。

© www.soinside.com 2019 - 2024. All rights reserved.