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.