Adding Binary Numbers
Adding binary numbers is easy and tedious. Computer Engineers need to know how to add binary numbers because the operation is a fundamental feature of all digital computers. Almost everything else a computer can do is built upon binary addition. Computer programmers who work at the hardware/software interface level also need knowledge of binary numbers.
The simplest case is adding two binary digits. Given that a binary digit, or 'bit', can only have the value 0 or 1, there are only four possible combinations of operators. We address the possibility of overflow by introducing a 'carry' digit as part of the result. Therefore, the result has 2 digits.
Operators Result X Y Carry X + Y 0 0 0 0 0 1 0 1 1 0 0 1 1 1 1 0
The overflow, which we refer to as the carry digit, is simply carried forward to the next most significant digit in the operation.
We can write an expression like this:
1 + 1 = 10
and it makes sense as long as we realize that the digits are in base 2.
We could also write the previous expression as
01 + 01 = 10
because the leading zeroes have no impact on the magnitudes of the numbers.
Mastering 2 digit binary addition is important but in the context of computer engineering mastering 3 digits is probably more important. The 2 digit case is simply a special situation in which the third digit is zero. The three digit case has 8 possible combinations and 4 different outcomes. Here is the three digit case with all possible combinations and outcomes:
Operators Result X Y C Carry X + Y + C 0 0 0 0 0 0 0 1 0 1 0 1 0 0 1 0 1 1 1 0 1 0 0 0 1 1 0 1 1 0 1 1 0 1 0 1 1 1 1 1
Where X and Y are the traditional inputs to a digital adder circuit and C is the carry from a previous addition operation. The 3 bit addition operation is a staple of basic digital arithmetic implemented in CPU microcode
Next, let's look at a slightly more complicated example by adding numbers with multiple digits. We use the standard structure for adding base 10 numbers that many of us learned in elementary school. Keep in mind we are still in base 2 for all these examples. The strategy is to start with the rightmost, or least significant) digit and proceed from right to left.
10101 + 01001 11110
The rightmost column (1+ 1) resulted in a carry, which is applied to the next column to the left (see above - now the reason for understand binary addition with 3 operands becomes clear). We can rewrite the expression with the carry row, which illustrates why understanding how to add 3 digits is so important.
00010 (carry digits, generated during the add operation) 10101 + 01001 11110
We see that adding two binary digits is actually an operation that involves the two original operands and the carry from the next most significant digit. The only instance that actually involved only two digits is the rightmost, or least significant, column.
Finally, let's perform a sanity check on the previous operation. Our work appears correct, but reading binary numbers can be problematic. A simple validation procedure is to convert the numbers to a more familiar base and verify the results.
10101 (base 2) = 16 + 4 + 1 = 21 (base 10)
01001 (base 2) = 8 + 1 = 9 (base 10)
21 + 9 = 30
11110 (base 2) = 16 + 8 + 4 + 2 = 30 (base 10)
We see that our base 10 result is the same as our base 2 result.