Pooja Gupta
Pooja Gupta

Reputation: 357

Convert an Integer into 32bit Binary Python

I am trying to make a program that converts a given integer(limited by the value 32 bit int can hold) into 32 bit binary number. For example 1 should return (000..31times)1. I have been searching the documents and everything but haven't been able to find some concrete way. I got it working where number of bits are according to the number size but in String. Can anybody tell a more efficient way to go about this?

Upvotes: 12

Views: 67000

Answers (5)

Daniel Aviv
Daniel Aviv

Reputation: 45

x = 1234
print(f"{x:032b}")  # 00000000000000000000010011010010

Upvotes: 1

B S Mahesh Kumar
B S Mahesh Kumar

Reputation: 61

Lets say

a = 4
print(bin(a))  # 0b101

For the output you may append 0s from LSB to till 101 to get the 32bit address for the integer - 4. If you don't want 0b you may slice it

print(bin(a)[-3:])  # 101

Upvotes: 0

Abhinav Telukunta
Abhinav Telukunta

Reputation: 1

Say for example the number you want to convert into 32 bit binary is 4. So, num=4. Here is the code that does this: "s" is the empty string initially.

for i in range(31,-1,-1):
    cur=(num>>i) & 1 #(right shift operation on num and i and bitwise AND with 1)
    s+=str(cur)
print(s)#s contains 32 bit binary representation of 4(00000000000000000000000000000100)

00000000000000000000000000000100

Upvotes: 0

Andy Wong
Andy Wong

Reputation: 4404

You can just left or right shift integer and convert it to string for display if you need.

>>> 1<<1
2
>>> "{:032b}".format(2)
'00000000000000000000000000000010'
>>>

or if you just need a binary you can consider bin

>>> bin(4)
'0b100'

Upvotes: 7

mhawke
mhawke

Reputation: 87054

'{:032b}'.format(n) where n is an integer. If the binary representation is greater than 32 digits it will expand as necessary:

>>> '{:032b}'.format(100)
'00000000000000000000000001100100'
>>> '{:032b}'.format(8589934591)
'111111111111111111111111111111111'
>>> '{:032b}'.format(8589934591 + 1)
'1000000000000000000000000000000000'    # N.B. this is 33 digits long

Upvotes: 31

Related Questions