History Of The Computer - Negative Numbers For Subtraction
About the Author:
To form a negative number, we simply invert the positive number, in binary, and add 1. For example
0000 0110 - (6) inverted becomes
1111 1001 - now add 1 to get
1111 1010 - (-6)
This is how a computer records -6. The Most Significant Bit - in this case bit 7 or bit value 128 decimal is used as the Sign Bit. If this bit is a zero, the number is positive, if it is a one, the number is negative. This notation is known as 'Twos Complement'.
(There is also 'Ones Complement', without the added 1, which was used in some proprietary systems, but it required more complicated logic to get around problems like having + and - zero. It is not necessary to go into the detail of this notation for an understanding of the logic.)
The Sign bit uses one of the bit positions, meaning that our range of numbers is reduced. For example 0111 1111 is the highest positive 8-bit number (127 decimal). The next number, 128 decimal would be 1000 0000, however the bit value 128 in bit 7 cannot be used as it is now the sign bit.
SUBTRACTION
Now we can have a negative number it will be easy to subtract. We can use an adder, which we already have. This is possible because 9-3 is the same as 9+(-3). For instance 9-3 decimal is 00001001-00000011 in 8 bit binary. We take the 9 and add it to the twos complement of 3, thus we can use our adder with a bit of extra logic to invert the negative number and add 1 to it. The twos complement of 3 (decimal) or in binary
of 0000 0011
is 1111 1100
add 1 + 0001
is 1111 1101
Now add to the 9 (decimal) using an 8 bit adder:-
7654 3210 - bit #
0000 1001 - (9)
1111 1101 - (-3)
Remember your binary addition?
Least significant bit (bit 0), 1+1 is 0 and a carry.
Next bit (bit 1) is 0+0+carry = 1 no carry.
Next bit (bit 2) is 1+0 = 1 no carry.
Next bit (bit 3) is 1+1 = 0 and a carry.
Next bit (bit 4) is 1+0+carry = 0 and a carry.
Next 3 bits (5,6,7) are the same as 4 - 1+0+carry = 0. The last carry falls off the end.*
So we get:-
0000 0110 (6 Decimal - 9-3=6)
Which, fortunately, if you followed it, is the right answer! Are these computers smart or what? This system works with negative results as well, for instance try 3-9. You should end up with the
twos complement of 6. This is not a compulsory exercise!
* The carry from the most significant bit, in this example bit 7, but could be bit 31 or 63 in some computers, is ignored in this case. However it is used in some functions, for instance a circular bit shift, which we will look at in a later article.
Tony is an experienced computer engineer. He is currently webmaster and contributor to http://www.what-why-wisdom.com . A set of diagrams accompanying these articles may be seen at http://www.what-why-wisdom.com/history-of-the-computer-0.html . RSS feed also available - use http://www.what-why-wisdom.com/Educational.xml .