【问题标题】:Convert binary to decimal - understaing the logic将二进制转换为十进制 - 理解逻辑
【发布时间】:2017-05-23 15:11:32
【问题描述】:

我需要将二进制转换为十进制,我在这里找到了这段代码,它的工作完美:

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

问题是,我很难理解其背后的逻辑...... 为什么我们将十进制变量乘以 2?为什么十进制变量设置为= 0? 为什么我们每次都是数字?等等(:

谢谢。

【问题讨论】:

  • 如果输入是十进制的(即以 10 为底),则乘以 10。这有帮助吗? ...而且所有这些都可以做得更优雅!

标签: python python-2.7 python-3.x binary


【解决方案1】:

让我以 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。

类似的东西。

1 *2 *2 *2 *2
0 *2 *2 *2
1 *2 *2
0 *2 
1 

【讨论】:

    【解决方案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

    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
    

    瞧!答案是 1337。

    附录: Horner's Method 使用相同的原理来评估某个给定点的多项式。

    【讨论】:

    • 附录:Horner's Method 使用相同的原理在某个给定点计算多项式。
    猜你喜欢
    • 2019-02-27
    • 2012-06-26
    • 1970-01-01
    • 1970-01-01
    • 2013-01-24
    • 2016-08-28
    • 2017-07-15
    相关资源
    最近更新 更多