这个和在无符号二进制和二进制补码中如何相等?
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 1111
为 255
)。难道只是因为题目要求补码?
-114
是否等同于142
?我相信,如果您使用二进制补码行,您会得到 142-256
,即 -114
。据此,我不明白为什么在对两个正值求和时甚至要使用二进制补码!
1 的补码意味着翻转所有位,2 的补码意味着取反值。因此 8 位的 1 补码在 255 - x
中有效,而 2 在 256 - x
中有效。您可以通过执行 1 的补码并添加 1
来获得 2 的补码的结果。
8位中的142
是等于-114
。不要太糊涂了。
我正在阅读一本计算机体系结构书籍并遇到以下内容:
假设您有一个 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
。据此,我不明白为什么在对两个正值求和时甚至要使用二进制补码!
1 的补码意味着翻转所有位,2 的补码意味着取反值。因此 8 位的 1 补码在 255 - x
中有效,而 2 在 256 - x
中有效。您可以通过执行 1 的补码并添加 1
来获得 2 的补码的结果。
8位中的142
是等于-114
。不要太糊涂了。