bitwise operators - Python NOR Returning Odd Values -


i trying nor of 2 values

a = 0b1010 b = 0b0101  print(~ (a | b)) 

the current output -16, if hand

   1010 or 0101 --------    1111  not 1111 --------     0000 

so, should give value of 0, not -16. why this? how can fix this?

these operations being done 32-bit integers (or 64-bit integers in 64-bit version of python).

    0000 0000 0000 0000 0000 0000 0000 1010  or 0000 0000 0000 0000 0000 0000 0000 0101  ------------------------------------------     0000 0000 0000 0000 0000 0000 0000 1111  not 0000 0000 0000 0000 0000 0000 0000 1111 -------------------------------------------     1111 1111 1111 1111 1111 1111 1111 0000 

which, taken signed integer, two's complement representation of -16, because have add 16 reach 0 (and carry).

to fix it, explicitly xor 0b1111 instead of using ~.

print((a | b) ^ 0b1111) 

Comments

Popular posts from this blog

php - Passing multiple values in a url using checkbox -

compilation - PHP install fails on Ubuntu 14 (make: *** [sapi/cli/php] Error 1) PHP 5.6.20 -

sql - Postgresql tables exists, but getting "relation does not exist" when querying -