2017-02-02 4 views
-2

私はプログラミングの初心者です。私は10進数を2進数に変換するコードを理解しようとしています。コードは次のようになります:誰でも私にこのコードの実行を理解させるのに役立つことができますか?

#include <stdio.h> 

int main() 
{ 
    long int DN,quo; 
    int rem[106],i=1,j; 

    printf("give me a decimal number: "); 
    scanf("%ld", &DN); 

    quo = DN; 

    while(quo!=0) 
    { 
    rem[i]= quo % 2; 
    quo = quo/2; 
    i++; 
    } 

    printf("Equivalent binary value of your decimal number %ld\n: ",DN); 

    for(j = i-1 ;j> 0;j--) 
    printf("%d",rem[j]); 
} 

whileループから始まる部分は誰でも分かりますか?このような簡単な質問を投稿することは非常に残念です。

+0

それでは、どの下部のループの確認Iことを行っています私の残りの部分を逆の順序で入手しますか? – Ufomammut

+0

10進数を2進数に変換するコードです。さらに読むhttp://math.stackexchange.com/questions/86207/converting-decimalbase-10-numbers-to-binary-by-repeatedly-dividing-by-2 and http://stackoverflow.com/questions/2548282/十進数と二進数の逆数 – roottraveller

+1

デバッグ実行ファイルを使用し、gdbのようなデバッガの助けを借りれば、どの値が 'rem []'に格納されているのか、 ''私は 'for'ループの直前です。コードの理解を向上させます。 – Rishi

答えて

0

これは、数値を10進表現に変換する標準的な方法の実装です。

  1. [quotioent、残りは]÷2
  2. D [i]を=余り
  3. 商が0であれば、我々は
  4. 他の後藤1
  5. 読むdを行っている= [i]は後方それを印刷してください。
1

と仮定入力の10進数は13

Step 1. 13/2 , Remainder = 1, Quotient = 6 
Step 2. 6/2 , Remainder = 0, Quotient = 3 
Step 3. 3/2 , Remainder = 1, Quotient = 1 
Step 4. 1/2 , Remainder = 1, Quotient = 0 

さて、13のバイナリ同等が逆の順序で余りです:1101

関連する問題