Binary 使用有符号2'添加8位数字;补语
要么是对下面所写的内容有些混淆,要么是我的课本错了。 我在我的课本上看了一些例子,用2的补码加上8位有符号的二进制数字,遇到了这些例子。 我们需要查明是否发生溢流Binary 使用有符号2'添加8位数字;补语,binary,overflow,addition,signed,twos-complement,Binary,Overflow,Addition,Signed,Twos Complement,要么是对下面所写的内容有些混淆,要么是我的课本错了。 我在我的课本上看了一些例子,用2的补码加上8位有符号的二进制数字,遇到了这些例子。 我们需要查明是否发生溢流 示例1] 加上+75和-58 +75=01001011。。。(a) +58=00111010 -58 = 11000110 ... (b) [取2+58的补码] 现在加上(a)和(b)我们得到 01001011 +11000110 1] 0000001 教科书中写道,溢出发生时,箭头指向用方括号分隔的额外1。 这个例子是好的,从这
示例1] 加上+75和-58 +75=01001011。。。(a)
+58=00111010
-58 = 11000110 ... (b) [取2+58的补码]
现在加上(a)和(b)我们得到 01001011
+11000110
1] 0000001 教科书中写道,溢出发生时,箭头指向用方括号分隔的额外1。 这个例子是好的,从这里我了解到,如果有和额外的1,那么我们有一个溢出 (问题1:我的理解正确吗?)
这个例子把我弄糊涂了 添加53和(-13) 53=00110101
-(13) =11110011 现在加上这两个,我们得到 00110101+11110011=1]00101000 然后他们写道:有符号位的进位和进位是1。所以没有溢出。丢弃进位和rest是所需的正结果 (主要问题是:尽管有这个溢出数字(额外的1),为什么他们说它没有溢出。上面句子中写的有符号位的进位和进位是什么。)
我做了很多谷歌搜索,但找不到一个很好的合理的解决方案,这一行他们谈论的,或者可能是在我眼前,但我不明白。请有人澄清一下。我看到的大多数例子(在堆栈溢出和其他站点上)都是关于4位的,这让我更加困惑。有人请帮助我澄清,谢谢。 只有当正确答案不能用给定的位数来解释时才发生溢出。需要一个额外的位来解释答案的正确性。请考虑下面的字节数加例: +70英寸二进制文件01000110 +80英寸二进制01010000 新增:10010110 MSB中的1(最高有效位)表示答案为负,这是错误的。但是,如果我们将额外的第9位作为符号位(=0),则答案为010010110=150。此额外符号位的值等于MSB中位相加后的进位(在本例中为0)
参考文献:M. Morris Mano的计算机体系结构。
< P>溢出仅发生在使用给定位数的正确答案无法解释的情况下。需要额外的位来解释答案的正确性。请考虑下面的字节数加例:
+70英寸二进制文件01000110 +80英寸二进制01010000 新增:10010110 MSB中的1(最高有效位)表示答案为负,这是错误的。但是,如果我们将额外的第9位作为符号位(=0),则答案为010010110=150。此额外符号位的值等于MSB中位相加后的进位(在本例中为0)参考:M.Morris Mano的计算机系统架构。使用8位带符号2的补码表示法添加以下内容:
- 25和40
- 75和80
- 25和40
- 75和80
示例1: Decimal Carry out Sign bit 2’s Complement -65 - 1 011 1111 -15 - 1 111 0001 --------------------------------------------- -80 1 1 011 0000 1's complement of 0110000 = 1001111 Adding Overflow digit 1 to 1001111 we will get our answer as 1010000. With signed bit we will get - 1 1010000 which is equal to -80 Decimal Carry out Sign bit 2’s Complement -65 - 1 011 1111 -75 - 1 011 0101 -------------------------------------------- -140 1 0 111 0100 十进制执行符号位2的补码 -65 - 1 011 1111 -15 - 1 111 0001 --------------------------------------------- -80 1 1 011 0000 011000的1的补码=1001111 将溢出数字1添加到1001111,我们将得到1010000的答案。 有符号位我们将得到-1010000,等于-80 进位到符号位=1 符号位的执行=1 因此,没有溢出
示例2: Decimal Carry out Sign bit 2’s Complement -65 - 1 011 1111 -15 - 1 111 0001 --------------------------------------------- -80 1 1 011 0000 1's complement of 0110000 = 1001111 Adding Overflow digit 1 to 1001111 we will get our answer as 1010000. With signed bit we will get - 1 1010000 which is equal to -80 Decimal Carry out Sign bit 2’s Complement -65 - 1 011 1111 -75 - 1 011 0101 -------------------------------------------- -140 1 0 111 0100 十进制执行符号位2的补码 -65 - 1 011 1111 -75 - 1 011 0101 -------------------------------------------- -140 1 0 111 0100 进位到符号位=0 符号位的执行=1 因此,溢出
我希望,这一定已经消除了您对溢出和带符号2的补码二进制加法技术的疑虑。我将尝试借助示例来解决您的疑问,我们将使用带符号2的补码方法来添加两个数字 但在此之前,让我告诉你发生溢流时的情况 基本上,当进位到符号位不等于进位到符号位时,会发生溢出
示例1: Decimal Carry out Sign bit 2’s Complement -65 - 1 011 1111 -15 - 1 111 0001 --------------------------------------------- -80 1 1 011 0000 1's complement of 0110000 = 1001111 Adding Overflow digit 1 to 1001111 we will get our answer as 1010000. With signed bit we will get - 1 1010000 which is equal to -80 Decimal Carry out Sign bit 2’s Complement -65 - 1 011 1111 -75 - 1 011 0101 -------------------------------------------- -140 1 0 111 0100 十进制执行符号位2的补码 -65 - 1 011 1111 -15 - 1 111 0001 --------------------------------------------- -80 1 1 011 0000 011000的1的补码=1001111 将溢出数字1添加到1001111,我们将得到1010000的答案。 有符号位我们将得到-1010000,等于-80 进位到符号位=1 符号位的执行=1 因此,没有溢出
示例2: Decimal Carry out Sign bit 2’s Complement -65 - 1 011 1111 -15 - 1 111 0001 --------------------------------------------- -80 1 1 011 0000 1's complement of 0110000 = 1001111 Adding Overflow digit 1 to 1001111 we will get our answer as 1010000. With signed bit we will get - 1 1010000 which is equal to -80 Decimal Carry out Sign bit 2’s Complement -65 - 1 011 1111 -75 - 1 011 0101 -------------------------------------------- -140 1 0 111 0100 十进制执行符号位2的补码 -65 - 1 011 1111 -75 - 1 011 0101 -------------------------------------------- -140 1 0 111 0100 进位到符号位=0 执行符号位=