Introduction
To be able to perform arithmetic, you must first be familiar with numbers. Therefore, although we give a few helping examples, this article is not about binary numerals.
The main interactive circuit at the top of this page is an arithmetic circuit capable of performing both addition and subtraction on any two 4-bit binary numbers. The circuit has a Mode switch that allows you to choose between adding (M=0) and subtracting (M=1). To understand why this circuit works, lets review binary addition and binary subtraction. We use 4-bit numbers in the examples because the main interactive circuit is a 4-bit adder–subtractor.
Binary addition is certainly easier than decimal addition. You just add 0s and 1s. For example to add the numbers five (0101) and six (0110) together, we just add the respective bits:
Decimal numerals |
Binary numerals |
6 +5 |
0110 +0101 |
11 |
1011 |
For binary subtraction, we use 2s complement to keep things simple. For instance, to perform the operation six (0110) minus five (0101), we first obtain the 2s complement of five and then add it to six:
Step one: Getting the 2s complement of 5
- Flip every bit in five to get 1010.
- Add one to 1010 to get: 1010 + 1 = 1011.
Step two: Adding the 2s complement of 5 to 6:
-
Decimal numerals |
Binary numerals |
6 +(-5) |
0110 +1011 |
1 |
10001. |
We show the carry bit in green because normally it does not count towards the result.
Design
Now that we have reviewed our binary addition and subtraction skills, lets look at what the circuit is doing. If you fix your gaze on the full–adders while you play around with the input switches, you will see that no matter what operation you think you are doing, the full–adders job never changes: the full–adder adds up the signals that appear at its inputs. This is surely not a strange behavior. In reality, whether you are doing binary addition or binary subtraction, the last thing you always do is add the numbers (e.g. “Step two” above tells you to add).
So how does the circuit know whether you want to add or subtract? The XOR gates and the Mode switch, of course! The circuit assumes that your subtraction will always be in the form A — B. So because one input of each XOR gate is attached to the Mode switch while the other input of each XOR gate is attached to a B bit, when the Mode switch is equal to 1, the output of the XOR is the complement of B. This is because B
0 = B and B
1 = B. In addition to going into the XOR gates, the Mode signal also goes into the carry input of the least significant full–adder (C0), which basically adds a 1 to B when the Mode switch is ON. Hence, when the Mode switch is equal to 1, the XOR
gates and the Mode switch take the 2s complement of B and pass it to the full–adders.
To recap, here is a brief summary of how the circuit works: When M = 0, the full–adders see A + B because B
0 = B. However, when M = 1, the full–adders see A + B + 1 because B
1 = B and C0 = M. And, yes, (B + 1) is the 2s complement of B.
Although our presentation focuses on a 4–bit adder–subtractor, the circuit can be extended to any arbitrary size by simply incorporating more XOR gates and full–adders.
Using the Adder–Subtractor
The following four tables show you how to use the adder-subtractor to perform different type of arithmetic operations. At the time of publication no similar breakdown exists in the literature. Hence, we advice that you pay attention to the distinctions.
Operation |
Note |
calculation |
Unsigned addition |
Ignore the V-bit |
| A3 | A2 | A1 | A0 |
| B3 | B2 | B1 | B0 |
|
C | S3 | S2 | S1 | S0 |
|
Operation |
Note |
calculation |
Signed addition |
- The addends A & B and the sum S are all 2s complements.
- Ignore C & V
|
| A3 | A2 | A1 | A0 |
| B3 | B2 | B1 | B0 |
|
| S3 | S2 | S1 | S0 |
|
Operation |
Note |
calculation |
Subtraction without overflow (V=0) |
- The minuend A, the subtrahend B, and the difference S are all 2s complements.
- Ignore C
|
| A3 | A2 | A1 | A0 |
| B3 | B2 | B1 | B0 |
|
| S3 | S2 | S1 | S0 |
|
Operation |
Note |
calculation |
Subtraction with overflow (V=1) |
The minuend A, the subtrahend B, and the difference S are all 2s complements. |
| A3 | A2 | A1 | A0 |
| B3 | B2 | B1 | B0 |
|
C | S3 | S2 | S1 | S0 |
|
2s Complement Table
Binary |
2s complement |
|
Binary |
2s complement |
01111 |
+15 |
10000 |
-16 |
01110 |
+14 |
10001 |
-15 |
01101 |
+13 |
10010 |
-14 |
01100 |
+12 |
10011 |
-13 |
01011 |
+11 |
10100 |
-12 |
01010 |
+10 |
10101 |
-11 |
01001 |
+9 |
10110 |
-10 |
01000 |
+8 |
10111 |
-9 |
00111 |
+7 |
11000 |
-8 |
00110 |
+6 |
11001 |
-7 |
00101 |
+5 |
11010 |
-6 |
00100 |
+4 |
11011 |
-5 |
00011 |
+3 |
11100 |
-4 |
00010 |
+2 |
11101 |
-3 |
00001 |
+1 |
11110 |
-2 |
00000 |
+0 |
11111 |
-1 |