java
Manipulação de bits
I.1
Introdução
Este apêndice apresenta uma extensa discussão sobre os operadores de manipulação de bits e também sobre a classe BitSet que permite a criação de objetos do tipo array de bits para configurar e obter valores de bits individuais. O Java fornece várias capacidades de manipulação de bits para programadores que precisam descer ao nível dos ‘bits e bytes’. Sistemas operacionais, software de equipamento de teste, software de rede e muitos outros tipos de software exigem que o programador se comunique ‘diretamente com o hardware’.
Agora, discutiremos as capacidades de manipulação de bits do Java e os operadores de bits.
I.2
Manipulação de bits e os operadores de bits
Os computadores representam todos os dados internamente como seqüências de bits. Cada bit pode assumir o valor 0 ou o valor 1. Na maioria dos sistemas, uma seqüência de oito bits forma um byte — a unidade de armazenamento padrão para uma variável do tipo byte.
Outros tipos são armazenados em números maiores de bytes. Os operadores de bits podem manipular os bits de operandos integrais
(operações do tipo byte, char, short, int e long), mas não os operandos de ponto flutuante.
Observe que as discussões sobre operador de bits nesta seção mostram as representações binárias dos operandos inteiros. Para uma explicação detalhada do sistema de números binário (também chamado de base 2), veja o Apêndice E, “Sistemas de numeração”.
Os operadores de bits são E sobre bits (&), OU inclusivo sobre bits (|), OU exclusivo sobre bits (^), deslocamento para a esquerda (), deslocamento para a direita sem sinal (>>>) e complemento de bits
(~). Os operadores E sobre bits, OU inclusivo sobre bits e OU exclusivo sobre bits comparam seus dois operandos bit a bit. O operador E sobre bits configura cada bit no resultado como 1 se e somente se o bit correspondente nos dois operandos for 1. O operador OU inclusivo sobre bits (|) configura cada bit no resultado como 1 se