• Skip to primary navigation
  • Skip to content

Mauda

IT, Java and Music

Graduação   SCJP   Mestrado
  • Apresentação
  • Certificação Java
  • JPA
    • Exceptions
  • JSF
  • Versionamento
  • Contato

Operadores no Java – Unsigned Bit Shift Right

January 16, 2017 by Mauda Leave a Comment

Conteúdo do Post:
  1. Operador Unsigned Bit Shift Right
  2. Precedência dos Operadores
  3. finnaly{

Olá Pessoal, tudo bom?

Continuando nossa descrição básica sobre os operadores no Java, hoje é dia de falar sobre o operador unsigned bit shift right. A décima quarta parte desse artigo se encontra aqui. Confira na continuação desse artigo sobre o operador unsigned bit shift right:

Operador Unsigned Bit Shift Right

O operador unsignedbit shift right é definido pelo símbolo abaixo:

Operador Descrição
>>> Operador Bit Shift para preenchimento de zeros a esquerda, quantos bits forem informados pelo operador 2

Normalmente o Bit 1 pertence a uma instância que representa o valor (flag) a ser modificado e o Bit 2 é a quantidade de casas binárias que o shift irá percorrer:

Java
1
2
3
4
      1 0 0 1 0 1 1 1     (Flag)
>>>                 1     (Bitmask)
      ---------------
      0 1 0 0 1 0 1 1    (Resultado da operacao)

Note que o bit 1 que estava mais a direita foi removido e em seu lugar foi inserido um bit zero no bit mais a esquerda. Todos os outros bits foram movidos 1 casa binária para a direita. Caso o bit mais significativo não fosse 1 mas 0, ocorreria o seguinte resultado:

Java
1
2
3
4
      0 1 0 0 1 0 1 1     (Flag)
>>>                 1     (Bitmask)
      ---------------
      0 0 1 0 0 1 0 1     (Resultado da operacao)

Abaixo temos uma classe de exemplo que trabalha com o operador unsigned bit shift right:

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
package br.com.mauda.operadores;
 
public class OperadorUnsignedBitShiftRight {
public static void main(String[] args) {
int bitmask = 0x000F; //Em binario 0000 0000 0000 1111
int flag    = 1;
                      //           ===================
              //Em binario 0000 0000 0000 0111
System.out.println("Valor Original do bitmask: " + bitmask);
System.out.println("Valor Original do bitmask em binário: " + Integer.toBinaryString(bitmask));
Integer resultado = bitmask >>> flag;
System.out.println("\nResultado da operacao unsigned bit shift right 1: " + resultado);
System.out.println("Resultado da operacao unsigned bit shift right 1 em binario: " + Integer.toBinaryString(resultado));
bitmask = 0x000F;     //Em binario 0000 0000 0000 1111
flag    = 2;
                      //           ===================
                      //Em binario 0000 0000 0000 0011
resultado = bitmask >>> flag;
System.out.println("\nResultado da operacao unsigned bit shift right 2: " + resultado);
System.out.println("Resultado da operacao unsigned bit shift right 2 em binario: " + Integer.toBinaryString(resultado));
}
}

O resultado da execução dessa classe será o seguinte:

Java
1
2
3
4
5
6
7
8
Valor Original do bitmask: 15
Valor Original do bitmask em binário: 1111
 
Resultado da operacao unsigned bit shift right 1: 7
Resultado da operacao unsigned bit shift right 1 em binario: 111
 
Resultado da operacao unsigned bit shift right 2: 3
Resultado da operacao unsigned bit shift right 2 em binario: 11

Para um valor com o bit mais significativo zero, a execução ocorre igual a operação de bit shift right. Já com um valor com o bit mais significativo igual a um (número negativo), iremos ter uma diferença na execução, pois na primeira execução o valor já passará a ser positivo. Vamos ver um exemplo com um número negativo:

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
package br.com.mauda.operadores;
 
public class OperadorUnsignedBitShiftRightNegativo {
public static void main(String[] args) {
int bitmask = 0xF000000F;
int flag = 1;
System.out.println("Valor Original do bitmask: " + bitmask);
System.out.println("Valor Original do bitmask em binário: " + Integer.toBinaryString(bitmask));
Integer resultado = bitmask >>> flag;
System.out.println("\nResultado da operacao unsigned bit shift right 1: " + resultado);
System.out.println("Resultado da operacao unsigned bit shift right 1 em binario: " + Integer.toBinaryString(resultado));
flag = 2;
resultado = bitmask >>> flag;
System.out.println("\nResultado da operacao unsigned bit shift right 2: " + resultado);
System.out.println("Resultado da operacao unsigned bit shift right 2 em binario: " + Integer.toBinaryString(resultado));
flag = 3;
resultado = bitmask >>> flag;
System.out.println("\nResultado da operacao unsigned bit shift right 3: " + resultado);
System.out.println("Resultado da operacao unsigned bit shift right 3 em binario: " + Integer.toBinaryString(resultado));
flag = 4;
resultado = bitmask >>> flag;
System.out.println("\nResultado da operacao unsigned bit shift right 4: " + resultado);
System.out.println("Resultado da operacao unsigned bit shift right 4 em binario: " + Integer.toBinaryString(resultado));
flag = 5;
resultado = bitmask >>> flag;
System.out.println("\nResultado da operacao unsigned bit shift right 5: " + resultado);
System.out.println("Resultado da operacao unsigned bit shift right 5 em binario: " + Integer.toBinaryString(resultado));
}
}

O resultado da execução dessa classe será o seguinte:

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Valor Original do bitmask: -268435441
Valor Original do bitmask em binário: 11110000000000000000000000001111
 
Resultado da operacao unsigned bit shift right 1: 2013265927
Resultado da operacao unsigned bit shift right 1 em binario: 1111000000000000000000000000111
 
Resultado da operacao unsigned bit shift right 2: 1006632963
Resultado da operacao unsigned bit shift right 2 em binario: 111100000000000000000000000011
 
Resultado da operacao unsigned bit shift right 3: 503316481
Resultado da operacao unsigned bit shift right 3 em binario: 11110000000000000000000000001
 
Resultado da operacao unsigned bit shift right 4: 251658240
Resultado da operacao unsigned bit shift right 4 em binario: 1111000000000000000000000000
 
Resultado da operacao unsigned bit shift right 5: 125829120
Resultado da operacao unsigned bit shift right 5 em binario: 111100000000000000000000000

Precedência dos Operadores

Continuando a formular a tabela de precedência, agora segue o operador unsigned bit shift right está junto com o operador bit shift left e o operador bit shift right, logo abaixo dos operadores aditivos, assim verifique a tabela abaixo:

Ordem Tipo de Operador Precedência
1 Pós Fixo expr++   expr–
2 Pré fixo e Unário    ++expr   –expr   +expr   -expr   ~   !
3 Multiplicativo *    /    %
4 Aditivo +    –
5 Shift <<   >>  >>>
6 Relacional >    >=    <=   <    instanceof
7 Igualdade ==    !=
8 Bitwise AND &
9 Bitwise exclusive OR ^
10 Bitwise inclusive OR |
11 AND Lógico &&
12 OR Lógico ||
13 Ternário ? :
14 Atribuição =   +=   -=   *=   /=   %=

finnaly{

Duvidas ou sugestões? Deixe seu feedback! Isso ajuda a saber a sua opinião sobre os artigos e melhorá-los para o futuro! Isso é muito importante!

Até um próximo post!

Filed Under: Java, Operadores Tagged With: bitshift, int, long, right, unsigned

About Mauda

Mestre em Informática, Analista de Sistemas, Professor, SCJP e Baterista. Desde 2002 trabalhando no mundo Java e ensinando pessoas sobre desenvolvimento de sistemas. Mais informações

Reader Interactions

Leave a Reply Cancel reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Advertisements

Copyright © 2025 · Genesis Framework · WordPress · Log in