Two's Complement二进制加法

时间:2015-02-11 18:34:37

标签: binary overflow addition twos-complement underflow

我有一个程序可以添加2个二进制补码二进制数并吐出输出。它们是从文件中读取的,因为第一个二进制数是二进制补码。第二个二进制数是偏置表示法。要将形式偏向两个补码,我们将最左边的位翻转。然后我们添加两个二进制数并将输出提供给文件。我遇到的麻烦是理解输出。这是输出,其中第一个二进制数是二进制补码,第二个二进制数是偏置表示法。

   01000000 <- 2's complement         64
+  11000000 <- biased notation        64
-----------------------------------------------
   10000000 <- 2's complement   Overflow

   01111111 <- 2's complement        127
+  00000000 <- biased notation      -128
-----------------------------------------------
   11111111 <- 2's complement         -1

   00000011 <- 2's complement          3
+  10000111 <- biased notation         7
-----------------------------------------------
   00000110 <- 2's complement          6

   00001111 <- 2's complement         15
+  10000111 <- biased notation         7
-----------------------------------------------
   00010010 <- 2's complement         18

   10000000 <- 2's complement       -128
+  11111111 <- biased notation       127
-----------------------------------------------
   11111111 <- 2's complement         -1

   11110000 <- 2's complement        -16
+  10001000 <- biased notation         8
-----------------------------------------------
   11111000 <- 2's complement         -8

   10000001 <- 2's complement       -127
+  00000001 <- biased notation      -127
-----------------------------------------------
   00000010 <- 2's complement   Underflow

   01111111 <- 2's complement        127
+  00000000 <- biased notation      -128
-----------------------------------------------
   11111111 <- 2's complement         -1

   01110101 <- 2's complement        117
+  11010001 <- biased notation        81
-----------------------------------------------
   01000110 <- 2's complement         70

   00000000 <- 2's complement          0
+  10000000 <- biased notation         0
-----------------------------------------------
   00000000 <- 2's complement          0

   00001111 <- 2's complement         15
+  11110000 <- biased notation       112
-----------------------------------------------
   01111111 <- 2's complement        127

   00001111 <- 2's complement         15
+  10000001 <- biased notation         1
-----------------------------------------------
   00010000 <- 2's complement         16

   00000111 <- 2's complement          7
+  11110000 <- biased notation       112
-----------------------------------------------
   01110111 <- 2's complement        119

   11111111 <- 2's complement         -1
+  01111111 <- biased notation        -1
-----------------------------------------------
   10101010 <- 2's complement        -86

   00000000 <- 2's complement          0
+  10000000 <- biased notation         0
-----------------------------------------------
   00000000 <- 2's complement          0

   11111111 <- 2's complement         -1
+  11111111 <- biased notation       127
-----------------------------------------------
   00101010 <- 2's complement         42

鉴于第三个例子说3 + 7 = 6。 这甚至是正确的吗?这似乎不对,但其他例子是正确的。像-16 + 8 = -8。

所以我的问题是......这个文件的输出是否正确?

1 个答案:

答案 0 :(得分:0)

似乎每当你连续3次携带时,它会下降1.与下一次相同,15 + 7.它没有正确地进行携带。

  11  <- carry
 0011 = 3
+0111 = 7
 1010 = 10