Diferencia entre revisiones de «Curso de Programación en C/Prog129»
								
								Ir a la navegación
				Ir a la búsqueda
				
			
		
					
								
							
		 (→Prog129)  | 
			
(Sin diferencias) 
 | 
Revisión actual del 16:36 10 jun 2014
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]$