Curso de Programación en C/Prog129
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]$