[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