Ver Mensaje Individual
  #3 (permalink)  
Antiguo 10/10/2014, 00:57
eferion
 
Fecha de Ingreso: octubre-2014
Ubicación: Madrid
Mensajes: 1.212
Antigüedad: 9 años, 7 meses
Puntos: 204
Respuesta: Decimal a binario con operador AND[C]

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
  1. #include<stdio.h>
  2.  
  3. int main(void)
  4. {
  5.   int ingreso=87, mask = 1, i, entero=0;
  6.    
  7.   for(i=0; i < 32; i++)
  8.   {
  9.     if ( ingreso & mask )
  10.       entero += mask;
  11.  
  12.     mask <<= 1;
  13.   }
  14.    
  15.    printf(" ==> decimal %d\n\n", entero);
  16.    
  17.    return 0;
  18. }

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
  1. #include <stdio.h>
  2. #include <limits.h>
  3.  
  4. int main(void)
  5. {
  6.   int ingreso=87, entero=0;
  7.   unsigned int mask = UINT_MAX - INT_MAX; // Esto equivale a activar únicamente el bit de mayor peso
  8.  
  9.   printf( "\n\nbinario " );
  10.   while( mask )
  11.   {
  12.     if ( ingreso & mask )
  13.       entero += mask;
  14.  
  15.     if ( entero != 0 )
  16.       printf( "%d", (ingreso&mask)? 1 : 0 );
  17.     mask >>= 1;
  18.   }
  19.  
  20.    printf(" ==> decimal %d\n\n", entero);
  21.  
  22.    return 0;
  23. }

PD.: el código está pensado para que únicamente muestre los bits significativos (omite los '0' a la izquierda)