2024-09-30 03:24:37 发布
网友
我需要把二进制转换成十进制,我在这里找到了这段代码,它运行得很好:
binary_Op1 = raw_input('enter a number: ') decimal = 0 for digit in binary_Op1: decimal = decimal*2 + int(digit) print decimal
问题是,我有点难以理解背后的逻辑。。。 为什么我们要把十进制变量乘以2?为什么十进制变量设置为=0? 为什么我们每次都用数字?以此类推(:
谢谢。在
与其说是编程问题,不如说是数学问题。在
请尝试一个示例:1100101
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…)
1
这同样适用于十进制:
尝试:1337
1337
哇哦!答案是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。在
像这样。在
与其说是编程问题,不如说是数学问题。在
请尝试一个示例:
1100101
哇哦!答案是101。在
它的工作原理是每
1
乘以下面的数字。 这样,值越高的数字实际上会得到更高的值(1,2,4,8,16,32…)这同样适用于十进制:
尝试:
^{pr2}$1337
哇哦!答案是1337。在
附录: Horner's Method使用相同的原理来计算给定点处的多项式。在
让我以10101作为输入示例来解释这一点。在
程序每次遇到一个数字就乘以2。所以基本上,第一个1乘以4,前0乘以3,直到最后一个1。在
像这样。在
^{pr2}$相关问题 更多 >
编程相关推荐