> "Vicent" <vgi...@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. 


_______________________________________________
Tutor maillist  -  Tutor@python.org
http://mail.python.org/mailman/listinfo/tutor

Reply via email to