web-dev-qa-db-ja.com

printfで2進数を印刷する方法

可能性のある複製:
バイナリ形式で印刷するprintfコンバーターはありますか?

これが私のプログラムです

#include<stdio.h>
int main ()
{
    int i,a=2;
    i=~a;
    printf("a=%d\ni=%d\n",a,i);

    return 0;
}

出力は

a=2
i=-3

これをバイナリで印刷したい。 16進数、8進数、10進数の%x、%o、%dがありますが、printfでバイナリを印刷するのは何ですか?

35
Registered User

printf()はそれを直接サポートしていません。代わりに、独自の関数を作成する必要があります。

何かのようなもの:

while (n) {
    if (n & 1)
        printf("1");
    else
        printf("0");

    n >>= 1;
}
printf("\n");
51

ANSI Cにはこのメカニズムがありませんが、ショートカットとしてitoa()を使用することができます。

  char buffer [33];
  itoa (i,buffer,2);
  printf ("binary: %s\n",buffer);

ここに起源があります:

cplusplusリファレンスのイトア

これは非標準のCですが、K&RはCブックで実装について言及しているため、非常に一般的です。 stdlib.hにあるはずです。

42
zw324