32
votes

i know unsigned,two's complement, ones' complement and sign magnitude, and the difference between these, but what i'm curious about is:

  1. why it's called two's(or ones') complement, so is there a more generalize N's complement?
  2. in which way did these genius deduce such a natural way to represent negative numbers?
3
"The two's complement of a binary number is defined as the value obtained by subtracting the number from a large power of two" - en.wikipedia.org/wiki/Two's_complementBen

3 Answers

40
votes

Two's complement came about when someone realized that 'going negative' by subtracting 1 from 0 and letting the bits rollunder actually made signed arithmetic simpler because no special checks have to be done to check if the number is negative or not. Other solutions give you a discontinuity between -1 and 0. The only oddity with two's complement is that you get one more negative number in your range than you have positive numbers. But, then, other solutions give you strange things like +0 and -0.

According to Wikipedia, the name itself comes from mathematics and is based on ways of making subtraction simpler when you have limited number places. The system is actually a "radix complement" and since binary is base two, this becomes "two's complement". And it turns out that "one's complement" is named for the "diminished radix complement", which is the radix minus one. If you look at this for decimal, the meanings behind the names makes more sense.

Method of Complements (Wikipedia)

10
votes

You can do the same thing in other bases. With decimal, you would have 9's complement, where each digit X is replaced by 9-X, and the 10's complement of a number is the 9's complement plus one. You can then subtract by adding the 10's complement, assuming a fixed number of digits.

An example - in a 4 digit system, given the subtraction

 0846
-0573
=0273

First find the 9's complement of 573, which is 9-0 9-5 9-7 9-3 or 9426
the 10's complement of 573 is 9426+1, or 9427
Now add the 10's complement and throw away anything that carries out of 4 digits

   0846
  +9427      .. 10's complement of 573
= 10273      .. toss the 'overflow' digit
=  0273      .. same answer

Obviously that's a simple example. But the analogy carries. Interestingly the most-negative value in 4-digit 10's complement? 5000!

As for the etymology, I'd speculate that the term 1's complement is a complement in the same sense as a complementary angle from geometry is 90 degrees minus the angle - i.e., it's the part left over when you subtract the given from some standard value. Not sure how "2's" complement makes sense, though.

2
votes

In the decimal numbering system, the radix is ten:

  • radix complement is called as ten's complement
  • diminished radix complement is called as nines' complement

In the binary numbering system, the radix is two:

  • radix complement is called as two's complement
  • diminished radix complement is called as ones' complement

Source: https://en.wikipedia.org/wiki/Method_of_complements