Two Zeros

Allan Bromley (The Programmer's Interface, IEEE Annals, Oct-Dec 2000, p.12r, Ascertaining..) writes:

There as thus two zero values, ±0, that can be represented separately and will produce different results when the sign is tested. There is no clear evidence that the microprograms attempted systematically to map -0 to +0 although multiplication does so by default.

According to Tim Robinson, values were always stored as +0.


If the run-up lever is used in conditional branching and loop repeats, it is important to know when it is set.

The run-up lever is activated if the sign of the first operand and the result differ. If there is no systematic mapping from -0 to +0, the run-up lever is hard to predict.

If two equal negative numbers were subtracted, was the result a positive zero, and the run-up lever set due to the rule that the signs differ? Or was the run-up lever clear, and a negative zero produced?

Or was a (positve) zero produced, and the rule that the run-up lever set if the signs differ overridden, once the result is zero?

Bromley (cit. p11r, Ascerting if a variable is = 0) writes that a conditional jump or loop was done by subtracting a number from the store in the mill (from zero) and evaluating the run-up lever. If the number is >0, the lever will be set, and the skip count from the operation card honored. If the lever is not set, because the number is ≤ 0, the skip count is discarded.

Because this seems to be the only conditional operation, it is clear that in contrast to today's architectures, there is no conditional that can be used after any arithmetic, and the question of how the run-up lever is set, is no longer vital.

Log In