2016-03-29 76 views
-3

我試圖編寫一個程序來將二進制輸入更改爲十進制,並且我在另一個網站上看到了此代碼,但我不明白該代碼中的公式如何將二進制更改爲十進制。二進制到十進制的公式

#include <stdio.h> 

int main() { 

    long int binaryNumber, decimalNumber = 0, j = 1, remainder; 

    printf("Enter any binary number: "); 
    scanf("%ld", &binaryNumber); 

    while (binaryNumber != 0) { 
     remainder = binaryNumber % 10; 
     decimalNumber = decimalNumber + remainder * j; 
     j = j * 2; 
     binaryNumber = binaryNumber/10; 
    } 

    printf("Equivalent decimal value: %ld", decimalNumber); 

    return 0; 
} 
+0

那你到底明白了什麼? – MikeMB

+1

爲什麼不構建它並使用調試器跟蹤執行? –

+0

@MartinJames:那是我的第一個想法,但我認爲我會很好。 –

回答

1

此代碼使用模操作來選擇一個1或0關閉已輸入的二進制數的右側,並將其存儲在remainder。然後將存儲在remainder中的每個1或0乘以其代表的值,由j表示,然後將其添加到decimalNumber。然後將二進制數除以10以將所有數字移到右側。這一直重複,直到二進制數中沒有更多的1。