Calculadora bit a bit
60 AND 13 dá 12, 60 OR 13 dá 61 e 60 XOR 13 dá 49. Combine dois inteiros de 32 bits com AND, OR, XOR ou um deslocamento e receba exatamente o que C, Java ou JavaScript calculariam, com os dois números à vista. Grátis no seu navegador.
- Grátis
- Funciona no seu navegador
- Sem cadastro
- Seus dados não saem do seu aparelho
Executar grátis
Exemplo resolvido
- A
- 60
- B
- 13
- Op
- Xor
- Resultado
- 49
Ela segue a mesma semântica de complemento de dois usada por C, Java e JavaScript, então o número que você recebe corresponde ao que o seu próprio código calcularia, sem arredondamento de ponto flutuante e sem surpresas. Os dois operandos são devolvidos junto ao resultado, e qualquer valor que não seja um inteiro genuíno de 32 bits é rejeitado com um erro claro e sem cobrança, em vez de ser truncado silenciosamente.
O que uma operação bit a bit realmente faz
Uma calculadora bitwise trabalha com a representação binária dos inteiros, e não com o valor decimal. Quando você calcula 60 AND 13, a máquina alinha os bits dos dois números — 111100 e 001101 — e mantém um 1 apenas onde ambos os operandos têm um 1, produzindo 12. OR mantém um 1 onde qualquer um dos dois tiver um, dando 61, e XOR mantém um 1 apenas onde os bits diferem, dando 49.
Essas três operações são a base de campos de flags, máscaras de permissão, sub-redes, funções de hash e formatos de compressão. Como o resultado depende apenas dos dois operandos, um cálculo bit a bit é totalmente determinístico: o mesmo par de inteiros sempre produz a mesma resposta, em qualquer máquina e em qualquer linguagem que use inteiros de 32 bits em complemento de dois.
Deslocamentos, bit de sinal e a semântica de 32 bits
Os deslocamentos movem todos os bits do primeiro operando para a esquerda ou para a direita conforme a quantidade indicada no segundo. Um deslocamento à esquerda de n posições multiplica por dois elevado a n, descartando os bits que saem pelo topo; é o caminho rápido clássico para potências de dois pequenas. O deslocamento à direita vem em dois sabores, e a diferença importa.
O deslocamento aritmético, shr, copia o bit de sinal para as posições liberadas, então um número negativo continua negativo: menos oito deslocado uma posição à direita é menos quatro. O deslocamento lógico, ushr, insere zeros em vez disso, o que reinterpreta o valor como sem sinal e é o que você quer ao extrair campos de bits de uma palavra compactada. Seguindo a convenção de JavaScript e Java, apenas os cinco bits baixos da quantidade de deslocamento são usados, então deslocar 33 é o mesmo que deslocar 1.
Os dois operandos são validados como inteiros genuínos de 32 bits antes de qualquer bit ser tocado, e entradas fora do intervalo ou não inteiras são rejeitadas em vez de truncadas sem aviso.
Como usar na prática
A requisição tem três campos: dois inteiros, a e b, e a operação op, que pode ser and, or, xor, shl, shr ou ushr. A resposta repete a operação e os dois operandos junto ao resultado inteiro, então você pode guardá-la ou registrá-la sem reconstruir a chamada. Não há estado entre requisições e nada é armazenado, então as mesmas entradas sempre retornam o mesmo resultado e seus dados nunca ficam em um servidor.
Casos de uso
Decodificar flags compactados e máscaras de permissão
Verifique se um bit está ativo, limpe um flag ou combine bits de permissão de um campo de papéis com AND, OR e XOR sem escrever um script improvisado.
Conferir a aritmética de deslocamentos entre linguagens
Confirme o que um deslocamento à direita com sinal ou um lógico produz antes de portar código de baixo nível, para que um erro de sinal nunca chegue à produção.
Perguntas frequentes
Quanto custa?
Também é grátis executar no seu navegador nesta página, com exatamente o mesmo código.
Quais operações são suportadas?
AND, OR, XOR, deslocamento à esquerda (shl), deslocamento aritmético à direita (shr) e deslocamento lógico à direita (ushr).
Quais intervalos de entrada são aceitos?
Os dois operandos devem ser inteiros no intervalo com sinal de 32 bits, de -2147483648 a 2147483647.
Como os números negativos são tratados nos deslocamentos?
shr copia o bit de sinal, então valores negativos continuam negativos; ushr preenche com zeros, tratando o valor como sem sinal. Ambos seguem a semântica de complemento de dois de 32 bits.
O que acontece se eu deslocar mais de 31 posições?
Apenas os cinco bits baixos da quantidade de deslocamento são usados, como em JavaScript e Java: deslocar 33 é o mesmo que deslocar 1.
Algo é armazenado?
Não. Cada requisição é calculada e descartada; não há estado entre chamadas.
Ferramentas relacionadas
Para desenvolvedores — acesso via API
Tudo nesta página está disponível via API. Esta seção é para equipes que querem integrar a ferramenta aos próprios sistemas; quem não precisa disso pode simplesmente usar a ferramenta acima.
Endpoint
Autenticação por token Bearer. Um único POST coloca a tarefa na fila; o resultado chega por webhook ou link assinado.
Chame do seu código
curl -X POST https://api.kit.forhosting.com/math/bitwise \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"a":60,"b":13}'const res = await fetch("https://api.kit.forhosting.com/math/bitwise", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"a": 60,
"b": 13
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/math/bitwise",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"a": 60,
"b": 13
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/math/bitwise", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"a":60,"b":13}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"a":60,"b":13}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/math/bitwise", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Exemplo de requisição
{
"a": 60,
"b": 13
}Exemplo de resposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "math.bitwise",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}A API é assíncrona: cada chamada devolve um task_id na hora. Se preferir polling, consulte o status a até 1 requisição por segundo.
Preço
Preço publicado, sem tokens nem créditos escondidos. Tarefa que falha não é cobrada.
Erros
| HTTP | Código | O que significa |
|---|---|---|
401 | unauthorized | Token ausente ou inválido. Confira o header Authorization. |
402 | insufficient_balance | Saldo insuficiente para esta tarefa. Faça uma recarga e tente de novo. |
404 | unknown_type | Esse tipo de tarefa não existe. Confira o campo type no catálogo. |
429 | rate_limited | Muitas requisições em pouco tempo. Espere um instante e tente de novo. |
Notas técnicas
A API da calculadora bitwise aplica uma operação bit a bit — AND, OR, XOR, deslocamento à esquerda, deslocamento aritmético à direita ou deslocamento lógico à direita — sobre dois inteiros de 32 bits e devolve o resultado inteiro exato.
O que uma operação bit a bit realmente faz
Esse é exatamente o contrato deste endpoint: você envia dois inteiros e o nome de uma operação, e recebe o mesmo inteiro que o seu código calcularia, com os dois operandos repetidos para que a resposta seja autodescritiva em um log ou em uma trilha de auditoria.
Como usar o endpoint na prática
O mesmo código que roda no nosso edge roda de graça no seu navegador nesta página, o que significa que você pode prototipar uma máscara ou conferir um deslocamento manualmente e só pagar quando automatizar a chamada: US$ 0,002 por requisição via API. Se algum operando estiver faltando, não for um inteiro ou estiver fora do intervalo com sinal de 32 bits, o endpoint responde com um erro invalid_input e a chamada não é cobrada, o que torna seguro ligá-lo diretamente a um pipeline que ingere dados não confiáveis.
Casos de integração
Ensinar e depurar representações binárias
Mostre a estudantes ou colegas exatamente como dois inteiros se combinam bit a bit, com o mesmo resultado no navegador e na API.