Here is my code:
noTest=int(input())
reverse=[]
nums=[]
for i in range(noTest):
nums.append(int(input()))
for num in nums:
binary=bin(num)
binNum=binary[2:]
rev=binNum[::-1]
rev=binary[:2]+rev+'0'*(32-len(rev))
#print int(rev,2)
reverse.append(int(rev,2))
for r in reverse:
print(r)
Input:
The first line of input consists number of the test cases. Each test case
contains a single 32 bit integer.
Output:
Print the reverse of integer.
Input:00000000000000000000000000000001 =1
Output:10000000000000000000000000000000 =わ2147483648
2 Answers 2
To expand on Caridorc's answer, you can merge bin
and zfill
when using str.format
. Which gives a much cleaner read IMO:
int('{:032b}'.format(num)[::-1], 2)
Alternately you can use format
, which would be:
int(format(num, '032b')[::-1], 2)
-
1\$\begingroup\$
int(format(num, '032b')[::-1], 2)
\$\endgroup\$Veedrac– Veedrac2018年01月04日 17:29:12 +00:00Commented Jan 4, 2018 at 17:29
You can avoid building a list of results to print them after, you can just print them as you calculate them.
Also you assign a lot of variables and:
binNum=binary[2:]
is not explicit in removing the '0b' that Python prefixes, better is
.replace('0b','')
Also the padding with 0 logic that you write is already implemented in the zfill
function, so you can avoid re-writing it yourself.
Finally, you should write a function to read the input to separate concerns and maybe reuse it in a similar problem.
Here are all my suggestions implemented.
def read_numbers(n):
return [int(input()) for _ in range(n)]
for i in read_numbers( int(input()) ):
binary_padded = bin(i).replace('0b','').zfill(32)
print( int( binary_padded[::-1], 2) )
-
3\$\begingroup\$
replace
is worse since it does a search and traverses the whole string. \$\endgroup\$Veedrac– Veedrac2018年01月04日 17:30:23 +00:00Commented Jan 4, 2018 at 17:30 -
\$\begingroup\$ @Veedrac I think you are right, probably in this case [:2] should be used and maybe just adding a comment to explain the removal of '0b' \$\endgroup\$Caridorc– Caridorc2018年01月05日 14:06:06 +00:00Commented Jan 5, 2018 at 14:06
Explore related questions
See similar questions with these tags.
I have...
to what purpose? Know bit hacks? \$\endgroup\$