【发布时间】:2017-09-19 23:39:49
【问题描述】:
我正在阅读一本计算机体系结构的书,发现了以下内容:
假设您有一个 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 是 255)。只是因为问题要求补码吗?
-114 是否等同于 142?我相信,如果你采用二进制补码数线,你会得到142-256,即-114。从此,我不明白为什么要对两个正值求和,为什么还要使用二进制补码!
【问题讨论】:
标签: binary twos-complement bit-representation