Simulador de Operações Bit a Bit (AND, OR, XOR, NOT, Deslocamento)

Calcule AND, OR, XOR, NOT, deslocamento à esquerda e à direita em dois números, e visualize exatamente quais bits mudaram em uma grade binária. Suporta larguras de 8/16/32 bits.

Dicas de uso

  • Você pode digitar valores em decimal, ou usar um prefixo hexadecimal como `0x1A` ou binário como `0b1010`. Cole os valores exatamente como você os escreveria no seu código.
  • AND, OR e XOR usam dois valores, enquanto NOT usa apenas um. O número de campos de entrada muda automaticamente conforme a operação escolhida.
  • O deslocamento à direita (`>>>`) aqui só é compatível com a variante lógica. Veja o FAQ para entender a diferença em relação a um deslocamento aritmético que preserva o bit de sinal.
  • Alternar a largura de bits de 8 para 16 e para 32 permite ver o mesmo número ganhando mais zeros à esquerda, o que ajuda a entender o real significado de "largura de bits".
  • Os bits destacados em amarelo são os que mudaram entre A e o resultado, então com AND/OR você consegue acompanhar visualmente qual valor de entrada "venceu" em cada posição.

Perguntas frequentes

Sim. O deslocamento lógico (`>>>`) sempre preenche os bits altos vagos com 0, enquanto o aritmético (`>>`) copia o bit de sinal (o bit mais significativo) para preenchê-los. Como esta ferramenta trata os valores como inteiros não negativos dentro da largura de bits escolhida, o sinal não é realmente o foco aqui, então ela oferece apenas o deslocamento lógico, mais fácil de entender.

Os operadores bit a bit do JavaScript calculam internamente como inteiros de 32 bits com sinal, então aplicar NOT a um valor de 8 bits `00000001` (1) normalmente resulta em `-2`. Esta ferramenta remascara o resultado de acordo com a largura de bits escolhida (8/16/32), então em 8 bits ela mostra corretamente `11111110` (254), a representação correta dentro dessa largura.

AND retorna 1 apenas quando ambos os bits são 1, por isso é usado com frequência para mascarar bits específicos. OR retorna 1 quando algum dos bits é 1, sendo usado para ativar bits específicos. XOR retorna 1 apenas quando os bits são diferentes, sendo usado para inverter bits ou trocar dois valores.

O deslocamento à esquerda (`<<`) é uma forma rápida de multiplicar por potências de dois (dobrar, quadruplicar etc.), enquanto o deslocamento à direita (lógico, como usado aqui) é comumente usado para dividir por dois ou extrair um intervalo específico de bits de um valor. Ambos aparecem constantemente em programação competitiva e algoritmos baseados em máscaras de bits.

Não exatamente — são termos relacionados, mas distintos. Operações bit a bit referem-se às operações em si (AND, OR, XOR, NOT, deslocamentos), enquanto uma máscara de bits é um valor usado junto com uma dessas operações (geralmente AND ou OR) para ler ou modificar bits específicos. Por exemplo, `value & 0b00001111` é uma máscara de bits clássica que extrai apenas os 4 bits menos significativos.
ツールくん

Curiosidade — As propriedades curiosas do XOR

As operações bit a bit correspondem diretamente aos circuitos lógicos de um computador, o que as torna algumas das operações mais rápidas que uma CPU pode executar, muitas vezes em um único ciclo de clock. Como precisam de circuitos muito mais simples do que operações aritméticas como multiplicação ou divisão, o código sensível a desempenho (processamento de imagens, criptografia, implementações de protocolos de rede) há muito usa truques bit a bit como substitutos de operações aritméticas mais caras.

O XOR (OU exclusivo) tem algumas propriedades curiosas: aplicar XOR de um valor com ele mesmo sempre resulta em 0 (`a ^ a = 0`), e aplicar XOR com 0 devolve o valor original inalterado (`a ^ 0 = a`). Combinando esses dois fatos surge o clássico truque de "troca com XOR", que troca duas variáveis sem usar uma variável temporária (`a ^= b; b ^= a; a ^= b;`). Hoje em dia raramente é recomendado em código de produção por motivos de legibilidade, mas continua sendo um exemplo didático favorito para entender operações bit a bit.

Máscaras de bits aparecem constantemente em sistemas reais. As permissões de arquivo do Unix (leitura=4, escrita=2, execução=1) são literalmente OR e AND bit a bit em ação, e extrair os componentes vermelho, verde e azul de um código de cor como `#FF0000` é feito com um deslocamento à direita combinado com uma máscara AND. A técnica de empacotar vários indicadores de ligado/desligado em um único inteiro, muitas vezes chamada de "flags de bits", foi amplamente usada em jogos e sistemas antigos que precisavam rastrear muitos estados com pouquíssima memória.