Si bien no hay una diferencia en el código producido por el compilador, las máscaras de bits se escriben tradicionalmente usando la notación hexadecimal, porque es mucho más fácil para un humano convertir a una forma binaria. Otra convención común es incluir los ceros a la izquierda cuando se conoce la longitud del campo. P.ej. para un campo C int
, es común escribir:
#define MASK 0x0000ffff
Además, las constantes hexadecimales indican al programador que es probablemente una máscara de bits, o un valor que será de alguna manera involucrado en operaciones bit a bit y debe, probablemente, ser tratado especialmente.
Como una ventaja, las notaciones hexadecimales también pueden evitar problemas con los números negativos: 0xffffffff
es de hecho un número negativo (-1
para ser exactos). En lugar de hacer malabares con los números del signo y complemento de 2, puede especificar la máscara en hexadecimal y terminar con ella.
Desde Java 7 también se puede utilizar binary literals que hace que sea aún más fácil para un ser humano para comprender qué bits se encuentra en una máscara de bits. Y los literales binarios pueden hacer uso de underscores para poner los bits en grupos separados.
Eso significa que el siguiente también es válido:
public final static int DELETION_MASK = 0b0000_0001;
Es una convención de lectura común para las máscaras, que parece ser que, ver http: // stackoverflow .com/questions/243712/why-use-hex (es C++ pero el mismo razonamiento) –