将二进制转换为十进制以理解逻辑

2024-09-30 03:24:37 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要把二进制转换成十进制,我在这里找到了这段代码,它运行得很好:

binary_Op1 = raw_input('enter a number: ')
decimal = 0
for digit in binary_Op1:
    decimal = decimal*2 + int(digit)
print decimal

问题是,我有点难以理解背后的逻辑。。。 为什么我们要把十进制变量乘以2?为什么十进制变量设置为=0? 为什么我们每次都用数字?以此类推(:

谢谢。在


Tags: 代码innumberforinputraw二进制逻辑
2条回答

与其说是编程问题,不如说是数学问题。在

请尝试一个示例: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

^{pr2}$

哇哦!答案是1337。在

附录: Horner's Method使用相同的原理来计算给定点处的多项式。在

让我以10101作为输入示例来解释这一点。在

1 should be multiplied by 2^4
0 should be multiplied by 2^3
1 should be multiplied by 2^2
0 should be multiplied by 2^1
1 should be multiplied by 2^0
and Add everything.

程序每次遇到一个数字就乘以2。所以基本上,第一个1乘以4,前0乘以3,直到最后一个1。在

像这样。在

^{pr2}$

相关问题 更多 >

    热门问题