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 4bit 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, let’s review binary addition and binary subtraction. We use 4bit numbers in the examples because the main interactive circuit is a 4bit 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 2’s complement to keep things simple. For instance, to perform the operation six (0110) minus five (0101), we first obtain the 2’s complement of five and then add it to six:
Step one: Getting the 2’s complement of 5
 Flip every bit in five to get 1010.
 Add one to 1010 to get: 1010 + 1 = 1011.
Step two: Adding the 2’s 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, let’s 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–adder’s 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 (C_{0}), 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 2’s 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 C_{0} = M. And, yes, (B’ + 1) is the 2’s 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 addersubtractor 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 Vbit 
 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 2’s 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 2’s 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 2’s complements. 
 A3  A2  A1  A0 
 B3  B2  B1  B0 

C  S3  S2  S1  S0 

2’s Complement Table
Binary 
2’s complement 

Binary 
2’s 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 