Curso de Programación en C/Prog129

De WikiCabal
< Curso de Programación en C
Revisión del 16:36 10 jun 2014 de Perseuz (discusión | contribuciones) (Prog129)
(dif) ← Revisión anterior | Revisión actual (dif) | Revisión siguiente → (dif)
Ir a la navegación Ir a la búsqueda

Prog129

  1 #include <stdio.h>
  2 #include <stdlib.h>
  3 #include <string.h>
  4 
  5 int main( void )
  6 {
  7   unsigned char Mascara,
  8                 Semaforos;
  9 
 10   char Buf[7];
 11 
 12   int  i,
 13        Prueba;
 14 
 15   puts( "\nEl bitwise AND es usado a veces para" );
 16   puts( "apagar algunos bits en un entero\n" );
 17   printf( "Dame un número positivo entre 0 y 255: " );
 18   while( fgets( Buf, 5, stdin ) && Buf[0] != '\n' )
 19   {
 20     if( *(Buf + strlen( Buf ) -1 ) != '\n' )
 21     {
 22       fputs( "La línea que entraste es demasiado larga.\nSolo 3 chars MAX",
 23                                                                      stderr );
 24       exit(1);
 25     }
 26     *(Buf + strlen( Buf ) -1 ) = '\0';
 27 
 28     for( i = 0; i < strlen( Buf ); i++ )
 29     {
 30       if( Buf[i] < '0' || Buf[i] > '9' )
 31       {
 32         fputs( "Caracteres ilegales en su ingreso\n", stderr );
 33         exit(1);
 34       }
 35     }
 36 
 37     Prueba = atoi( Buf);
 38     if( Prueba > 255 )
 39     {
 40       fputs( "Su entrada está fuera del rango especificado\n", stderr );
 41       exit(1);
 42     }
 43 
 44 
 45     for( i = 1; i <= 8; i++ )
 46     {
 47       switch( i )
 48       {
 49         case 1: Mascara = 0xfe;
 50                 Semaforos = Prueba;
 51                 Semaforos &= Mascara;
 52             printf( "Su número %d se cambia a %d cuando bit %d está apagado\n",
 53                                                       Prueba, Semaforos, i -1 );
 54 	    break;
 55         case 2: Mascara = 0xfd;
 56                 Semaforos = Prueba;
 57                 Semaforos &= Mascara;
 58             printf( "Su número %d se cambia a %d cuando bit %d está apagado\n",
 59                                                       Prueba, Semaforos, i -1 );
 60 	    break;
 61         case 3: Mascara = 0xfb;
 62                 Semaforos = Prueba;
 63                 Semaforos &= Mascara;
 64             printf( "Su número %d se cambia a %d cuando bit %d está apagado\n",
 65                                                       Prueba, Semaforos, i -1 );
 66 	    break;
 67         case 4: Mascara = 0xf7;
 68                 Semaforos = Prueba;
 69                 Semaforos &= Mascara;
 70             printf( "Su número %d se cambia a %d cuando bit %d está apagado\n",
 71                                                       Prueba, Semaforos, i -1 );
 72 	    break;
 73         case 5: Mascara = 0xef;
 74                 Semaforos = Prueba;
 75                 Semaforos &= Mascara;
 76             printf( "Su número %d se cambia a %d cuando bit %d está apagado\n",
 77                                                       Prueba, Semaforos, i -1 );
 78 	    break;
 79         case 6: Mascara = 0xdf;
 80                 Semaforos = Prueba;
 81                 Semaforos &= Mascara;
 82             printf( "Su número %d se cambia a %d cuando bit %d está apagado\n",
 83                                                       Prueba, Semaforos, i -1 );
 84 	    break;
 85         case 7: Mascara = 0xbf;
 86                 Semaforos = Prueba;
 87                 Semaforos &= Mascara;
 88             printf( "Su número %d se cambia a %d cuando bit %d está apagado\n",
 89                                                       Prueba, Semaforos, i -1 );
 90 	    break;
 91         case 8: Mascara = 0x7f;
 92                 Semaforos = Prueba;
 93                 Semaforos &= Mascara;
 94             printf( "Su número %d se cambia a %d cuando bit %d está apagado\n",
 95                                                       Prueba, Semaforos, i -1 );
 96 	    break;
 97       }
 98     }
 99     printf( "\nDame un número positivo entre 0 y 255"
100             " (<Enter> para terminar): " );
101   }
102   return 0;
103 }

Resultado

[rrc@AbelLap CClase]$ gcc -Wall -o Prog129 Prog129.c
[rrc@AbelLap CClase]$ ./Prog129

El bitwise AND es usado a veces para
apagar algunos bits en un entero

Dame un número positivo entre 0 y 255: 255
Su número 255 se cambia a 254 cuando bit 0 está apagado
Su número 255 se cambia a 253 cuando bit 1 está apagado
Su número 255 se cambia a 251 cuando bit 2 está apagado
Su número 255 se cambia a 247 cuando bit 3 está apagado
Su número 255 se cambia a 239 cuando bit 4 está apagado
Su número 255 se cambia a 223 cuando bit 5 está apagado
Su número 255 se cambia a 191 cuando bit 6 está apagado
Su número 255 se cambia a 127 cuando bit 7 está apagado

