0

我正在阅读一本计算机体系结构的书,发现了以下内容:

假设您有一个 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 1111being 255) 的范围。仅仅是因为问题要求二进制补码吗?

-114相当于142?_ 我相信,如果你采用二进制补码数线,你会142-256得到-114。由此,我不明白如果您将两个正值相加,为什么还要使用二进制补码!

4

1 回答 1

1

1 的补码意味着翻转所有位,2 的补码意味着取反。所以 8 位的 1 的补码有效地导致 in255 - x和 2 的256 - x. 您可以通过执行 1 的补码并添加 来获得 2 的补码的结果1

1428 位的in等于. -114不要对此感到太困惑。

于 2017-09-19T23:55:28.450 回答