O que fazem AND, OR, XOR e NOT, na prática?
Resposta curtaAND devolve 1 só quando ambos os bits são 1; OR devolve 1 quando pelo menos um dos bits é 1; XOR devolve 1 quando os bits são diferentes; NOT simplesmente inverte cada bit (0↔1). Estas operações trabalham bit a bit, comparando as duas sequências binárias posição por posição.
Estas quatro operações são a base de quase tudo o que um processador faz com números — desde testar permissões até comprimir dados. Um cenário comum, hipotético, é este: um sistema de permissões guarda três "flags" (ler, escrever, executar) num único número, cada uma associada a um bit. Para verificar se a flag de "escrever" está ativa, usa-se AND com uma máscara que tem apenas esse bit a 1; o resultado só será diferente de zero se a flag estiver realmente ligada.
1010 AND 0110 = 0010 · 1010 OR 0110 = 1110 · 1010 XOR 0110 = 1100 · NOT 1010 (em 4 bits) = 0101
No separador "Bits clicáveis" do conversor de base numérica, o painel de operações bit a bit calcula estes quatro resultados (mais os deslocamentos) para dois valores decimais à tua escolha, mostrando a grelha de bits resultante em tempo real — útil para confirmar o resultado de uma máscara antes de a usares num programa.
Deslocamentos de bits: porque é que "vezes 2" às vezes não bate certo
Resposta curtaUm deslocamento à esquerda (<<) move todos os bits uma posição para a esquerda, o que equivale matematicamente a multiplicar por 2 (por posição deslocada); um deslocamento à direita (>>) equivale a dividir por 2, descartando o resto. O resultado só corresponde à conta esperada se couber na largura de bits definida.
Um erro frequente de quem está a aprender é assumir que um deslocamento à esquerda "sempre" duplica o valor exato, esquecendo que a largura de bits é fixa. Por exemplo (hipotético): num registo de 8 bits, o valor 200 deslocado uma posição à esquerda deveria "matematicamente" dar 400 — mas 400 não cabe em 8 bits (o máximo sem sinal é 255), por isso o bit que ultrapassa a largura é descartado, e o resultado real é diferente do esperado. Isto chama-se overflow, e é uma das causas mais comuns de bugs subtis em código que manipula bits diretamente.
Nota: os valores acima (200, 400) são apenas um exemplo didático de overflow, não uma medição de nenhum sistema real.
Largura de bits fixa: quanto cabe em 8, 16, 32 ou 64 bits?
Resposta curtaSem sinal, uma largura de n bits vai de 0 a 2ⁿ-1. Com sinal (complemento de dois), o intervalo desloca-se para incluir metade de valores negativos. Escolher a largura errada para o teu caso de uso é uma causa comum de resultados "estranhos" ao testar código de baixo nível.
| Largura | Sem sinal (mín–máx) | Com sinal (mín–máx) |
|---|---|---|
| 8 bits | 0 – 255 | -128 – 127 |
| 16 bits | 0 – 65 535 | -32 768 – 32 767 |
| 32 bits | 0 – 4 294 967 295 | -2 147 483 648 – 2 147 483 647 |
| 64 bits | 0 – 18 446 744 073 709 551 615 | ~-9,22×10¹⁸ – ~9,22×10¹⁸ |
É por isto que o separador "Bits clicáveis" do conversor deixa escolher a largura (8/16/32/64 bits) antes de mostrar o valor sem sinal e o valor com sinal (complemento de dois): o mesmo padrão de bits pode representar números completamente diferentes consoante a largura e a interpretação escolhidas. Testar isto na ferramenta, com o teu próprio número, é mais fiável do que fazer a conta de cabeça.
Como converter texto em código ASCII/byte (e voltar atrás)?
Resposta curtaCada carácter tem um código numérico associado (ASCII para letras/números/pontuação básica em inglês, ou um ponto de código Unicode mais amplo para acentos e outros símbolos). Converter texto em código traduz cada carácter para esse número, na base escolhida; converter código em texto faz o percurso inverso.
Este processo é a base de como qualquer ficheiro de texto é guardado em disco: não existem "letras" dentro de um computador, apenas números interpretados como letras segundo uma tabela de correspondência. No separador "Texto ↔ Bytes" do conversor, é possível escrever uma palavra e ver imediatamente os códigos correspondentes em decimal, hexadecimal ou qualquer outra base, ou fazer o percurso inverso — colar uma sequência de códigos separados por espaços e obter o texto de volta.
Cenário hipotético e prático: um estudante de informática que precisa de confirmar, para um exercício, qual é o código decimal ou hexadecimal de um conjunto de caracteres pode usar este separador em vez de consultar uma tabela ASCII impressa.
Testa as operações bit a bit, os deslocamentos, a largura de bits e a conversão texto ↔ código diretamente na ferramenta gratuita do ToolPico.
Experimentar a ferramenta →