Curso de Programación en C/Prog128
Ir a la navegación
Ir a la búsqueda
Prog128
1 #include <stdio.h>
2 #include <stdlib.h>
3 #include <string.h>
4
5 int main( void )
6 {
7 unsigned char Mascara = 0x00,
8 Semaforos;
9
10 char Buf[7];
11
12 int i,
13 Prueba;
14
15 puts( "\nEl bitwise OR esta usado a veces a" );
16 puts( "prender algunas 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 demaciado largo.\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 for( i = 1; i <= 8; i++ )
45 {
46 if( i == 1 )
47 Mascara = 0x01;
48 else
49 Mascara <<= 1;
50
51 Semaforos = Prueba;
52 Semaforos |= Mascara;
53 printf( "Su número %d se cambia a %d cuando bit %d está prendida\n",
54 Prueba, Semaforos, i -1 );
55 }
56 printf( "\nDame un número positivo entre 0 y 255"
57 " (<Enter> para terminar): " );
58 }
59 return 0;
60 }
Resultado
[rrc@AbelLap CClase]$ gcc -Wall -o Prog128 Prog128.c [rrc@AbelLap CClase]$ ./Prog128 El bitwise OR esta usado a veces a prender algunas bits en un entero Dame un número positivo entre 0 y 255: 0 Su número 0 se cambia a 1 cuando bit 0 está prendida Su número 0 se cambia a 2 cuando bit 1 está prendida Su número 0 se cambia a 4 cuando bit 2 está prendida Su número 0 se cambia a 8 cuando bit 3 está prendida Su número 0 se cambia a 16 cuando bit 4 está prendida Su número 0 se cambia a 32 cuando bit 5 está prendida Su número 0 se cambia a 64 cuando bit 6 está prendida Su número 0 se cambia a 128 cuando bit 7 está prendida Dame un número positivo entre 0 y 255 (<Enter> para terminar): 1 Su número 1 se cambia a 1 cuando bit 0 está prendida Su número 1 se cambia a 3 cuando bit 1 está prendida Su número 1 se cambia a 5 cuando bit 2 está prendida Su número 1 se cambia a 9 cuando bit 3 está prendida Su número 1 se cambia a 17 cuando bit 4 está prendida Su número 1 se cambia a 33 cuando bit 5 está prendida Su número 1 se cambia a 65 cuando bit 6 está prendida Su número 1 se cambia a 129 cuando bit 7 está prendida Dame un número positivo entre 0 y 255 (<Enter> para terminar): 2 Su número 2 se cambia a 3 cuando bit 0 está prendida Su número 2 se cambia a 2 cuando bit 1 está prendida Su número 2 se cambia a 6 cuando bit 2 está prendida Su número 2 se cambia a 10 cuando bit 3 está prendida Su número 2 se cambia a 18 cuando bit 4 está prendida Su número 2 se cambia a 34 cuando bit 5 está prendida Su número 2 se cambia a 66 cuando bit 6 está prendida Su número 2 se cambia a 130 cuando bit 7 está prendida Dame un número positivo entre 0 y 255 (<Enter> para terminar): 3 Su número 3 se cambia a 3 cuando bit 0 está prendida Su número 3 se cambia a 3 cuando bit 1 está prendida Su número 3 se cambia a 7 cuando bit 2 está prendida Su número 3 se cambia a 11 cuando bit 3 está prendida Su número 3 se cambia a 19 cuando bit 4 está prendida Su número 3 se cambia a 35 cuando bit 5 está prendida Su número 3 se cambia a 67 cuando bit 6 está prendida Su número 3 se cambia a 131 cuando bit 7 está prendida Dame un número positivo entre 0 y 255 (<Enter> para terminar): 8 Su número 8 se cambia a 9 cuando bit 0 está prendida Su número 8 se cambia a 10 cuando bit 1 está prendida Su número 8 se cambia a 12 cuando bit 2 está prendida Su número 8 se cambia a 8 cuando bit 3 está prendida Su número 8 se cambia a 24 cuando bit 4 está prendida Su número 8 se cambia a 40 cuando bit 5 está prendida Su número 8 se cambia a 72 cuando bit 6 está prendida Su número 8 se cambia a 136 cuando bit 7 está prendida Dame un número positivo entre 0 y 255 (<Enter> para terminar): 16 Su número 16 se cambia a 17 cuando bit 0 está prendida Su número 16 se cambia a 18 cuando bit 1 está prendida Su número 16 se cambia a 20 cuando bit 2 está prendida Su número 16 se cambia a 24 cuando bit 3 está prendida Su número 16 se cambia a 16 cuando bit 4 está prendida Su número 16 se cambia a 48 cuando bit 5 está prendida Su número 16 se cambia a 80 cuando bit 6 está prendida Su número 16 se cambia a 144 cuando bit 7 está prendida Dame un número positivo entre 0 y 255 (<Enter> para terminar): 32 Su número 32 se cambia a 33 cuando bit 0 está prendida Su número 32 se cambia a 34 cuando bit 1 está prendida Su número 32 se cambia a 36 cuando bit 2 está prendida Su número 32 se cambia a 40 cuando bit 3 está prendida Su número 32 se cambia a 48 cuando bit 4 está prendida Su número 32 se cambia a 32 cuando bit 5 está prendida Su número 32 se cambia a 96 cuando bit 6 está prendida Su número 32 se cambia a 160 cuando bit 7 está prendida Dame un número positivo entre 0 y 255 (<Enter> para terminar): 358 Su entrada está fuera del rango especificado [rrc@AbelLap CClase]$