Extract LSB bit from a Byte in python

26,016

Solution 1

Is your "byte" an int? If so, just take bitwise AND (&) with 1 (or, if you want to be more explicit, the binary literal 0b1) to get the least significant bit.

>>> x = 14
>>> x & 1
0
>>> x = 15
>>> x & 1
1

Is your "byte" a bytes object? If so, just index into it and take bitwise AND.

>>> y = bytes([14, 15])
>>> y[0] & 1
0
>>> y[1] & 1
1

Solution 2

Simplest and probably fastest:

least_significant_bit_of_x = x & -x

You can find more tricks here: https://www.informit.com/articles/article.aspx?p=1959565

Although the go-to reference for bitwise "black magic" is Knuth's "The Art of Computer Programming, vol. 1".

Share:
26,016
3lokh
Author by

3lokh

Updated on March 22, 2020

Comments

  • 3lokh
    3lokh over 4 years

    I have a byte in variable 'DATA'. I want to extract the LSB bit out of it and print it. I'm very new to python, I found many articles with complex bitwise addition logic and all which was very tough to understand. I'm looking for a simple logic like we do with the strings eg DATA[7:1] Please help me out...

  • senshin
    senshin over 10 years
    @Nikhil When you read a file in binary mode (rb), you get a bytes object from file.read(). To find the least significant bit, take bitwise AND with 0b1. Note that you will need to figure out which parts of the file are header and which parts are actual image data. It may help to use a library like PIL.