Estoy intentando obtener más información sobre esto para implementar en mi proyecto.Operadores booleanos simples para indicadores de bit
Yo actualmente tengo este básicamente:
unsigned char flags = 0; //8 bits
flags |= 0x2; //apply random flag
if(flags & 0x2) {
printf("Opt 2 set");
}
Ahora estoy deseando hacer cosas un poco más complejas, lo que estoy queriendo hacer es aplicar tres banderas como esto:
flags = (0x1 | 0x2 | 0x4);
Y luego eliminar los indicadores 0x1
y 0x2
de él? Pensé que podría hacer algo como esto a nivel de bits aplicando NO (AND bit a bit y aplicarlo):
flags &= ~(0x1 | 0x2);
Al parecer, permanecen allí o algo de cualquier manera cuando compruebo.
Tampoco sé cómo comprobar si NO existen en los indicadores de bits (por lo que no puedo verificar si mi código anterior funciona), ¿sería algo como esto?
if(flags & ~0x2)
printf("flag 2 not set");
No puedo encontrar ningún recurso de mis búsquedas recientes que se aplican a esto, estoy dispuesto a aprender esto para enseñar a otros, estoy realmente interesado. Me disculpo si esto es confuso o simple.
yo estaba bien la primera vez, gracias! – John
Claro, no hay problema. Los operadores bit a bit son divertidos. :) – cdhowie
¿Ahora cómo verificaría si dos banderas se establecieron sin booleano y? como 'if (flags & (0x1 | 0x2))' pero parece funcionar incluso si solo configuré '0x1' .. – John