ForHosting KIT · Matemática

Complemento de dois

Em 8 bits, −5 vira 11111011 e +5 vira 00000101. Digite um inteiro com sinal e uma largura de palavra de 2 a 64 bits e receba o padrão exato em complemento de dois; valores que não cabem são recusados, nunca dão a volta. 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
Se você digitar
Valor
-5
Bits
8
Você obtém
Binário
11111011
Sem sinal
251
Min
-128
Max
127

O complemento de dois é a representação que os processadores atuais usam para inteiros com sinal: uma cadeia de bits de largura fixa cujo bit mais alto é o sinal e cujos bits restantes completam uma codificação modular do valor. Esta calculadora de complemento de dois aceita um inteiro com sinal e uma largura de bits e devolve a palavra binária exata para essa largura. Valores não negativos viram os bits de magnitude habituais, preenchidos com zeros à esquerda. Valores negativos viram o resíduo do inteiro módulo dois elevado à largura, a construção clássica de inverter e somar um ensinada em todo curso de organização de computadores.

O que o complemento de dois significa e como os bits são produzidos

O complemento de dois é a representação que quase toda CPU usa para inteiros com sinal. Para uma palavra de largura w bits o intervalo representável é o intervalo fechado que vai de menos dois elevado a w menos um até dois elevado a w menos um, menos um. O bit mais significativo é o bit de sinal: zero significa um valor não negativo guardado como o binário sem sinal ordinário dessa magnitude, preenchido à esquerda com zeros até exatamente w caracteres.

Um um no bit de sinal significa um valor negativo. Codificar um inteiro negativo n é o mesmo que tomar o resíduo matemático de n módulo dois elevado a w: inverter cada bit da magnitude positiva e somar um, e conservar exatamente w bits. Essa visão modular explica por que subtrair um de zero produz uma cadeia de uns, que se decodifica como menos um, e por que o valor mais negativo em w bits é um um seguido de w menos um zeros.

Esta calculadora aplica essa identidade com aritmética modular BigInt para que cada bit seja exato em larguras de dois a sessenta e quatro. Ela não envolve valores que estouram como faria um registrador de hardware: se o inteiro com sinal não pode viver na largura escolhida, o pedido falha em vez de produzir em silêncio uma palavra que pertence a outro inteiro.

Assim, o alunado pode conferir tarefas contra uma definição que coincide com manuais, e a automação pode confiar que um resultado de sucesso é uma codificação legal para a largura declarada. Cinco positivo em oito bits é 00000101; cinco negativo em oito bits é 11111011; zero é uma cadeia de zeros; menos um é uma cadeia de uns. Esses quatro marcos bastam para verificar qualquer largura posterior pela mesma regra modular.

Onde um codificador de complemento de dois justifica o uso

As salas de aula usam uma calculadora de complemento de dois para que o alunado converta valores com sinal das tarefas em palavras de oito e dezesseis bits sem inverter à mão um bit de sinal e esquecer o passo de somar um que distingue o complemento de dois do complemento de um.

Geradores de prova precisam de um oráculo determinístico que rejeite cento e vinte e oito em oito bits como estouro em vez de envolvê-lo para menos cento e vinte e oito, porque o envelopamento é um comportamento de hardware que o estudante deve reconhecer como distinto de uma codificação legal do inteiro original.

Revisões de firmware embarcado costumam exigir uma conferência rápida de que uma constante documentada cabe de verdade na largura de campo anunciada antes de empacotá-la em um registrador, uma palavra de protocolo ou um bitfield de uma folha de dados. Quem projeta protocolos compara a palavra devolvida com um dump de pacote quando um campo com sinal é transmitido bit mais significativo primeiro.

Mantenha os pedidos pequenos, afirme o campo binary nos testes e você obtém palavras de complemento de dois reproduzíveis para tarefas, laboratórios e workers de borda sem montar uma cadeia de montagem própria.

Conferências de sala e tarefas

Converta valores com sinal da folha de exercícios em palavras de complemento de dois de oito ou dezesseis bits e confirme o resultado de inverter e somar um sem uma tabela de bits desenhada à mão.

Revisões de firmware e protocolos

Confira se uma constante com sinal documentada cabe de verdade na largura de campo anunciada antes de empacotá-la em um registrador ou em um formato de fio.

O que acontece se o inteiro não cabe na largura de bits?

