Você está aqui: Java ::: Dicas & Truques ::: Operadores de Manipulação de Bits (Bitwise Operators) |
Usando o operador de deslocamento de bits para a direita com extensão zero (>>>) da linguagem JavaQuantidade de visualizações: 7419 vezes |
O operador de deslocamento de bits para a direita com extensão zero (>>>) da linguagem Java é usado quando precisamos mover um padrão de bits para a direita uma determinada quantidade de posições, preenchendo os bits à esquerda com zeros, independente se o valor é positivo ou negativo (se o valor for positivo, o resultado da aplicação deste operador é semelhante àquela do operador >>). Comece analizando o seguinte valor binário: a = 00010100 Este valor binário equivale ao valor 20 na base decimal. Se movermos este padrão duas posições para a direita, ou seja, aplicando a operação: b = a >>> 2 o resultado será: a = 00010100 b = 00000101 Note que o valor resultante será 5 na base decimal. Vamos ver isso em Java? Eis o código: public class Main { public static void main(String[] args) { int a = 20; // 00010100 // exibe o valor original (em inteiro e em bytes) System.out.println("a = " + obterBits(a) + " (" + a + ")"); // vamos mover o padrão de bits do primeiro valor 2 posições para // a direita int b = a >>> 2; // vamos mostrar o resultado System.out.println("b = " + obterBits(b) + " (" + b + ")"); } // método auxiliar que converte um inteiro em sua representação em bits public static String obterBits(int valor){ int mascara = 1 << 31; Ao executarmos este código teremos o seguinte resultado: a = 00000000 00000000 00000000 00010100 (20) b = 00000000 00000000 00000000 00000101 (5) Cada troca à direita corresponde à divisão (inteira, desconsiderando as frações) do valor por 2. Assim: 20 / 2 / 2 = 5. Se a operação fosse: b = a >>> 3 o resultado seria 00000010 (2), já que 20 / 2 / 2 / 2 = 2 (note que um bit acabou sumindo aqui). É importante observar que o operador de deslocamento de bits para a direita (>>>) só pode ser aplicado aos tipos int e long. Se fornecermos argumentos do tipo char, byte ou short, estes serão promovidos para o tipo int antes da operação. O número de posições para a troca dos bits sempre estará na faixa de 0 a 31 se o tipo for int e 0 a 63 se o tipo for long. |
![]() |
Desafios, Exercícios e Algoritmos Resolvidos de Java |
Veja mais Dicas e truques de Java |
Dicas e truques de outras linguagens |
E-Books em PDF |
||||
|
||||
|
||||
Linguagens Mais Populares |
||||
1º lugar: Java |