Clique sobre os tópicos listados abaixo para navegar até o conteúdo desejado.

  1. Setar bits
  2. Resetar bits
  3. Testar bits
  4. Recuperar bits
  5. Inverter bits
  6. Setar bytes
  7. Resetar bytes
  8. Inverter bytes
  9. Inverter nibbles
  10. Percorrer bits
  11. tabela verdade

A manipulação em baixo nível de bits e bytes é comum em aplicações como: editores hexadecimais, assemblers, disassemblers, interpretadores, ferramentas de debug, emuladores e semelhantes.

Neste tópico, vamos aprender o básico sobre a manipulação de bits como: resetar bits, setar bits, inverter bits, deslocar bits e outras. Isso será feito utilizando os operadores bitwise vistos em Java Básico > Operadores > Bitwise.

Assim como em outras linguagens no estilo-C, em Java utilizamos o operador |(ou) para setar determinados bits de uma variável em expressão. Esse operador pode ser usado como na sintaxe a seguir:

Sintaxe:
nome_variavel | mascara_bits

Definimos uma máscara contendo os bits que desejamos setar e aplicamos o operador entre um valor e essa máscara como mostrado no exemplo abaixo:

Exemplo 1
//Main.java
public class Main
{
	public static void main(String[] args) {
		
        byte variavel = 0x00;
        byte resultado = (byte)(variavel | 0b00011000); //ou 0x18
        System.out.println(String.format("%02X",resultado));
	}
}
Saída
18

Para resetar bits também utilizamos uma máscara, mas dessa vez informa quais bits desejamos manter. Porém, utilizamos o operador &(e) como pode ser visto abaixo:

Sintaxe:
nome_variavel & mascara_bits

Assim, ao aplicar o operador acima temos apenas os bits necessários resetados em suas posições:

Exemplo 2
//Main.java
public class Main
{
	public static void main(String[] args) {
		
        byte variavel = (byte)0xff; //ffh
        byte resultado = (byte)(variavel & 0b11100111); //ou 0x18
        System.out.println(String.format("%02X",resultado));
	}
}
Saída
18

O teste de determinado bit ou conjunto de bits também é feito utilizando o operador & como visto acima. Porém, como estamos lidando com testes, por exemplo, apenas verificamos o o resultado.

Sintaxe:
(nome_variavel & mascara_bits) == valor
Exemplo 3
//Main.java
public class Main
{
	public static void main(String[] args) {
		
        byte variavel = (byte)0xff; //ffh
        System.out.println((byte)(variavel & 0b00011000) == 0x18);
	}
}
Saída
true

Para recuperar apenas os bits necessários, utilizamos o operador (>>). Aplicamos o operador & entre o valor e uma máscara como acima e deslocamos uma quantidade de bits à direita para obter os bits.

Sintaxe:
(nome_variavel & mascara_bits) >> qtd_bits
Exemplo 4:
//Main.java
public class Main
{
	public static void main(String[] args) {
		
        byte variavel = (byte)0xff; //ffh
        byte resultado = (byte)(variavel & 0b00011000); //0x18
       
        System.out.println(String.format("%02X",resultado));
        
        byte bits =  (byte)(resultado >> 3);
        
        System.out.println(bits);
        
        System.out.println(resultado == 0x3);
	}
}
Saída
18
3
false
  1. 12/08/2026 - revisão 1 - Versão inicial: 'Setar', 'Resetar', 'Testar' e 'Recuperar'