二进制加法溢出和和正确性

时间:2018-10-01 01:59:17

标签: binary addition signed twos-complement

我需要以下主题的一些建议:添加两个有符号/幅值和两个补码二进制数。我在纸上进行了计算并上传了图片。抱歉,如果我的照片偏斜(我不知道为什么上传会这样做)

添加两个有符号/幅值

  1. +6 +(-6) 忽略进位1.。总和为4,且为错误。没有溢出,因为我们添加了两个带有不同符号指示符的数字0和1。

  2. +4 +(+5) 和为-1,不正确。溢出是因为我们因为添加了两个带有相同符号指示符0的数字。

添加两个补码二进制数字

  1. +6 +(-6) 忽略进位1。总和为0且正确。没有溢出,因为我们添加了两个带有不同符号指示符的数字0和1。

  2. +4 +(+5) 总和是-7,不正确。溢出是因为我们因为添加了两个带有相同符号指示符0的数字。

通过示例,我是否正确理解二进制加法溢出和总和正确性?

Pic

1 个答案:

答案 0 :(得分:0)

来自this University course

  

4.11.4。加减   加减法需要注意符号位。如果符号相同,我们只需将幅度添加为无符号数字,然后注意溢出。如果符号不同,则从较大的符号中减去较小的幅度,并保留较大的符号。

因此,对于符号大小,您遇到的第一个错误。

符号不同,因此您从较小的数字减去较大的数字。由于它们相同,所以选择什么都没关系。结果为0,它是正确的。 +0或-0。没关系,因为它们都代表同一件事。

您也弄错了第二个,因为对于总和+ 4 + 5,应保留符号+作为结果,然后加上幅度。

1         carry (ignore carry to the most sign bit)
0100  +4
0101  +5
--------
0001  +1

结果为+1,并且进位到最高有效位(即符号位)检测到溢出。

选中此项以获取更多信息http://pages.cs.wisc.edu/~smoler/x86text/lect.notes/arith.int.html


2的补语

您的答案是正确的:tada: