Si haces desplazamientos binarios puedes simplificar un poco el código... sobretodo porque ya no necesitas "magic numbers" en tu código.
Código C:
Ver original#include<stdio.h>
int main(void)
{
int ingreso=87, mask = 1, i, entero=0;
for(i=0; i < 32; i++)
{
if ( ingreso & mask )
entero += mask;
mask <<= 1;
}
printf(" ==> decimal %d\n\n", entero
);
return 0;
}
Claro que si tu idea es ir sacando el binario sobre la marcha también puedes usar limits.h para calcular el número de bits que tienes que imprimir:
Código C:
Ver original#include <stdio.h>
#include <limits.h>
int main(void)
{
int ingreso=87, entero=0;
unsigned int mask = UINT_MAX - INT_MAX; // Esto equivale a activar únicamente el bit de mayor peso
while( mask )
{
if ( ingreso & mask )
entero += mask;
if ( entero != 0 )
printf( "%d", (ingreso
&mask
)? 1 : 0 ); mask >>= 1;
}
printf(" ==> decimal %d\n\n", entero
);
return 0;
}
PD.: el código está pensado para que únicamente muestre los bits significativos (omite los '0' a la izquierda)