bit manipulation – Bit masking in Python

bit manipulation – Bit masking in Python

Most of your value* constants arent actually bit masks, only value7 and value8 are. Id define another bit mask to extract the lower bits, so I would have three bit masks in total:

mask0 = 0x07
mask1 = 0x40
mask2 = 0x80

Now your function becomes

def parse_byte(byte):
    return byte & mask2, byte & mask1, byte & mask0

I did not convert the results to bool — I dont see why this should be necessary. When checking the returned value with if, it will be implicitly converted to bool anyway.

Also note that


can be simplified to


Given a value such as:

>>> x = 0b10001000

You can find out whether the top bits are set with:

>>> bit8 = bool(x & 0b10000000)
>>> bit7 = bool(x & 0b01000000)

To find which lower bit is set, use a dictionary:

>>> bdict = dict((1<<i, i+1) for i in range(6))
>>> bdict[x & 0b00111111]

bit manipulation – Bit masking in Python

You dont need the other two functions:

def parse_byte(byte):
    value7_set = byte & value7 == value7
    value8_set = byte & value8 == value8
    base_value =  byte & 7
    return value7_set,value8_set,base_value

Leave a Reply

Your email address will not be published. Required fields are marked *