Why does ~True result in -2?
In Python console:
Why? Can someone explain this particular case to me in binary?
int(True)? It is
-2 in Two's complement1
1 Flip all the bits, add 1 to the resulting number and interpret the result as a binary representation of the magnitude and add a negative sign (since the number begins with 1):
11111110 → 00000001 → 00000010 ↑ ↑ Flip Add 1
Which is 2, but the sign is negative since the MSB is 1.
bool, you'll find that it's numeric in nature - It has two values,
False, and they are just "customized" versions of the integers 1 and 0 that only print themselves differently. They are subclasses of the integer type
So they behave exactly as 1 and 0, except that
repr to display them differently.
>>> type(True) <class 'bool'> >>> isinstance(True, int) True >>> True == 1 True >>> True is 1 # they're still different objects False