2017-08-31 79 views
0

这对二进制程序是如何工作的?我发现很难理解代码背后发生的事情。Denary转换为二进制程序

有人可以解释行6?

Number = int(input("Hello. \n\nPlease enter a number to convert: ")) 

if Number < 0: 
    print ("Can't be less than 0") 
else: 
    Remainder = 0 
    String = "" 
    while Number > 0: 
     Remainder = Number % 2 
     Number = Number // 2 
     String = str(Remainder) + String 
    print (String) 
+1

精神上走过它。选择一个数字并亲自尝试一下,看看它在做什么。 –

回答

0

的想法是分离出二进制数的最后一部分,把它贴在缓冲区中,然后从“编号”将其删除。该方法是通用的,也可以用于其他基础。

先看看它作为dec - > dec“转换”来理解原理。

假设您的编号为174(base10)。如果你想解析每个单独的片段(读作“数字”),你可以计算出模数(10),然后做一个整数除法来从数字中“移除”该数字。即174%10和174 // 10 =>(数字)17 | 4(提醒)。接下来的迭代中,你有17个分区,当你执行相同的过程时,它会将它分成1 | 7。在下一次迭代中,您将得到0 | 1,之后“Number”将为0(这是循环的退出条件(而Number> 0))。

在循环的每一次迭代中,您将取其余部分(对于您使用的特定碱基(它是碱基如何工作的基本属性)将使用一个数字),将其转换为字符串并将其与字符串连接你从前面的迭代(注意代码中的顺序!),并且一旦你分解为零,你就会得到转换后的数字。

如前所述,这适用于任何基地;你可以使用基数16转换为十六进制(虽然你需要做一些高于9的数字翻译),八进制(基数8)等。