• ベストアンサー

printf で二進表示を行いたい。

すみません。教えていただきたいことがあります。 printf で普通のintの値をフォーマット指定子を使用して二進表示をしたかったのですが見当たりませんでした。 どうにかintの内容を二進で確認したいのですが、どのようにすれば良いですか? 宜しくお願いします。

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

  • ベストアンサー
  • Oh-Orange
  • ベストアンサー率63% (854/1345)
回答No.2

★2進整数を表示する関数を自作すればよい。 ・作り方は簡単で、最上位ビットから順に『0』と『1』を調べていき、ビットが  立っていれば『putchar('1');』にして、ビットが OFF なら『putchar('0');』  にすれば良いでしょう。 ・下にサンプルを載せますので使いやすいように改良して下さい。 サンプル: unsigned int bit = (1 << (sizeof(int) * 8 - 1)); int value = 12345; ←これが表示したい int 型の整数値です。 printf( "value の 2進表記は " ); for ( ; bit != 0 ; bit >>= 1 ){  if ( value & bit ){   putchar('1');  }  else{   putchar('0');  } } printf( " です。\n" ); 最後に: ・1バイトが 8 ビットの環境が前提です。→まぁ、普通は 8 ビットですが…。 ・上記のサンプルを関数などにすれば使いやすくなります。→print_bin()など ・以上。おわり。

psychesine
質問者

お礼

ありがとうございます。 サンプル助かります

その他の回答 (4)

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

ちなみに、C++であればstd::bitsetを使えば簡単に2進数にできます。

  • sakusaker7
  • ベストアンサー率62% (800/1280)
回答No.4

#3の方、「標準」って何を指しておっしゃいますか? たまたまVCとかにあるようなものは「標準」とは普通いわないでしょう。 で、質問者様へ: よくある質問で、C FAQ (日本語訳は http://www.kouno.jp/home/c_faq/ にあります) にも 20.11: 2進数の定数(0b101010のように)を使うことはできるか。2進数用の printf()の書式は存在するか。 A: 2進数の定数は存在しないし、2進数用の書式も存在しない。底2の(2進数)文字列に よる表現をstrtol()を使って整数に変換することは可能である。 ということですので、#3の方のいうitoaがあればそれを使って変換すれば いいでしょうし、 なければ#2の方の例を参考に自作ということになります。

  • Interest
  • ベストアンサー率31% (207/659)
回答No.3

自作しなくても、標準であるもの使いましょうよ。 自分で作ればバグも作りこむことになります(汗) 例えば itoaを使えば、 #define BUFF_SIZE 100 char buf[BUFF_SIZE]; int a = 20; itoa(a, buf, 2); printf("a=%d を2進数に直すと %s です。\n", a, buf ); これでいけるんじゃないでしょうか。 注意事項としては、itoa は Visual C++ では使えますが、gcc では使えなかったような気がします。 itoa が使えないコンパイラの場合は、(しかたがないので)自作してください。

psychesine
質問者

お礼

ありがとうございます でもgccなんです

回答No.1

文字列返す関数作ればいいのでは?

関連するQ&A