Calculadora de rotação de bits à esquerda e à direita
Esta calculadora faz a rotação circular para a esquerda ou direita em um inteiro sem sinal de largura fixa.
Executar grátis
Os bits que saem por uma extremidade reaparecem imediatamente na outra, como ocorre em registradores de deslocamento, primitivas criptográficas, somas de verificação, sistemas embarcados e formatos de baixo nível. Informe um valor decimal, hexadecimal ou binário, escolha a largura e a direção e defina uma contagem não negativa. A calculadora preserva as posições de zero à esquerda e apresenta resultados exatos em decimal, binário de largura fixa e hexadecimal preenchido.
Escolha o valor e a largura exata do registrador
Uma rotação só tem significado quando a largura em bits é conhecida. O mesmo valor numérico pode gerar resultados diferentes em registradores de 8 e 16 bits, pois cada largura posiciona o limite de retorno em um ponto distinto. Informe o valor sem sinal em notação decimal comum ou use o prefixo 0x para hexadecimal e 0b para binário. Depois, escolha uma largura de 1 a 4096 bits. O valor precisa caber integralmente nela; a rejeição de valores grandes demais impede que um truncamento implícito esconda informações. As posições de zero à esquerda fazem parte do registrador mesmo quando não aparecem na entrada. Por exemplo, o decimal 5 com largura 8 é tratado como 00000101, e não apenas 101. O campo binário retornado sempre é preenchido até a largura escolhida, enquanto o hexadecimal recebe dígitos completos suficientes para representá-la. Essa exibição explícita permite comparar facilmente o resultado com um diagrama de registrador, campo de protocolo, depurador ou implementação em uma linguagem de programação.
Entenda o movimento circular para ambos os lados
A rotação circular difere do deslocamento lógico comum porque nenhum bit é descartado e nenhum zero novo é inserido. Na rotação para a esquerda, os bits avançam em direção à extremidade mais significativa; aqueles que atravessam o limite retornam às posições menos significativas. Na rotação para a direita, o movimento se inverte, e os bits que saem pela extremidade menos significativa reaparecem na mais significativa. A calculadora aplica a operação ao padrão completo de largura fixa em um cálculo inteiro exato. Uma contagem igual à largura devolve o padrão original, assim como qualquer múltiplo inteiro dela. Por isso, a contagem enviada é reduzida módulo a largura, e a contagem efetiva aparece como normalized_shift no resultado. Isso ajuda a conferir códigos que aceitam contagens irrestritas ou a modelar hardware cujo seletor necessita apenas de um estado para cada posição do registrador. Uma contagem efetiva igual a zero é tratada diretamente e preserva o valor sem tentar um deslocamento inválido de largura completa.
Leia a saída e valide uma implementação
A resposta mantém o valor original em formato decimal normalizado, a largura escolhida, a contagem solicitada, a contagem efetiva e a direção. Em seguida, mostra o valor rotacionado em decimal, binário de largura fixa e hexadecimal em maiúsculas. Essas formas equivalentes atendem a verificações diferentes: o binário expõe cada bit retornado, o hexadecimal corresponde de maneira compacta a registradores e documentação técnica, e o decimal é conveniente para API ou casos de teste que evitam literais prefixados. Para testar uma implementação, use um padrão com bits ativos perto das duas extremidades, tornando qualquer deslocamento incorreto evidente. Teste também contagem zero, contagem igual à largura e contagem maior que ela. Esses casos revelam erros comuns de redução modular e de regras específicas da linguagem. O algoritmo usa aritmética inteira de precisão arbitrária, em vez dos operadores JavaScript de 32 bits; portanto, larguras superiores não sofrem conversão com sinal nem mascaramento silencioso. O processamento é determinístico, local e limitado, sem rede ou estado aleatório ou temporal.
Casos de uso
Confira a lógica de registradores embarcados
Compare a saída do firmware com um padrão binário exato de largura fixa antes de escrever ou revisar o código do dispositivo.
Valide etapas criptográficas
Confirme rotações circulares usadas em funções hash, cifras e operações de mistura sem surpresas da aritmética de 32 bits com sinal.
Monte vetores de teste de protocolos
Gere valores esperados decimais, binários e hexadecimais para campos cujos bits retornam dentro de uma largura definida.
Perguntas frequentes
Qual é a diferença entre rotacionar e deslocar bits?
O deslocamento lógico descarta bits em uma extremidade e insere zeros na outra. A rotação conduz esses bits à extremidade oposta, mantendo todos no padrão de largura fixa.
O que acontece quando a contagem supera a largura?
A contagem é reduzida módulo a largura. A resposta mostra o deslocamento solicitado e o deslocamento efetivo normalizado.
Posso informar valores hexadecimais ou binários?
Sim. Use 0x antes do valor hexadecimal e 0b antes do binário. Uma entrada sem prefixo é interpretada como decimal.
Por que o valor precisa caber na largura escolhida?
O truncamento automático poderia remover bits altos silenciosamente e gerar um resultado enganoso. A calculadora rejeita o valor para que você corrija explicitamente o valor ou a largura.
Quanto custa uma solicitação de API?
Cada solicitação de API custa US$ 0,002. A versão no navegador executa localmente o mesmo cálculo determinístico.
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/elec/rotate-bits \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"value":"150","width":8,"shift":3,"direction":"left"}'const res = await fetch("https://api.kit.forhosting.com/elec/rotate-bits", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"value": "150",
"width": 8,
"shift": 3,
"direction": "left"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/elec/rotate-bits",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"value": "150",
"width": 8,
"shift": 3,
"direction": "left"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/elec/rotate-bits", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"value":"150","width":8,"shift":3,"direction":"left"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"value":"150","width":8,"shift":3,"direction":"left"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/elec/rotate-bits", 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
{
"value": "150",
"width": 8,
"shift": 3,
"direction": "left"
}Exemplo de resposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "elec.rotate_bits",
"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. |