Dame un número positivo entre 0 y 255 (<Enter> para terminar): 127
Su número 127 se cambia a 126 cuando bit 0 está apagado
Su número 127 se cambia a 125 cuando bit 1 está apagado
Su número 127 se cambia a 123 cuando bit 2 está apagado
Su número 127 se cambia a 119 cuando bit 3 está apagado
Su número 127 se cambia a 111 cuando bit 4 está apagado
Su número 127 se cambia a 95 cuando bit 5 está apagado
Su número 127 se cambia a 63 cuando bit 6 está apagado
Su número 127 se cambia a 127 cuando bit 7 está apagado

Dame un número positivo entre 0 y 255 (<Enter> para terminar): 63
Su número 63 se cambia a 62 cuando bit 0 está apagado
Su número 63 se cambia a 61 cuando bit 1 está apagado
Su número 63 se cambia a 59 cuando bit 2 está apagado
Su número 63 se cambia a 55 cuando bit 3 está apagado
Su número 63 se cambia a 47 cuando bit 4 está apagado
Su número 63 se cambia a 31 cuando bit 5 está apagado
Su número 63 se cambia a 63 cuando bit 6 está apagado
Su número 63 se cambia a 63 cuando bit 7 está apagado

Dame un número positivo entre 0 y 255 (<Enter> para terminar): 31
Su número 31 se cambia a 30 cuando bit 0 está apagado
Su número 31 se cambia a 29 cuando bit 1 está apagado
Su número 31 se cambia a 27 cuando bit 2 está apagado
Su número 31 se cambia a 23 cuando bit 3 está apagado
Su número 31 se cambia a 15 cuando bit 4 está apagado
Su número 31 se cambia a 31 cuando bit 5 está apagado
Su número 31 se cambia a 31 cuando bit 6 está apagado
Su número 31 se cambia a 31 cuando bit 7 está apagado

Dame un número positivo entre 0 y 255 (<Enter> para terminar): 15
Su número 15 se cambia a 14 cuando bit 0 está apagado
Su número 15 se cambia a 13 cuando bit 1 está apagado
Su número 15 se cambia a 11 cuando bit 2 está apagado
Su número 15 se cambia a 7 cuando bit 3 está apagado
Su número 15 se cambia a 15 cuando bit 4 está apagado
Su número 15 se cambia a 15 cuando bit 5 está apagado
Su número 15 se cambia a 15 cuando bit 6 está apagado
Su número 15 se cambia a 15 cuando bit 7 está apagado

Dame un número positivo entre 0 y 255 (<Enter> para terminar): 7
Su número 7 se cambia a 6 cuando bit 0 está apagado
Su número 7 se cambia a 5 cuando bit 1 está apagado
Su número 7 se cambia a 3 cuando bit 2 está apagado
Su número 7 se cambia a 7 cuando bit 3 está apagado
Su número 7 se cambia a 7 cuando bit 4 está apagado
Su número 7 se cambia a 7 cuando bit 5 está apagado
Su número 7 se cambia a 7 cuando bit 6 está apagado
Su número 7 se cambia a 7 cuando bit 7 está apagado

Dame un número positivo entre 0 y 255 (<Enter> para terminar): 3
Su número 3 se cambia a 2 cuando bit 0 está apagado
Su número 3 se cambia a 1 cuando bit 1 está apagado
Su número 3 se cambia a 3 cuando bit 2 está apagado
Su número 3 se cambia a 3 cuando bit 3 está apagado
Su número 3 se cambia a 3 cuando bit 4 está apagado
Su número 3 se cambia a 3 cuando bit 5 está apagado
Su número 3 se cambia a 3 cuando bit 6 está apagado
Su número 3 se cambia a 3 cuando bit 7 está apagado

Dame un número positivo entre 0 y 255 (<Enter> para terminar): 1
Su número 1 se cambia a 0 cuando bit 0 está apagado
Su número 1 se cambia a 1 cuando bit 1 está apagado
Su número 1 se cambia a 1 cuando bit 2 está apagado
Su número 1 se cambia a 1 cuando bit 3 está apagado
Su número 1 se cambia a 1 cuando bit 4 está apagado
Su número 1 se cambia a 1 cuando bit 5 está apagado
Su número 1 se cambia a 1 cuando bit 6 está apagado
Su número 1 se cambia a 1 cuando bit 7 está apagado

Dame un número positivo entre 0 y 255 (<Enter> para terminar): 0
Su número 0 se cambia a 0 cuando bit 0 está apagado
Su número 0 se cambia a 0 cuando bit 1 está apagado
Su número 0 se cambia a 0 cuando bit 2 está apagado
Su número 0 se cambia a 0 cuando bit 3 está apagado
Su número 0 se cambia a 0 cuando bit 4 está apagado
Su número 0 se cambia a 0 cuando bit 5 está apagado
Su número 0 se cambia a 0 cuando bit 6 está apagado
Su número 0 se cambia a 0 cuando bit 7 está apagado

Dame un número positivo entre 0 y 255 (<Enter> para terminar): 35
Su número 35 se cambia a 34 cuando bit 0 está apagado
Su número 35 se cambia a 33 cuando bit 1 está apagado
Su número 35 se cambia a 35 cuando bit 2 está apagado
Su número 35 se cambia a 35 cuando bit 3 está apagado
Su número 35 se cambia a 35 cuando bit 4 está apagado
Su número 35 se cambia a 3 cuando bit 5 está apagado
Su número 35 se cambia a 35 cuando bit 6 está apagado
Su número 35 se cambia a 35 cuando bit 7 está apagado

Dame un número positivo entre 0 y 255 (<Enter> para terminar): 
[rrc@AbelLap CClase]$ 

Explicación