这个和在无符号二进制和二进制补码中如何相等?

How is this sum equal in unsigned binary and twos complement binary?

我正在阅读一本计算机体系结构书籍并遇到以下内容:

假设您有一个 8 位单元格。所以有 256 个可能的整数值。从 0 到 127 的非负数 运行。假设二进制补码表示,97 + 45 的和是多少?

无符号数明明是142,你可以做成十进制的97+45,或者:

0110 0001
0010 1101 ADD
--------------
1000 1110

但是当你执行二进制补码时,你取那个结果(1000 1110)并确定它是负的,因为符号位是1。然后取它的补码:

NOT 1000 1110 = 0111 0001

然后求其补码:

0111 0001
0000 0001 ADD
--------------
0111 0010

这个数字是114,但是因为我们原来的数字在符号位中有一个1,所以它是-114

问题:

为什么要费尽心机地用补码来求 -114?自从 97 和 45 以来,为什么不直接将两个正整数的和作为一个无符号值求得,该值适合 8 位单元格的范围(1111 1111255)。难道只是因为题目要求补码?

-114是否等同于142?我相信,如果您使用二进制补码行,您会得到 142-256,即 -114。据此,我不明白为什么在对两个正值求和时甚至要使用二进制补码!

1 的补码意味着翻转所有位,2 的补码意味着取反值。因此 8 位的 1 补码在 255 - x 中有效,而 2 在 256 - x 中有效。您可以通过执行 1 的补码并添加 1 来获得 2 的补码的结果。

8位中的142等于-114。不要太糊涂了。