• ベストアンサー

教えてください!(C言語関連)

2進数(nビット)から10進数へ変換するプログラムを作成したいと考えています。入力(2進数)は固定ビットでなく可変ビットにしたいです。 開発言語はCです。 どのようにすればよいでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • jacta
  • ベストアンサー率26% (845/3158)
回答No.4

とりあえず、uintmax_t型で表現できる範囲(少なくとも64ビット)であれば... #include <stdio.h> #include <inttypes.h> #include <limits.h> int main(void) {  char s[sizeof(uintmax_t) * CHAR_BIT + 1];  fgets(s, sizeof(s), stdin);  printf("%" PRIuMAX "\n", strtoumax(s, NULL, 2));  return 0; } 入力は可変ビットですが、上限は決まっています。 なお、エラーチェックは省略しています。

その他の回答 (4)

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

「2進数は,int型で宣言されます。」とはどういう意味でしょうか? もっと具体的に (可能なら例も使って) 「このように表されているものをこのようなものに変換したい」などと書いてもらえませんか?

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

確認したいんですが, 入力の「2進数 (nビット)」はどのような形で表されているのでしょうか?

02031988
質問者

補足

2進数は,int型で宣言されます。

  • asuncion
  • ベストアンサー率33% (2126/6286)
回答No.2

入力が0か1かで固定であれば、次の方法で答えが求まります。 入力の桁数は無制限です。 ・答えを0で初期化する ・入力(0または1)を受け取る(※1) ・その時点の答えに2を掛けて、受け取った入力値(0または1)を加える(※2) ・入力がある間、※1~※2を繰り返す

  • kmetu
  • ベストアンサー率41% (562/1346)
回答No.1

参考までに http://homepage3.nifty.com/teranet/DToB/c.html http://www.yukun.info/blog/2008/01/decimal-to-binary.html "c言語 2進数から10進数"で検索したら色々でてきます

関連するQ&A

  • C言語にて。

    C言語にて。 ある10進数の数を文字コードを利用して 32進数にするプログラムを作成さる場合 どのようにすればいいでしょうか?

  • C言語の授業で

    C言語の授業で -------------------- 3以上の整数を入力してください:10 素数は以下の数です: 7 5 3 2 素数は4個ありました -------------------- という感じの、入力した数以下の素数を表示するプログラムをwhile文を用いて作成するように言われたんですが・・・。 まず、while文と素数を表示するプログラムがよくわからないので、もう何をすればいいのか・・・。 どうか、ご教授お願いします。

  • C言語プログラミング

    頼る人がいないので助けて下さい。すべてforを用いて下さい。 (1)入力された数だけ*が表示されるプログラムを用いて作成してください。 (2)4つの数が入力されるとその平均を求めるプログラムを作成してください。 (3)数列an = n^2に関して入力された項数までの和を求めるプログラムを作成してください。

  • C言語

    C言語初心者です。 整数を入力しその数が偶数ならプログラムを終了する。奇数ならそれが3の倍数か3の倍数でないかを表示する。入力した数が奇数ならこの操作を何回も繰り返すプログラムを作りたいです。 このプログラムのソースを教えてください。

  • c言語の初心者です

    c言語の初心者です 2進数を入力して10進数を表示するプログラムを作りたいのですが まったくできません それなので2進数の入力のヒントだけでも教えてもらえないでしょうか?

  • C言語プログラム

    C言語プログラム ある数を入力して、入力された数を一辺とする図形を描くプログラムを作りたいんです。 分かりやすくすると、 入力された数が5だった時、画面には ***** ***** ***** ***** ***** ↑こう出力させたいんです。 四角だけじゃなくて、 * ** *** **** ***** ↑こういう三角とか、逆三角とか、 *        * **     *** ***  ***** **     *** *        * こんなかんじでいろんな形を描けるようにしたいんです。 C言語で、for文の二重ループを使うようにとのことなんですが、 どうすればいいでしょうか。 こういうのってズルですけど、何かヒントでも貰えればと思っています...。

  • c言語です。

    c言語です。 現在電話番号入力のプログラムを書いているのですが、うまくいきません。 決まりは18文字以下で、入力できる値が数字1から9と'(',')','-'のみです。 私はあと少しなんですが、うまくプログラムを組めませんでした。 forを使ってやってみたのですがうまくいきません。文字数制限はできたのですが、、 どなたか良い知恵がありましたら教えてください。

  • C言語の問題

    以下はC言語の問題です。お教えください。 1000以下の素数を求めるプログラム prog.c を作成せよ。各素数を整数4桁で出力し、15個の素数を出力した時点で改行処理 を行うこと。作成したプログラムを提出せよ。 です。 僕の考えでは、 #include <stdio.h> #include <math.h> main(){ int i; int j; int ix; int k; printf("正の整数を入力して下さい: "); scanf("%d",&i); ix=(int)(sqrt((double)i)); k=0; for(j=2;j<=ix;j++) { if(i%j==0) { k=1; } } if(k==0) { printf("%d は素数です\n",i); } else { printf("%d は素数ではありません\n",i); } となると思うのですが。どうやら違うようです。全然わからないので、正しい答えを教えてください。

  • C言語のビットシフトの質問

    C言語の右ビットシフトで、以下のプログラムの結果について、納得できずにいます。 dを右にシフトすると、上位ビットには0が入るのではないでしょうか? よろしくお願いします。 プログラム unsigned char d='0'; printf("%c\n", d); printf("%c\n", d>>5); 結果 0 『

  • C言語 n!のプログラミング

    C言語で、入力されたnについてのn!を求めるプログラムを書きました。 #include<stdio.h> int main() { int total=1,i,n; scanf("%d",&n); for(i=1;i<=n;i++){ total*=i; } printf("%d",total); } しかし、このままだとn=13くらいからオーバーフローしてしまって、n=100やn=10000といった大きな数の場合のn!が求められませんよね? 万進法という方法を使って、10000未満の数を配列の要素に割り当てる(説明が正しいかわかりませんが…)と、うまくいくと聞きました。 万進法とはどのようなものでしょうか?やり方を教えてください。 また、C言語での、このプログラムの一例もできれば教えてください。 ですが、今一番知りたいのはどういう手順でプログラムを書けばいいのかということですので、そちらの方を詳しく教えてください。

専門家に質問してみよう