[Tutor] Defining "bit" type

Ricardo Aráoz ricaraoz at gmail.com
Tue Jan 27 14:26:06 CET 2009


> "Vicent" <vginer at gmail.com> wrote
>
>> Anyway, I am working with Python 2.5.4, and I am interested in
>> defining a
>> new type called "bit" (if possible), which represents a number that
>> can only
>> take values 0 or 1 —that's what we would call a "binary variable", in a
>> Mathematical Programming context.
The python manual is usually a good thing to read :



    3.4.1 Bit-string Operations on Integer Types

Plain and long integer types support additional operations that make
sense only for bit-strings. Negative numbers are treated as their 2's
complement value (for long integers, this assumes a sufficiently large
number of bits that no overflow occurs during the operation).

The priorities of the binary bit-wise operations are all lower than the
numeric operations and higher than the comparisons; the unary operation
"~" has the same priority as the other unary numeric operations ("+" and
"-").

This table lists the bit-string operations sorted in ascending priority
(operations in the same box have the same priority):

Operation 	Result 	Notes
|x | y| 	bitwise /or/ of x and y 	
|x ^ y| 	bitwise /exclusive or/ of x and y 	
|x & y| 	bitwise /and/ of x and y 	
|x << n| 	x shifted left by n bits 	(1), (2)
|x >> n| 	x shifted right by n bits 	(1), (3)
|~x| 	the bits of x inverted 	

Notes:

*(1)*
    Negative shift counts are illegal and cause a ValueError to be raised. 
*(2)*
    A left shift by n bits is equivalent to multiplication by |pow(2,
    n)| without overflow check. 
*(3)*
    A right shift by n bits is equivalent to division by |pow(2, n)|
    without overflow check. 


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/tutor/attachments/20090127/1a46cecb/attachment.htm>


More information about the Tutor mailing list