Translate

quarta-feira, 31 de outubro de 2012

Java 7 - Notação binária

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.