Hay una variable que contiene algunas banderas y quiero eliminar una de ellas. Pero no sé cómo eliminarlo.
Así es como configuro la bandera.
my.emask |= ENABLE_SHOOT;
c
bit-manipulation
flags
Aaron de Windt
fuente
fuente
Respuestas:
Respuesta corta
Desea realizar una operación AND a nivel de bit en el valor actual con una operación NOT a nivel de bit del indicador que desea desarmar . Un bit a bit NO invierte cada bit (es decir, 0 => 1, 1 => 0).
flags = flags & ~MASK;
oflags &= ~MASK;
.Respuesta larga
Cuando realiza un Bitwise AND con Bitwise NOT del valor que desea desarmar.
en realidad estás haciendo:
fuente
notification.sound ^= Notification.DEFAULT_SOUND;
para borrar algunas banderas:
fuente
Es importante tener en cuenta que si la variable que se manipula es mayor que un int, el valor utilizado en la expresión 'y no' también debe serlo. En realidad, a veces uno puede salirse con la suya usando tipos más pequeños, pero hay suficientes casos extraños que probablemente sea mejor usar sufijos de tipo para asegurarse de que las constantes sean lo suficientemente grandes.
fuente
flags -= flags & MY_FLAG;
(o^=
si lo prefiere).