O Java 7 incorpora uma notação bastante interessante e importante para expressar bits. Esta notação é chamada de Binary Literals e tem como prefixo 0b. Desde antes, o Java já suportava a notação hexadecimal (0x) e octal (0).
Como a maioria já sabe, todos os dados computacionais são bits em sua forma bruta. O tipo de uma variável é uma formatação dos bits para torná-los inteligíveis à nós.
Gostei desta notação porque me pouparia de acessar a calculadora científica (agora do programador) para converter uma máscara de bits em decimal ou hexadecimal. Espero ter a oportunidade de usufruir deste recurso no futuro.
Vamos explorar agora algumas possibilidades de uso do Binary Literals ou Notação Binária em Java 7:
Obs.: Aproveitei para usar "_" (underscore ou underline) para melhorar a leitura dos bits grandes, mas não interfere no resultado.
char A = 0b0000000001000001;
char B = 0b0000000001000010;
char C = 0b0000000001000011;
char D = 0b0000000001000100;
char E = 0b0000000001000101;
short numberShort_16bits = 0b0000000000000011;
int numberInt_32bits = 0b01000000_10000000_10000000_10000000;
long numberLong_64bits = 0b001000000_10000000_10000000_10000000_01000000_10000000_10000000_10000000L;
float numberFloat_32bits = 0b001000000_10000000_10000000_10000000;
double numberDouble_64bits = 0b001000000_10000000_10000000_10000000_01000000_10000000_10000000_10000000L;
char arrayOfChar [] = {0b0000000001000001, 0b0000000001000010, 0b000000000100001};
short arrayOfnumberShort_16bits [] = {0b0000000000000011, 0b0000000100000111};
int arrayOfnumberInt_32bits [] = {0b01000000_10000000_10000000_10000000, 0b01000000_10000000_10000000_10000000};
long arrayOfnumberLong_64bits [] = {0b001000000_10000000_10000000_10000000_01000000_10000000_10000000_10000000L,
0b001000000_10000000_10000000_10000000_01000000_10000000_10000000_10000000L};
float arrayOfnumberFloat_32bits [] = {0b001000000_10000000_10000000_10000000_01000000_10000000_10000000_10000000L,
0b001000000_10000000_10000000_10000000_01000000_10000000_10000000_10000000L};
double arrayOfnumberDouble_64bits [] = {0b001000000_10000000_10000000_10000000_01000000_10000000_10000000_10000000L, 0b001000000_10000000_10000000_10000000_01000000_10000000_10000000_10000000L};
Até a próxima.