這不是一個數學問題的編程問題。
嘗試一個例子:1100101
decimal = 0
# First digit: 1
decimal = decimal*2 + int(digit) # decimal = 0*2 + 1 = 1
# Second digit: 1
decimal = decimal*2 + int(digit) # decimal = 1*2 + 1 = 3
# Third digit: 0
decimal = decimal*2 + int(digit) # decimal = 3*2 + 0 = 6
# Fourth digit: 0
decimal = decimal*2 + int(digit) # decimal = 6*2 + 0 = 12
# Fifth digit: 1
decimal = decimal*2 + int(digit) # decimal = 12*2 + 1 = 25
# Sixth digit: 0
decimal = decimal*2 + int(digit) # decimal = 25*2 + 0 = 50
# Seventh digit: 1
decimal = decimal*2 + int(digit) # decimal = 50*2 + 1 = 101
瞧!答案是101.
它的工作原理是將每個1
的倍數與數字一樣多。 這樣價值較高的數字實際上得到一個較高的值(1,2,4,8,16,32 ......)
本工程爲十進制系統,以及:
嘗試:1337
decimal = 0
# First digit: 1
decimal = decimal*10 + digit # decimal = 0*10 + 1 = 1
# Second digit: 3
decimal = decimal*10 + digit # decimal = 1*10 + 3 = 13
# Third digit: 3
decimal = decimal*10 + digit # decimal = 13*10 + 3 = 133
# Fourth digit: 7
decimal = decimal*10 + digit # decimal = 133*10 + 7 = 1337
Voilá!答案是1337.
附錄: Horner's Method使用相同的原理來評估某些給定點處的多項式。
如果輸入是十進制的(即以10爲底數),那麼乘法就是10.這樣做有幫助嗎? ......所有這些都可以做得更加優雅! –