O extremo não envolve. Em oito bits o intervalo legal é −128 a 127, de modo que 128 é um erro e não o padrão de bits de −128.

Como um valor negativo é codificado?

Como o resíduo não negativo do inteiro módulo 2^w, o que equivale a inverter os bits de magnitude e somar um. Menos cinco em oito bits é 11111011.

Quais larguras de bits são aceitas?

Qualquer largura inteira de 2 a 64. As larguras habituais de ensino e firmware são 8, 16, 32 e 64, desde que o valor permaneça no intervalo de inteiros seguros do JavaScript.

Como converto um inteiro com sinal para complemento de dois?

Se ele for positivo, escreva em binário e complete com zeros à esquerda até a largura escolhida. Se for negativo, inverta os bits do valor positivo e some um: assim −5 fica 11111011 em 8 bits.

Qual é a diferença entre complemento de um e complemento de dois?

O complemento de um apenas inverte cada bit do valor positivo; o complemento de dois inverte e depois soma um. Esse passo extra é o que transforma −5 em 11111011 em 8 bits e faz −1 virar uma fileira de uns.

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/math/twos-complement

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/math/twos-complement \
  -H "Authorization: Bearer $KIT_KEY" \
  -H "Content-Type: application/json" \
  -d '{"value":-5,"bits":8}'
{
  "value": -5,
  "bits": 8
}
{
  "task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
  "type": "math.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.

por chamadaUS$ 0,002

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

min_bits2
max_bits64
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.

Se o inteiro não cabe no intervalo com sinal da largura escolhida, a tarefa falha com invalid_input em vez de envolver em silêncio. Chamadas API bem-sucedidas custam US$ 0,002; entrada inválida não é cobrada.

Contrato de entrada, intervalo legal e como o estouro é informado

O campo value é o inteiro com sinal a codificar. Frações, notação científica, cadeias vazias, Infinity e NaN são rejeitados, para que uma célula de planilha defeituosa não vire um padrão de bits errado. O campo bits é a largura da palavra como inteiro de dois a sessenta e quatro inclusive, o que cobre as larguras didáticas habituais int8, int16, int32 e int64 e continua barato de calcular. Campos ausentes, não inteiros e um bits fora de dois a sessenta e quatro falham do mesmo modo e não são cobrados. O contrato é deliberadamente fail-closed: envolver 128 em 10000000 seria uma codificação correta de menos cento e vinte e oito, não de cento e vinte e oito, e este extremo recusa-se a turvar essa distinção. Envie um objeto JSON com dois campos obrigatórios. Pode ser um número JSON ou uma cadeia de dígitos decimais com sinal mais ou menos opcional. O valor absoluto deve permanecer no intervalo de inteiros seguros do JavaScript, de modo que o value ecoado continue um número JSON exato. Aceitam-se os aliases n, integer e number para value; aceitam-se width, bit_width e nbits para bits. Em sucesso a resposta ecoa value e bits, devolve binary como uma cadeia de exatamente bits caracteres zero ou um, devolve unsigned como esse mesmo padrão interpretado como inteiro não negativo, e devolve min e max para exibir o intervalo legal ao lado da resposta. Exemplo: value igual a menos cinco e bits igual a oito produzem binary 11111011, unsigned duzentos e cinquenta e um, min menos cento e vinte e oito e max cento e vinte e sete. Se value ficar fora desse intervalo, o tratador lança invalid_input e nomeia o estouro, por exemplo ao informar que cento e vinte e oito não cabe em complemento de dois de oito bits.

Onde um codificador de complemento de dois justifica o uso

Chamadas API bem-sucedidas custam o US$ 0,002 publicado; falhas de validação não consomem saldo; nada é armazenado após a resposta.

Correção automática de provas e LMS

Avalie itens de complemento de dois com um oráculo determinístico que rejeita o estouro como invalid_input em vez de envolver o inteiro em outro valor.

Como se converte um inteiro com sinal em binário de complemento de dois?

Envie o inteiro como value e a largura da palavra como bits (2–64). A API devolve uma cadeia binária com exatamente esses caracteres 0/1, mais a magnitude sem sinal e o intervalo com sinal legal.

Quanto custa a calculadora de complemento de dois?

A ferramenta do navegador é gratuita. Pedidos API usam saldo pré-pago KIT a US$ 0,002 por chamada bem-sucedida; entrada inválida não é cobrada.

Ver a documentação completa do KIT →