ForHosting KIT · Ferramentas para dev

Calcular complemento de dois

Converta nos dois sentidos com largura fixa: -18 em 8 bits é 11101110, e ler 11101110 com 8 bits volta a dar -18, com larguras de 2 a 53 bits e sem estouro silencioso. Grátis no seu navegador.

  • Grátis
  • Funciona no seu navegador
  • Sem cadastro
  • Seus dados não saem do seu aparelho
Use pelo WebAPIE-mailTelegramApp em breve

O complemento de dois é a representação de largura fixa padrão para inteiros com sinal em processadores, formatos de arquivo, registradores e protocolos de rede. Este conversor opera nos dois sentidos: informe um inteiro e uma largura em bits para obter o padrão binário exato, ou forneça um padrão binário e sua largura para recuperar o inteiro com sinal. Cada solicitação é validada, sem ajuste silencioso de valores que não cabem. Assim, o resultado serve para estudo, depuração, documentação e criação de dados de teste automatizados quando um único bit de sinal pode mudar o significado de um campo inteiro.

Escolha a largura antes de converter

Um valor em complemento de dois só tem significado quando sua largura é conhecida. Os mesmos bits finais podem representar valores diferentes quando interpretados como uma palavra de oito, dezesseis ou trinta e dois bits, pois o bit mais à esquerda da largura escolhida funciona como indicador de sinal. Comece selecionando uma largura de 2 a 53 bits e depois escolha o sentido da conversão.

Para converter um inteiro em binário, informe um número inteiro com sinal. O conversor verifica o intervalo válido, que vai de dois elevado a bits menos um, com sinal negativo, até dois elevado a bits menos um, menos um. Portanto, uma palavra de oito bits aceita valores de -128 a 127.

Se o inteiro ficar fora desse intervalo, a solicitação retorna um erro de entrada em vez de descartar bits superiores ou gerar um resultado circular enganoso. Esse comportamento rigoroso ajuda na conferência de definições de registradores, limites de serializadores, exercícios e layouts de dados. Um resultado bem-sucedido sempre contém exatamente a quantidade solicitada de dígitos, inclusive zeros iniciais para valores não negativos e uns iniciais quando necessários em uma representação negativa de largura fixa.

Entenda a codificação e a decodificação

Para um inteiro não negativo, a codificação usa a notação comum em base dois e acrescenta zeros à esquerda até atingir a largura escolhida. Para um inteiro negativo, o conversor soma o valor a dois elevado à largura e escreve esse resíduo não negativo em binário. Essa definição modular equivale ao procedimento manual conhecido de inverter todos os bits da magnitude positiva e somar um, mas evita casos especiais e apresenta a matemática diretamente.

A decodificação inverte a regra. Primeiro, o conversor lê a sequência de bits como uma quantidade sem sinal. Quando o bit inicial é zero, essa quantidade já é a resposta com sinal.

Quando ele é um, o conversor subtrai dois elevado à largura para recuperar o valor negativo. A entrada binária deve conter somente zeros e uns e ter exatamente o número declarado de caracteres. A largura nunca é presumida, nenhum preenchimento é inserido durante a decodificação e dígitos extras jamais são cortados.

Essas escolhas tornam a ida e volta previsível: cada inteiro aceito produz um único padrão exato, e decodificar esse padrão com a mesma largura restaura o inteiro original.

Use representações exatas em fluxos reais

Esta capacidade é útil sempre que um valor decimal legível precisa ser comparado a um campo assinado de baixo nível. Profissionais de firmware podem conferir diferenças de sensores, registradores de estado e exemplos de protocolos antes de incluí-los na documentação. Quem desenvolve aplicações pode gerar dados de referência para empacotamento de bytes com sinal, confirmar o comportamento nos limites e descobrir se um valor sem sinal inesperadamente alto é, na verdade, um número negativo em complemento de dois.

Estudantes podem verificar seus cálculos vendo o padrão exato de largura fixa, em vez de um binário abreviado que esconde a extensão de sinal. O cálculo é determinístico, local ao processo de análise, e não utiliza modelo, serviço externo, fonte aleatória nem relógio. Mantenha a largura declarada coerente com o formato de armazenamento analisado.

Se um protocolo definir um campo de doze bits, decodifique todos os doze dígitos, incluindo zeros ou uns iniciais.

Conferir valores de registradores com sinal

Converta limites e exemplos decimais documentados em padrões de bits com largura exata para revisar firmware e hardware.

Criar dados de teste para serializadores

Gere resultados binários estáveis para valores positivos, negativos, mínimos, máximos e zero.

Decodificar capturas de protocolos

Interprete um campo binário de largura fixa como o inteiro com sinal definido pela especificação de um protocolo.

Qual intervalo cabe em determinada largura?

Uma largura de w bits armazena inteiros com sinal de -2^(w-1) até 2^(w-1)-1.

O que acontece quando um inteiro não cabe?

O valor nunca sofre ajuste circular nem truncamento.

Por que a entrada binária deve coincidir exatamente com a largura?

O bit inicial nessa largura determina o sinal; portanto, presumir ou preencher silenciosamente a largura poderia alterar o resultado.

Como um número negativo é codificado?

O valor é somado a dois elevado à largura e o resultado é escrito em binário. Isso equivale a inverter todos os bits do número positivo e somar um, e é por isso que -18 em 8 bits vira 11101110.

Como transformo um padrão de bits de volta em número?

Primeiro os bits são lidos como um número sem sinal. Se o bit da esquerda for zero, essa já é a resposta; se for um, subtrai-se dois elevado à largura, então 11101110 com 8 bits dá -18.

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.

POSThttps://api.kit.forhosting.com/dev2/two-complement-convert

Autenticação por token Bearer. Um único POST coloca a tarefa na fila; o resultado chega por webhook ou link assinado.

curl -X POST https://api.kit.forhosting.com/dev2/two-complement-convert \
  -H "Authorization: Bearer $KIT_KEY" \
  -H "Content-Type: application/json" \
  -d '{"mode":"integer_to_binary","bits":8,"integer":-18,"binary":"11101110"}'
{
  "mode": "integer_to_binary",
  "bits": 8,
  "integer": -18,
  "binary": "11101110"
}
{
  "task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
  "type": "dev2.two_complement_convert",
  "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.

por chamadaUS$ 0,002

Preço publicado, sem tokens nem créditos escondidos. Tarefa que falha não é cobrada.

min_bits2
max_bits53
HTTPCódigoO que significa
401unauthorizedToken ausente ou inválido. Confira o header Authorization.
402insufficient_balanceSaldo insuficiente para esta tarefa. Faça uma recarga e tente de novo.
404unknown_typeEsse tipo de tarefa não existe. Confira o campo type no catálogo.
429rate_limitedMuitas requisições em pouco tempo. Espere um instante e tente de novo.

Use representações exatas em fluxos reais

Para automatizar, envie o modo, a largura e o campo inteiro ou binário correspondente pela API; cada item bem-sucedido usa o preço-base publicado de US$ 0,002.

É possível converter nos dois sentidos?

Sim. Use integer_to_binary para codificar um inteiro com sinal e binary_to_integer para decodificar um padrão de largura fixa.

Quanto custa uma solicitação API?

Cada item bem-sucedido da API usa o preço-base publicado de US$ 0,002. Entradas inválidas são rejeitadas antes da geração de um resultado.

Ver a documentação completa do KIT →