Programación General > C/C++
Operador |
(1/1)
11_8_88:
Hola a todos, estoy haciendo mis primeras pruebecillas con los operadores bit a bit tales como |, & y en el ejemplo de abajo c devuelve 896, per creo que debería ser 0, alguien me puede decir que estoy haciendo mal?, por que creo que no estoy entendiendo bien el uso de estos operadores.
--- Código: C ---#define KEY_ADD (1 << 7)#define KEY_SUB (1 << 8)#define KEY_REPORT (1 << 9)#define REPORT (KEY_ADD | KEY_SUB | KEY_REPORT) int main(void){ int c = (REPORT | 896); printf("REPORT: %i " ,REPORT); printf("REPORT: %i " , c);}
Muchas gracias.
m0skit0:
Veamos a ver:
--- Código: Text ---1 << 7 = 0000 0000 1000 0000 (0x80)1 << 8 = 0000 0001 0000 0000 (0x100)1 << 9 = 0000 0010 0000 0000 (0x200)896 = 0x380 = 0000 0011 1000 0000 Haciendo un OR entre esto nos da:
--- Código: Text ---0000 0000 1000 00000000 0001 0000 00000000 0010 0000 00000000 0011 1000 0000___________________0000 0011 1000 0000 = 0x380 = 896
Efectivamente C es correcto :lol:
Tabla de verdad del OR:
--- Código: Text ---0 OR 0 = 00 OR 1 = 11 OR 0 = 11 OR 1 = 1
Saludos
11_8_88:
OK, muchas gracias menudo fallo por mi parte pensaba que 1 or 1 = 0 .
Un saludo.
m0skit0:
Eso es XOR (^ en C).
Navegación
Ir a la versión completa