这种基数为10的十进制到二进制的转换如何工作?

时间:2016-11-16 00:27:59

标签: python binary base

我已经获得了这个程序,它将base-10中的十进制数转换为二进制数:

x = float(input('Enter a decimal number between 0 and 1: '))

p = 0
while ((2**p)*x)%1 != 0:
    print('Remainder = ' + str((2**p)*x - int((2**p)*x)))
    p += 1

num = int(x*(2**p))

result = ''
if num == 0:
    result = '0'
while num > 0:
    result = str(num%2) + result
    num = num//2

for i in range(p - len(result)):
    result = '0' + result

result = result[0:-p] + '.' + result[-p:]
print('The binary representation of the decimal ' + str(x) + ' is ' + str(result))

我理解前几段:我们只是找到一些适当大的值p,以便2**p乘以我们的数字是一个整数。然后我们将这个整数转换为二进制,现在我们需要将结果除以2**p。我真的不明白最后两段的动机:我明白发生了什么(我知道程序正在做什么),但我不明白为什么程序会这样做,以及为什么会这样。

有人可以启发我吗?

0 个答案:

没有答案