Подтвердить что ты не робот

Как печатать двоичный номер через printf

Возможный дубликат:
Есть ли конвертер 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

Я хочу, чтобы это печаталось в двоичном формате. Есть% x,% o и% d, которые относятся к шестнадцатеричному, восьмеричному и десятичному числу, но что для печати двоичного файла в printf?

4b9b3361

Ответ 1

printf() не поддерживает это напрямую. Вместо этого вы должны создать свою собственную функцию.

Что-то вроде:

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

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

Ответ 2

Хотя ANSI C не имеет этого механизма, можно использовать itoa() в качестве ярлыка:

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

Здесь происхождение:

itoa в справочной системе cplusplus

Это нестандартный C, но K & R упомянул о реализации в книге C, поэтому это должно быть довольно распространенным явлением. Это должно быть в stdlib.h.