我正在阅读一本计算机体系结构的书,发现了以下内容:
假设您有一个 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 1111
being 255
) 的范围。仅仅是因为问题要求二进制补码吗?
-114
相当于142
?_ 我相信,如果你采用二进制补码数线,你会142-256
得到-114
。由此,我不明白如果您将两个正值相加,为什么还要使用二进制补码!