On Thu, 2026-06-11 at 11:29 -0400, Paul Koning via cctalk wrote: > > > > On Jun 11, 2026, at 11:19 AM, r.stricklin via cctalk > > <[email protected]> wrote: > > > > > > > On Jun 11, 2026, at 8:09 AM, Paul Koning via cctalk > > > <[email protected]> wrote: > > > > > > A lot of systems used one's complement through the 1960s. I'm > > > not really sure why. Not just for integers but floating point > > > also (as on the CDC mainframes, and around the same time the > > > Electrologica X8 with a slightly different approach). > > > > My understanding of it is, it makes the logic simpler. But the cost > > is software complexity. > > It doesn't really make the software more complex, just different. > > I can see the logic thing, more or less. You end up with just > complement both for logic and arithmetic operations (it doubles as > negate). The end-around carry seems to complicate things but it > doesn't really because you have carry anyway, so you just end up with > an ALU that looks like a circle. The only additional logic I can see > is that a test for zero requires matching both +0 and -0.
Univac 1108 "test zero" would skip on +0 or -0. "Jump if zero" wolud jump if +0 or -0. It also had a field in instructions to select a part of a word, so if the word is a number and you want a part of it, say one sixth, you need to be careful. The ALU didn't produce negative zero, at least not for addition and subtraction, but the Fortran compiler had the subtract backward for some reason. A = B - C was "load C, subtract B, store negative A," so if B==C you ended up with A = -0. It was common to see a button or sticker "Down With Negative Zero."
