Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP
Posting-Version: version B 2.10.1 (Tek) 9/26/83; site tektronix.UUCP
Path: utzoo!watmath!clyde!burl!we13!ihnp4!alberta!ubc-vision!uw-beaver!tektronix!scottt
From: scottt@tektronix.UUCP (Scott Trappe)
Newsgroups: net.arch
Subject: Re: Choice of ones vs. twos complement
Message-ID: <1737@tektronix.UUCP>
Date: Sat, 4-Feb-84 23:04:45 EST
Article-I.D.: tektroni.1737
Posted: Sat Feb  4 23:04:45 1984
Date-Received: Thu, 9-Feb-84 06:05:46 EST
Organization: Tektronix, Beaverton OR
Lines: 16

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.