Sign magnitude, one's complement, two's complement

Paul Koning paulkoning at
Sat Aug 22 17:39:49 CDT 2015

> On Aug 22, 2015, at 5:49 PM, Al Kossow <aek at> wrote:
> On 8/22/15 2:23 PM, Sean Conner wrote:
>>   For my own morbid curiosity, and because it came up on another mailing
>> list I'm on [1], what machines commercially avaialble were sign magnitude
>> and one's complement?
> A table of what computers had what numeric representation is one of those things
> that should have been done, but never has. Now that bitsavers has a reasonable collection
> of technical/programming manuals, it might even be possible.
> has some information, but it isn't really in any sort of tabular form.

Some comments on that data.

There are a bunch of one's complement machines.  CDC 6000 series has already been mentioned.  Electrological EL-X1 and EL-X8 are another example.

Both the CDC and the EL-X8 have another interesting property: the floating point format is one's complement, and the mantissa is an integer rather than a fraction.  F.E.K Kruseman Aretz in his paper on the EL-X8 floating point implementation calls this "Grau representation"  (A.A. Grau. On a floating–point representation for use with algorithmic languages. Comm. ACM 5 (1962) 160.).  One's complement in the sense that negating a float was done exactly like negating an int: by complementing it.  And in the EL-X8 the exponent field was a one's complement integer also (unlike CDC where is's an excess-02000 value).

One interesting property of one's complement machines is whether they "prefer +0" or "prefer -0".  If you use an adder, then x+(-x) produces -0 -- the only way to get +0 is as the result of 0+0.  Cray apparently didn't like that, so the CDC 6000 series use a subtractor, so add is done as a-(-b).  If you do that, then  you get "prefer +0" -- x + (-x) is +0 if x is non-zero, and the only way to get a -0 result is to start with a -0 input.  But EL-X8 is "prefer -0".  I don't know about other one's complement machines.

> AFAIK, the PDP-1 was the only DEC 1's compliment machine that shipped.
> I had also heard that 1's compliment never caught on in short word length
> machines because of the difficulty dealing with multi-word arithmetic.

Interesting point.  Not true for the CDC 6000 series PPUs because they had an 18 bit accumulator, so a 24 bit add (which was fairly common) would look like:
	ldm	foo
	adm	bar
	stm	result
	shn	-12		shift carry into lower bits
	adm	foo+1
	adm	bar+1
	stm	result+1

As for sign/magnitude, there's the IBM 1620.  Not binary, but sign/magnitude decimal.


More information about the cctech mailing list