Convert an Integer to a Binary Representation
Here is a quick way to convert any integer n
into a string that represents the
n
integer in binary notation:
def dec_to_bin(n, bits=32): return ''.join([str((n >> y) & 1) for y in range(bits - 1, -1, -1)])
What's going on in the above code? This can be better explained if we read the
return
line in the dec_to_bin
function backwards. First we create a list of
integers from 31 to 0 in order to iterate through it. This list is created with
the built-in range
function and it uses the number of bits that we passed into
the function, with a default being 32. Next, we iterate through the list with
each number being represented by y
. Then we take the number parameter n
,
which is the number we want to transform to binary, and we shift its bits to the
right by y
places. Then we apply a bitwise and
operation on the result of
that right shift and the literal value of 1. This and
operation tells us if
the bit at location y
is turned on or off. We then make a string out of the
value and append it to the string that we are building to return to the
user. This is a perfect example of Python's conciseness and the power of list
comprehensions.
You can use the code above like so:
>>> print dec_to_bin(255) 00000000000000000000000011111111
Enjoy!
Comments
Comments powered by Disqus