Voy a ser más explícito aquí porque creo que las máscaras bit a bit son una gran herramienta que debería estar en cualquier cinturón de desarrolladores. Voy a tratar de ampliar las respuestas anteriores.En primer lugar, un ejemplo de la utilización de un número entero de mantener las banderas del estado (de uso común):
// These are my masks
private static final int MASK_DID_HOMEWORK = 0x0001;
private static final int MASK_ATE_DINNER = 0x0002;
private static final int MASK_SLEPT_WELL = 0x0004;
// This is my current state
private int m_nCurState;
Para establece mi estado, yo uso el operador binario OR:
// Set state for'ate dinner' and 'slept well' to 'on'
m_nCurState = m_nCurState | (MASK_ATE_DINNER | MASK_SLEPT_WELL);
Aviso cómo 'o' mi estado actual con los estados en los que quiero activar '. Quién sabe cuál es mi estado actual y no quiero arruinarlo.
Para desarmar mi estado, yo uso el operador AND con el operador de complemento:
// Turn off the 'ate dinner' flag
m_nCurState = (m_nCurState & ~MASK_ATE_DINNER);
Para cheque mi estado actual, utilice el operador AND:
// Check if I did my homework
if (0 != (m_nCurState & MASK_DID_HOMEWORK)) {
// yep
} else {
// nope...
}
¿Por qué creo que esto es interesante? Digamos que estoy diseñando una interfaz que establece mi estado. Podría escribir un método que acepta tres valores booleanos:
void setState(boolean bDidHomework, boolean bAteDinner, boolean bSleptWell);
O, podría usar un solo número para representar los tres estados y aprobar un único valor:
void setState(int nStateBits);
Si elige el segundo patrón que Seré muy feliz cuando decida agregar otro estado: no tendrá que romper las interfaces existentes de su interfaz.
Mis dos centavos. Gracias.
No hay nada específico sobre el uso de operadores bit a bit en "lenguajes web". Es tan inútil como preguntar * ¿cuándo usarías un filtro radial de desenfoque en el diseño web? *. Duplicado de http://stackoverflow.com/questions/276706/what-are-bitwise-operators, http://stackoverflow.com/questions/1746613/bitwise-operation-and-usage, http://stackoverflow.com/ preguntas/1167956/resources-to-learn-bitwise-programming y otros. –