Cómo imprimir un número binario a través de printf [duplicate]

2 minutos de lectura

avatar de usuario
usuario registrado

Posible duplicado:

¿Hay un convertidor de printf para imprimir en formato binario?

Aquí está mi programa

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

    return 0;
}

la salida es

a=2
i=-3

Quiero que esto se imprima en binario. Hay %x, %o y %d que son para números hexadecimales, octales y decimales, pero ¿qué es para imprimir binarios en printf?

  • stackoverflow.com/questions/111928/…

    – cnicutar

    16 de junio de 2011 a las 13:58

  • ¿De verdad quieres binario? El hexadecimal suele ser igual de bueno (o incluso mejor), ya que asigna cada 4 bits a un dígito hexadecimal, lo que le brinda una representación compacta y expresiva de los datos binarios.

    – KerrekSB

    16 de junio de 2011 a las 14:01

  • @Kerrek, ¿realmente está diciendo que ver un número en su representación binaria es inútil? Intenta analizar un número flotante en dígitos hexadecimales: P

    – Vinicius Kamakura

    16 de junio de 2011 a las 14:19

  • @hexa: Sí, haciendo eso todo el tiempo. Escribí un comparador ULP para dobles largos, que con mucho gusto depuré en hexadecimal. maleficio realmente es solo binario comprimido un poco.

    – KerrekSB

    16 de junio de 2011 a las 14:22

  • binary puede ser útil para ver cómo se configuran los mapas de memoria bit a bit, si están documentados en consecuencia y desea ver los valores establecidos de la misma manera que en el documento. no molestemos a nadie por querer sus datos en el formato que más se adapte a sus necesidades.

    – CDH

    4 sep 2019 a las 21:30

avatar de usuario
vinicius kamakura

printf() no admite eso directamente. En su lugar, tienes que hacer tu propia función.

Algo como:

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

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

  • Esto imprime la representación binaria al revés.

    –David Heffernan

    30 de septiembre de 2012 a las 19:44

  • @David Heffernan ¿Cómo podemos escribir qué admite tanto la plataforma de 32 bits como la de 64 bits?

    – kapilddit

    19 de octubre de 2012 a las 6:02


  • @hexa crea la función y usa la recursividad para corregir el orden de impresión. ¿Será útil?

    – kapilddit

    19 de octubre de 2012 a las 6:07

  • @kapilddit: ¿por qué demonios intentarías agregar tu respuesta a la respuesta de Hexa? Llevas el tiempo suficiente como para saber cómo funciona Stack Overflow.

    – jww

    22 de diciembre de 2014 a las 6:01

  • Corregido mediante recursividad stackoverflow.com/a/27627015/1079110.

    – danijar

    23 de diciembre de 2014 a las 19:47

Aunque ANSI C no tiene este mecanismo, es posible usar itoa() como atajo:

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

Aquí está el origen:

itoa en cplusplus referencia

Es C no estándar, pero K&R mencionó la implementación en el libro C, por lo que debería ser bastante común. Debería estar en stdlib.h.

  • en caso de que / no funcione para usted, aquí hay una implementación rápida de implementación propia @ strudel.org.uk/itoa

    – Evandrix

    18/10/2013 a las 17:02

¿Ha sido útil esta solución?

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Configurar y más información
Privacidad