2017-08-31 33 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)等。