On 2011-11-21, David Riley <fraveyd...@gmail.com> wrote: > On Nov 21, 2011, at 2:29 PM, Matthew Lenz wrote: > >> Another thing I noticed is that the & and | appear to give the same result >> as adding or subtracting 128 from the ordinal value. I'm assuming that >> isn't coincidence. :) > > It's not, though the difference is important. They're binary ANDs (&) and > ORs (|), so (0x0F | 0x80) = 0x8F, but (0x8F | 0x80) = 0x8F as well, whereas > (0x8F + 0x80) = 0x10F. For manipulating bit values (which is what you're > doing, you should almost never be adding or subtracting, but rather ANDing > and ORing (or XORing, but not nearly as often). > > Just in case you're not familiar, 0x is the prefix for a hexadecimal number. > 0x80 = 128, which is binary 10000000 (i.e. the high bit in a byte).
Like the old joke: There are 10 kinds of people in the world: those who understand binary numbers, and those who don't. -- Grant Edwards grant.b.edwards Yow! ... I don't like FRANK at SINATRA or his CHILDREN. gmail.com -- http://mail.python.org/mailman/listinfo/python-list