Reputation: 223
I'm getting started in Python programming. I'm reading a basic tutorial, but this point is not very clear to me. I would appreciate any help you can give me.
Upvotes: 2
Views: 1071
Reputation: 11366
~3 means "change all the 1s to 0s and 0s to 1s", so if 3 in binary is 0000000000000011, then ~3 is 1111111111111100. since the first bit of ~3 is a 1, its a negative number. to find out which negative number, in 2s comliment, you invert all bits and add 1, so inverted we are back to 3, then added 1 we get 4.
Upvotes: 4
Reputation: 308391
It's not just Python, it's the integer numeric representation of almost all modern computers: two's complement. By the definition of two's complement, you get a negative number by complementing the positive number and adding one. In your example, you complemented with ~
but did not add one, so you got the negative of your number minus one.
Upvotes: 0
Reputation: 4746
It's the invert operator, and returns the bitwise inverse of the number you give it.
Upvotes: 0
Reputation: 346377
Because signed integers are usually stored using two's complement, which means that the bitwise inverse of an integer is equal to its algebraic inverse minus one.
Upvotes: 4
Reputation: 22721
~3 means 'invert' 3. With two's complement on natural number datatypes, this becomes -4, as the binary representation is inverted (all bits are flipped).
Upvotes: 9