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

[0] Índice de Mensajes

Ir a la versión completa