Conversor de complemento de dois
-5 em 8 bits é 11111011, o padrão exato que um registrador guarda, e 11111011 volta a dar -5. Valores que não cabem na largura escolhida, como 128 em 8 bits, são recusados em vez de dar a volta. 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
- Valor
- -5
- Modo de cálculo
- To binary
- Nº de bits
- 8
- Binário
- 11111011
- Sem sinal
- 251
- Mín.
- -128
- Máx.
- 127
O complemento de dois é a forma padrão pela qual os computadores modernos armazenam inteiros com sinal em um número fixo de bits. Um valor positivo mantém sua forma binária comum preenchida à esquerda até a largura escolhida; um valor negativo é armazenado como o resíduo modular desse inteiro módulo dois elevado à largura, de modo que o bit mais significativo atua como indicador de sinal sem um campo separado de magnitude e sinal. Este conversor recebe um inteiro com sinal e uma largura de bits (oito, dezesseis ou trinta e dois) e devolve a cadeia de bits exata que um registrador conteria, ou o inverso: um padrão de bits e uma largura viram o valor decimal com sinal. O estouro fora do intervalo legal para essa largura é rejeitado em vez de envolver em silêncio, o que mantém honestas as chaves de exercícios e as notas de firmware.
Como funcionam a codificação e a decodificação em complemento de dois
Fixe uma largura de bits w de pelo menos dois. Os inteiros com sinal que cabem são todos os inteiros de menos dois elevado a w menos um até mais dois elevado a w menos um, menos um. Zero é todos os bits em zero.
Um valor não negativo dentro do intervalo é escrito em dígitos binários ordinários e preenchido com zeros à esquerda até ter exatamente w bits. Um valor negativo n é codificado como o resíduo único de n módulo dois elevado a w nesse mesmo intervalo fechado de padrões: de forma equivalente, inverta cada bit do valor absoluto escrito em w bits e some um, a receita clássica de «inverter e somar um» dos cursos de organização de computadores.
A decodificação inverte o mapa: leia a cadeia de bits como um inteiro sem sinal u entre zero e dois elevado a w menos um; se o bit alto está em zero, o valor com sinal é u; se está em um, é u menos dois elevado a w. Os valores devem permanecer dentro do intervalo de inteiros seguros do JavaScript para que cada dígito seja exato na serialização.
Pedidos que estouram a largura — por exemplo cento e vinte e oito em oito bits — são rejeitados com uma mensagem clara que lista o mínimo e o máximo permitidos, em vez de envolver para um negativo errado em que um aluno poderia confiar por engano.
Casos de uso
Tarefas e laboratórios de organização de computadores
Verifique codificação e decodificação de valores com sinal em larguras de 8/16/32 bits, incluindo estouros, contra um único oráculo compartilhado para gabaritos.
Documentação de firmware e campos de protocolo
Documente campos de registradores com sinal e deltas de sensores como cadeias de bits exatas em complemento de dois ao lado dos valores decimais para revisão e bring-up.
Perguntas frequentes
O que é o complemento de dois?
É a representação modular de inteiros com sinal em uma largura fixa w: não negativos usam binário ordinário; negativos usam (n mod 2^w) de modo que o bit alto marca a metade superior do intervalo sem sinal. Adição e subtração usam então o mesmo circuito da aritmética modular sem sinal.
Qual intervalo cabe em N bits?
O complemento de dois com sinal de largura w guarda inteiros de −2^(w−1) a 2^(w−1)−1. Por exemplo, oito bits guardam −128 a 127; dezesseis bits guardam −32768 a 32767.
O que acontece no estouro?
O conversor não envolve em silêncio, assim respostas erradas de tarefas e bugs ocultos de firmware não são disfarçados.
Posso converter nos dois sentidos?
O ida e volta de um valor legal sempre restaura o mesmo inteiro.
Quanto custa?
A ferramenta do navegador é gratuita e roda localmente.
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/fmt/twos-complement \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"mode":"to_binary","bits":8}'const res = await fetch("https://api.kit.forhosting.com/fmt/twos-complement", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"mode": "to_binary",
"bits": 8
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/fmt/twos-complement",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"mode": "to_binary",
"bits": 8
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/fmt/twos-complement", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"mode":"to_binary","bits":8}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"mode":"to_binary","bits":8}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/fmt/twos-complement", 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
{
"mode": "to_binary",
"bits": 8
}Exemplo de resposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "fmt.twos_complement",
"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.
Limites
min_bits | 2 |
max_bits | 64 |
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
O preço das chamadas API bem-sucedidas é a base publicada de US$ 0,002 por item.
Como funcionam a codificação e a decodificação em complemento de dois
O algoritmo é aritmética inteira modular pura, sem arredondamento em ponto flutuante, sem sementes aleatórias, sem carimbos de tempo nem chamadas de rede, de modo que entradas idênticas sempre produzem o mesmo JSON.
O que você envia e o que recebe de volta
Verificações clássicas: valor menos cinco com oito bits mapeia para um um um um um zero um um, a decodificação inversa desse padrão volta a menos cinco, e quarenta e dois positivo em dezesseis bits como padrão preenchido com zeros. Se você só precisa de decimal para binário sem sinal e sem largura fixa, use outra página em vez de sobrecarregar este contrato de complemento de dois. Envie um mode obrigatório, to_binary ou from_binary, um campo bits obrigatório com a largura da palavra de dois a sessenta e quatro, e um valor com sinal ou uma cadeia de bits conforme o modo. Para to_binary forneça value como inteiro JSON ou cadeia de dígitos com sinal opcional; aceitam-se os aliases n, number, integer e signed. Para from_binary forneça binary como cadeia de zeros e uns de comprimento bits; um prefixo zero-b opcional e espaços internos são removidos. Mode ou bits ausentes, valores não inteiros, caracteres não binários, comprimento incorreto, NaN, Infinity e estouro fora do intervalo de complemento de dois falham com invalid_input e não são cobrados. Em sucesso a resposta ecoa mode e bits, o valor com sinal, o padrão binário exato de comprimento bits, o resíduo sem sinal, o min e max legais da largura, e method igual a twos_complement. O preço das chamadas API bem-sucedidas é a base publicada de US$ 0,002 por item; falhas de validação não consomem saldo pré-pago.
Onde conversores de complemento de dois aparecem no trabalho real
Cursos de ciência da computação e design digital introduzem o complemento de dois quando os alunos conhecem registradores com sinal, flags de ALU e a ideia de que a subtração é adição do inverso modular; um oráculo confiável que devolve o padrão de bits exato e o intervalo legal acelera gabaritos e demos de laboratório sem fórmulas frágeis em planilhas. A documentação de firmware embarcado e de protocolos lista campos de sensores com sinal, deltas de temperatura e correções de offset em palavras de complemento de dois de oito ou dezesseis bits ao lado de seus dumps hex para verificar o bit de sinal de relance. Notas de compiladores e runtimes de linguagens explicam como int8, int16 e int32 se mapeiam em palavras de máquina; tutores comparam o código de empacotamento do aluno com uma cadeia de bits de referência para zero, menos um, o mínimo negativo e o máximo positivo de cada largura. Como esta capacidade é um motor de parse puro, o preço da API é a base publicada de US$ 0,002 por item bem-sucedido e a validação falha não consome saldo. Trate cadeias binárias sem sinal sem largura fixa, dumps só hex e padrões de bits IEEE em ponto flutuante como intenções de busca distintas com suas próprias páginas, em vez de esticar este conversor de largura fixa com sinal além do seu escopo honesto.
Casos de integração
Fixtures de teste para código de empacotamento
Gere padrões de bits golden e checagens de decodificação inversa para testes unitários de serializadores int8/int16 sem contar bits à mão.