[net.arch] Choice of ones vs. twos complement

scottt@tektronix.UUCP (Scott Trappe) (02/05/84)

The CDC 6600 used one's complement because the circuitry to implement
it for a 60-bit adder was simpler than for two's complement.  Subtraction
came almost for free: latches on the input of the add unit provided both
true and complement signals, so for a subtract you just used the complement
signals for one operand.

Also, to avoid generating zeros, the adder propagated borrows rather than
carries.  The only way a negative zero could be generated as a result was
if both operands were -0.  So as long as you started with +0, you would
never get a -0.

I never had any problems with one's complement on the 6600 except in doing
logical tests, because the zero test instructions counted all ones (-0) as
zero.  This would sometimes complicate an otherwise easy test.  I would have
been happy if they had just defined +0 as being the only "valid" zero, and only
tested for it in the ZR and NZ instructions.