简体   繁体   English

Two's Complement二进制加法

[英]Two's Complement binary addition

I have a program that adds 2 two's complement binary numbers and spits out the output. 我有一个程序,它添加2个二进制补码二进制数并吐出输出。 They are read from a file as the first binary number being in two's complement. 它们是从文件中读取的,因为第一个二进制数是二进制补码。 The second binary number being in biased notation. 第二个二进制数是偏置表示法。 To change form biased to two's complement we flip the left most bit. 要将形式偏向两个补码,我们将最左边的位翻转。 We then add the two binary numbers and give the output to the file. 然后我们添加两个二进制数并将输出提供给文件。 What I am having trouble with is understanding the output. 我遇到的麻烦是理解输出。 Here is the output where the first binary number is in two's complement and the second in biased notation. 这是输出,其中第一个二进制数是二进制补码,第二个二进制数是偏置表示法。

   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

Given the third example says 3 + 7 = 6. Is this even correct? 鉴于第三个例子说3 + 7 = 6.这是否正确? It doesn't seem right, but other examples are correct. 这似乎不对,但其他例子是正确的。 Like -16 + 8 = -8. 像-16 + 8 = -8。

So my question is... Is the output of this file correct? 所以我的问题是......这个文件的输出是否正确?

It seems like whenever you have 3 carries in a row, it drops a 1. Same with the next one, 15 + 7. It isn't doing the carry correctly. 似乎每当你有3个连续进行时,它会下降1.与下一个相同,15 + 7.它没有正确执行进位。

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM