Binary number to decimal number | Sololearn: Learn to code for FREE!


Binary number to decimal number

I have seen a code, which I am unable to understand the logic. Anyone please help! This is the code: d=0 for s in "00010000": d = d*2 + int(s) print(d)

1/24/2020 3:55:08 AM


7 Answers

New Answer


Prithvi This is an example of 'Explicit is better than implicit' The code you showed is clever, but not easilly understood by humans Normally you start at the position of the Least Significant Bit, wich is on the right. You then multiply the value with the base to the power of the position and move through from right to left and add all together. The position of the bit is explicitly named By starting on the left you get the same effect but the position is not explicitly named. For 010000 from right to left you have a 1 at position 4. So 1 x 2^4 and by following your prog you get. (0+1) x 2 x 2 x 2 x 2 which is equal to 1 x 2^4 So it is more difficult for a user to understand what is happening.


Nope... from the right side and it is a bit tricky. Do it in decimal with 321 D=0 D = 0×10 +3 =3 D = 3×10+2 =32 D= 32×10 + 1= 321 Check that the digit at 3rd place from right is multiplied 3 times by 10 And so on.


Ha, nice concise way to do that. :) I have found this article which explains the logic of binary system and how you convert it. After you've read it, this loop should have become understandable.


print(int('10000',2)) # 16


Thank you for your time. I understand the concept of conversion, but I am not understanding the logic of the code. Does that code take s in "00010000" from last digit automatically. And if so, what is "int(s)" and assumed that d=0 initially.


Louis Thank you. You have explained a lot, I am still not understanding. I know I have asked a lot, but why is it (0+1)×2×2×2×2? If I had understood this correctly, d=2 by default until the bit reaches '1' and keep on adding the result.


Prithvi Study this code and see if you can figure it out.