Complements Essay, Research Paper
COMPLEMENTS
INTRODUCTION:
Basic binary digits are described as UNSIGNED values. This is because if you
look at the string of bits (zeros and ones) there is no indicator whether or
not this value is positive or negative. You must use an additional symbol “+”
or “-” to indicate the sign of the number. There are some types of number
systems where you can determine the sign of number without using an addition
symbol. You can tell whether it is positive or negative by looking at the
bits. Such representations are referred as SIGNED representations because you
can determine the sign of the number from the number itself.
In signed representations you the MOST SIGNIFICANT BIT (MSB) indicates the sign
of the number. The MSB is the left most bit. If the MSB is equal to 0 then the
number is positive. If the MSB is equal to 1 then the number is negative.
e.g. 001111101 is positive
^
|
The MSB is equal to zero
e.g. 101101010 is negative
^
|
The MSB is equal to one
At this point you might ask yourself why bother with signed representations –
we perform decimal based subtractions in every day life using base ten
unsigned representations and we’re all happy and well adjusted people. The
reason why it’s important to learn about signed representations is because
when the computer tries to subtract one number Y from another number X, it
doesn’t do so in the same way that we do: i.e X – Y
Instead it uses a technique known as negating and adding:
i.e. X + (-Y) which is still equal to X – Y
CONVERSIONS (UNSIGNED BINARY TO SIGNED VALUES)
This is summary of what you must do to convert an unsigned binary value to a
complemented value.
1’s complement 2’s complement
Binary value >= 0 No change No change
Binary value < 0 Swap the bits Swap the bits and add
one to the result.
Carry out? Add it back in Ignore it
Swapping the bits means we substitue 1’s for 0’s and 0’s for 1’s.
DOING SUBTRACTIONS VIA COMPLEMENTS (ala Negate and Add)
How do we do this with the negate and add? First convert these numbers to
binary:
Base 10 Base 2 (must be signed!)
eg 4 0100
-6 -0110* <
= -2
*I added one extra zero to the left hand side as an extra placeholder. When
I convert these numbers to signed values, this digit it will represent the
sign of the number. We cannot do a mathematical operation in the computer on
minus six in this form. It must be converted to a SIGNED VALUE. You can
use either a 2’s complement representation or a 1’s complement representation.
But make sure that you keep straight which one you use (don’t switch halfway
thru a computation between a 1’s and 2’s complement representation or vice
versa).
e.g.
Number to convert 1’s complement 2’s complement
(flip bits)* (flip bits + 1)*
-0110 1001 1010
Add the complemented values with to the original number above (negate and
add remember).
1’s complement way 2’s complement way
Number from above (4) 0100 0100
The complemented number 1001 1010
—- —-
Summed Result 1101 1110
Convert to this value
from a complemented
form to regular binary -0010 -0010
Convert from binary -2 -2
to decimal
Notice that there is no carry out so we con’t have to worry about addding in
the overflow or ignoring it.
*But this conversion only occurs for negative numbers. Look again at the
circles that I drew in lab, a positive number is a positive number number
matter what binary representation that you use. That means that if the
MSB is equal to a zero, when we get to the second last step, when we try
to find the equivilent unsigned binary value no conversions are necessary.
A positive unsigned digit will look the same in signed (1’s and 2’s
complement form).
Here’s another example on complements that does have an overflow bit (carry
out):
Done using 1’s complement:
Base 10 Base 2
10 1010
-3 -0011
Now here’s comes the fun stage, molding the unsigned base two numbers into
signed one’s and two’s complement representations.
Base 2 Add zero to left* Convert to 1’s complement
1010 01010 01010**
0011 00011 11100
Add the numbers 10 + (-3):
01010
+11100
——
Overflow=> 1 00110
Goes here -> +1
——
000111