Uma calculadora bit a bit trabalha sobre a palavra de 32 bits que a máquina guarda de verdade, não sobre o decimal que você digitou. A Calculadora Bit a Bit toma dois números, aplica uma de sete operações (AND, OR, XOR, NOT A, NOT B, deslocamento à esquerda, deslocamento à direita) e imprime o resultado em cinco bases de uma vez: decimal, hexadecimal, binário de 8 bits, binário de 32 bits e octal. Nada é enviado; as operações rodam sobre os inteiros JavaScript do navegador. Este post percorre cada operação com números trabalhados, mostra onde o bit de sinal se infiltra nos deslocamentos e as máscaras que fazem do AND o cavalo de batalha do código a nível de byte.
Sete operações sobre uma palavra de 32 bits
As três operações de pares agem sobre cada posição de bit. 12 é 0b1100 e 10 é 0b1010: AND guarda só as posições onde ambos têm um 1, então 12 AND 10 = 0b1000 = 8; OR guarda a posição onde pelo menos um tem um 1, então 12 OR 10 = 0b1110 = 14; XOR guarda a posição onde exatamente um tem um 1, então 12 XOR 10 = 0b0110 = 6. Os dois botões NOT invertem cada bit de um operando: 5 é 0b0101 e sua forma invertida 0b1010 é a leitura em complemento de dois de -6, que em hexadecimal de 32 bits se imprime como 0xFFFFFFFA. Os dois deslocamentos movem os bits: 1 deslocado 4 para a esquerda é 16, e 1024 deslocado 2 para a direita é 256. Quando você quer o mesmo valor em outra base sem tocar nos bits, o conversor de base numérica faz a conversão pura.
Três bases de entrada, um valor de 32 bits
Cada campo aceita decimal plano, hexadecimal com prefixo 0x e binário com prefixo 0b, e o analisador guarda um único inteiro de 32 bits por trás dos três. 0xFF AND 0x0F = 15 é a máscara do nibble baixo que você vê em todo protocolo de bytes. Enquanto você digita, a ferramenta devolve cada operando como uma cadeia binária de 32 bits agrupada em nibbles, e o painel de resultado desenha os 8 bits baixos como oito caixas acesas ou apagadas: 255 acende as oito, 16 acende uma só. Ler esses grupos de olho é a mesma habilidade de converter texto em código binário, e o conversor de texto e binário a treina letra a letra.
Deslocamentos, o bit de sinal e a máscara 31
O deslocamento para a direita é aritmético: copia o bit de sinal ao se mover, então -8 é 0xFFFFFFF8 e -8 deslocado 1 para a direita dá 0xFFFFFFFC = -4, não 0x7FFFFFFC. O da esquerda preenche zeros pela direita, mas o bit 31 é o bit de sinal da palavra de 32 bits, então 1 deslocado 30 para a esquerda é 1073741824 (0x40000000), ainda positivo, enquanto 1 deslocado 31 para a esquerda é -2147483648, o negativo menor. A quantidade de deslocamento é mascarada primeiro para 0-31: 1 deslocado 33 para a esquerda se comporta exatamente como 1 deslocado 1 e devolve 2. Sem erro, sem aviso de estouro. Tirar um byte de uma palavra é o padrão cotidiano: 0xFF00 deslocado 8 para a direita dá 255. Para idas e voltas a nível de byte entre hexadecimal e UTF-8, o conversor Hex UTF-8 Base64 é o irmão desta vista.
Cinco bases de saída de uma vez
O painel de resultado mostra o mesmo valor cinco vezes: decimal, hexadecimal (maiúsculas, prefixo 0x), binário de 8 bits, binário de 32 bits e octal. 255 se imprime como 255, 0xFF, 0b1111 1111, a cadeia de 32 bits com os 24 bits altos a zero, e 0o377. A coluna octal não é enfeite: o trio de permissões de arquivo é octal porque cada dígito é exatamente um grupo de 3 bits de permissão, então 0o755 é a palavra de 9 bits 0b111101101, que é rwxr-xr-x e 493 em decimal. A calculadora de permissões Chmod expande esse trio nas linhas de proprietário, grupo e outros, que é a vista a nível de bit desta coluna.
Máscaras: o trabalho cotidiano do AND
AND com um número pequeno guarda só os bits baixos: 0xFF AND 0x0F = 15, e -1 AND 7 = 7 porque -1 é todos uns. Testar um único flag é valor AND (1 << n): se a resposta não é 0, o bit n está posto. XOR é o próprio inverso, então é um cifrador de uma linha: 65 XOR 42 = 107 e 107 XOR 42 = 65; um byte XOR duas vezes com a mesma chave volta sem mudar. 15 nas três bases compactas é 0b1111, 0o17 e 0xF. As codificações que empacotam bytes em texto, como Base64, se sentam sobre o mesmo grupo de 6 bits desta seção, e o codificador e decodificador Base64 mostra a tabela de correspondência.
Os mesmos 0 e 1 em todo lugar
A matemática bit a bit é a camada pequena sob tudo que conta por bytes. O guia de texto para binário corta os caracteres em grupos de 8 bits à mão; o gerador de hash mistura depois o buffer inteiro com justas estas operações, AND, OR, XOR e rotações, até sair um resumo de 32 bits. Quando a pergunta é em que base ler um valor, comece dos bits: cada base deste site, das caixas de 8 bits daqui até os dígitos octais de permissão, é a mesma palavra de 32 bits com outra notação. A calculadora é onde essa palavra para de ser abstrata: duas entradas, uma operação, cinco maneiras de ler a resposta.