[Python-Dev] Drop support for ones' complement machines?
dickinsm at gmail.com
Tue Dec 1 22:58:47 CET 2009
> I'm not sure how to decide which particular consequences
> should be listed, but those for &, |, ^ and ~ could certainly
> be included.
> It should give the CPython contributors an indication what kind
> of code would be ok, and which would not. Perhaps it should include
> both a black list and a white list: some may assume that two's
> complement already provides guarantees on left-shift, when it
> actually does not (**).
Okay. I'll have to think about this a bit; I'll try to come up with
some suitable wording.
> (*) I wonder why you are not talking about padding bits
Good point. Mostly because I haven't recently encountered any
code where it matters, I suppose. But there's certainly CPython
source that assumes no padding bits: long_hash in longobject.c
is one example that comes to mind: it assumes that the number
of value bits in an unsigned long is 8*SIZEOF_LONG.
> (**) I also wonder why C fails to make left-shift
> implementation-defined, perhaps with an even stronger binding
> to the options for the integer representation.
I wonder too. The C rationale document doesn't
have anything to say on this subject.
More information about the Python-Dev