2016-03-29 21 views
-3

バイナリ入力を10進数に変更するプログラムを作成しようとしていますが、別のWebサイトでこのコードを見ましたが、このコードの式が10進数に変わる方法はわかりません。数式を2進数から10進数に変換する

#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

このコードは、入力されたバイナリ数の右側OFF 1または0を選択し、remainderに格納するモジュラス演算を使用します。 remainderに格納された各1または0は、それが表す値で乗算され、jで表され、次にdecimalNumberに追加されます。 2進数を10で割ってすべての桁を右にシフトします。これは、2進数に1以上が残らなくなるまで繰り返されます。

関連する問題