Conversão

Calculadora de complemento de dois

Configurações
Reiniciar
Compartilhar resultado
Guardar
Incorporar
Reportar um erro

Compartilhar calculadora

Adicione nossa calculadora gratuita ao seu site

Origem

Por favor, insira uma URL válida. Apenas URLs HTTPS são suportadas.

Estilo

Cor do foco da borda de entrada, cor do interruptor marcado, cor de hover do item selecionado etc.

Avançado

Por favor, concorde com os Termos de Uso.

Vista previa

Salvar calculadora

Configurações da calculadora

Por favor, insira um valor dentro do intervalo permitido.

Por favor, insira um valor dentro do intervalo permitido.

Por favor, insira um valor dentro do intervalo permitido.

Por favor, insira um valor dentro do intervalo permitido.

Compartilhar calculadora

O que é o complemento de dois?

O complemento de dois é a forma padrão pela qual os computadores armazenam inteiros com sinal — números que podem ser positivos ou negativos — usando um número fixo de bits. Em vez de reservar um símbolo separado para o sinal de menos, os números negativos são codificados de modo que a adição binária comum simplesmente funcione, sem nenhum tratamento especial para o sinal. Quase toda CPU moderna representa inteiros dessa maneira.

Esta calculadora recebe um inteiro decimal e uma largura de bits (8, 16 ou 32 bits) e mostra seu padrão em complemento de dois tanto em binário quanto em hexadecimal.

Como funciona?

Para uma largura escolhida de ww bits, cada valor é armazenado como um padrão de bits sem sinal:

  • Se o número nn for não negativo, seu padrão é simplesmente o binário de nn, preenchido com zeros à esquerda até ww bits.
  • Se o número nn for negativo, seu padrão é o binário de 2w+n2^w + n.

Como nn é negativo no segundo caso, 2w+n2^w + n é um valor positivo menor que 2w2^w, portanto sempre cabe em ww bits. O bit mais significativo (mais à esquerda) acaba sendo 11 para todo número negativo e 00 para todo número não negativo — esse bit atua como o sinal.

Fórmula

pattern(n)={nif n02w+nif n<0\text{pattern}(n) = \begin{cases} n & \text{if } n \ge 0 \\ 2^{w} + n & \text{if } n < 0 \end{cases}

O resultado é então escrito com exatamente ww dígitos binários (ou w/4w/4 dígitos hexadecimais).

Exemplos resolvidos

Exemplo 1: um número positivo

Codifique n=5n = 5 em 88 bits. Como 505 \ge 0, o padrão é apenas 55 em binário, preenchido até oito dígitos:

5000001012=0x055 \rightarrow 00000101_2 = \text{0x05}

Exemplo 2: menos um

Codifique n=1n = -1 em 88 bits. Como 1<0-1 < 0, calcule 28+(1)=2561=2552^8 + (-1) = 256 - 1 = 255:

255111111112=0xFF255 \rightarrow 11111111_2 = \text{0xFF}

Menos um é sempre uma sequência ininterrupta de uns, qualquer que seja a largura.

Exemplo 3: menos cinco

Codifique n=5n = -5 em 88 bits. Calcule 28+(5)=2565=2512^8 + (-5) = 256 - 5 = 251:

251111110112=0xFB251 \rightarrow 11111011_2 = \text{0xFB}

Tabela de referência (8 bits)

DecimalBinário em complemento de doisHex
5000001010x05
0000000000x00
-1111111110xFF
-5111110110xFB
127011111110x7F
-128100000000x80

Notas

  • Um inteiro com sinal de 88 bits cobre o intervalo de 128-128 a 127127; 1616 bits cobrem de 32,768-32{,}768 a 32,76732{,}767; 3232 bits cobrem cerca de ±2.1\pm 2.1 bilhões. Valores fora do intervalo escolhido dão a volta em módulo 2w2^w.
  • O bit inicial é o sinal: 00 marca um número não negativo e 11 marca um negativo.
  • Para converter um número comum não negativo em binário sem um bit de sinal, use o conversor de decimal para binário, ou o conversor de sistema numérico geral para outras bases.

Perguntas frequentes

O que é -1 em complemento de dois?

Em qualquer largura são todos uns: 11111111211111111_2 (0xFF) para 8 bits, 111111111111111121111111111111111_2 (0xFFFF) para 16 bits, e assim por diante.

Como obter o complemento de dois de um número negativo à mão?

Escreva o valor absoluto do número em binário, inverta cada bit e some um. Para 5-5 em 8 bits: 55 é 0000010100000101, invertendo dá 1111101011111010, e somando um dá 1111101111111011 — o mesmo resultado que 2565=251256 - 5 = 251.

Por que a largura de bits importa?

A largura fixa quantos bits o padrão ocupa e, portanto, o intervalo de números que você pode armazenar. O mesmo valor decimal produz uma sequência mais longa de zeros ou uns à esquerda à medida que a largura aumenta.

Reportar um erro

Este campo é obrigatório.