32 bit arithmetic in 2.3+

Robin Becker robin at jessikat.fsnet.co.uk
Thu Oct 23 06:10:28 EDT 2003


I'm sure we've had this discussion before, but I'm getting a bunch of
problems related to various algorithms related to 32 bit arithmetic.

The particular error/warnings I'm seeing are

FutureWarning: hex/oct constants > sys.maxint will return positive
values in Python 2.4 and up

FutureWarning: x<<y losing bits or changing sign will return a long in
Python 2.4 and up

related to the use of 0x81020304 and  << respectively.

Can someone tell me

1) What feature makes these warnings errors?

2) What's the right way to do the bit shifting modulo 32 bits?
The same kinds of problems exist in java, but we don't get the warnings
regarding the use of 0x80000000. Do I need to replace all 0x8........
numbers with the L version and ensure all << shifts are masked with
0xffffffffL ? Surely there will be some compatibility issues.
-- 
Robin Becker




More information about the Python-list mailing list