[Sorry for taking so long to reply...]
Kalle Olavi Niemitalo <kon@iki.fi> wrote:
+---------------
| rpw3@rigden.engr.sgi.com (Rob Warnock) writes:
| > As a simple demonstration of this, try to find the "multiplicative
| > inverse" of 3 (modulo 2^n)... For n==8, 16, 32, and 64, at least...
| > and thus unsigned integer arithmetic in C isn't a field.
...
| 171 * 3 == 513 == 1 (modulo 2^8)
| 43691 * 3 == 131073 == 1 (modulo 2^16)
| 2863311531 * 3 == 8589934593 == 1 (modulo 2^32)
| 12297829382473034411 * 3 == 36893488147419103233 == 1 (modulo 2^64)
+---------------
Yes, you're certainly right. I picked a bad example. 3 has an inverse.
But 2 doesn't. In fact (if I'm not jumping to conclusions again), *no*
even number has an inverse in the ring of integer multiplication mod 2^n,
so integer {+,*} mod 2^n *still* isn't a field.
-Rob
-----
Rob Warnock, 31-2-510 rpw3@sgi.com
Network Engineering http://reality.sgi.com/rpw3/
Silicon Graphics, Inc. Phone: 650-933-1673
1600 Amphitheatre Pkwy. PP-ASEL-IA
Mountain View, CA 94043