• 締切済み

プログラムの作成について

初めてプログラムを作成するのですが 4桁の2進数から10進数の変換を表示がうまくできません。 1100を10進に変換すると12のはずが 10進数=0となって手詰まりです。 if文などは使わずにやるのを前提にお願いします。

みんなの回答

  • yama1718
  • ベストアンサー率41% (670/1618)
回答No.3

まず前提として二進数と十進数の基礎知識は十分学習されたのでしょうか? 二進数を変換って元々変数には二進数で格納されていますからね。 十進数の表示はわざわざprintfなどの関数が変換して画面に表示しているのです。 プログラムをする時にはコンピュータの中では全て二進数で記憶や計算されていると頭を切り替えなくてはいけません。 それで質問されているのは、何を二進数に見立てて数値に変換しようとしているかで、前の人が回答で聞かれているのは、そういう話です。 例えとして次の3つくらいあるでしょうか。 ・配列に0と1を順番に格納しているのを二進数に見立てて ・文字列の0と1を二進数に見立てて ・数値の1100(千百)を二進数に見立てて 取り合えず最初の例のプログラムだけ提示します。 char g[4]={0,0,1,1}; void main(void) {   int i;   int r;   r=0;   for(i=0;i<4;i++){     r=r+g[i]*(1<<i);   };   printf("%d", r); } なぜifを使ってはいけないのですか?、 単純に0から15までの値をifで総当たりで変換するようなプログラムはいらないと言う話でしょうか。 ifを使わずにほとんどの事は論理式や演算子の組み合わせでできますが、とても初心者が理解できるようなものではないですよ。

  • hashioogi
  • ベストアンサー率25% (102/404)
回答No.2

よくわかりませんがこんな感じでよいのでしょうか ? int i, n = 0 ; char a [4] = {'1', '1', '0', '0'} ; for (i=0 ; i<4 ; i++) { n = n * 2 + (c [i] - '0') ; }

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.1

その「2進数」とやらはどのように与えられるのですか? どんなプログラムを作って「うまくいかない」のですか?

関連するQ&A