the case for two's complement

Ian Piumarta piumarta at prof.inria.fr
Sat Apr 25 11:00:13 UTC 1998


I thought some of you might enjoy this.  (I think at least Eliot probably
will. ;)

Ian
--------
Beeler M., Gosper, R.W. and Schroeppel, R., "HAKMEM", MIT AI Memo 239, Feb. 29, 1972.

ITEM 154 (Gosper):

The myth that any given programming language is machine independent is
easily exploded by computing the sum of powers of 2.

 -  If the result loops with period = 1 with sign +, you are on a
    sign-magnitude machine.

 -  If the result loops with period = 1 at -1, you are on a
    twos-complement machine.

 -  If the result loops with period > 1, including the beginning, you are
    on a ones-complement machine.

 -  If the result loops with period > 1, not including the beginning,
    your machine isn't binary -- the pattern should tell you the base.

 -  If you run out of memory, you are on a string or Bignum system.

 -  If arithmetic overflow is a fatal error, some fascist pig with a
    read-only mind is trying to enforce machine independence. But the
    very ability to trap overflow is machine dependent.

By this strategy, consider the universe, or, more precisely, algebra:

let X = the sum of many powers of two = ...111111
now add X to itself; X + X = ...111110
thus, 2X = X - 1 so X = -1
therefore algebra is run on a machine (the universe) which is twos-complement.





More information about the Squeak-dev mailing list