我已经获得了这个程序,它将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
。我真的不明白最后两段的动机:我明白发生了什么(我知道程序正在做什么),但我不明白为什么程序会这样做,以及为什么会这样。
有人可以启发我吗?