Calculadora de complemento para dois

Esta é uma calculadora de complemento para dois. Codifique um inteiro com sinal ou leia hex/binário como com sinal. −1 a 8 bits é 0xFF. −52 é 0xCC. O mesmo byte 0xFF vale 255 sem sinal.

Clique num bit para o inverter. O da esquerda (anel dourado) é o bit de sinal.

Clique num valor para copiar

Preencher, inverter, somar 1

Soma / subtração em complemento para dois (A e B em decimal com sinal)

Exemplos — clique numa amostra

O mesmo padrão de 4 bits em sem sinal, sinal-magnitude, complemento para um e complemento para dois — clique numa linha para o carregar

Binary Sem sinal Sinal-magnitude Complemento para um Two's
00000000
01015555
01117777
10008−0−7−8
101010−2−5−6
111115−7−0−1

Esta é uma calculadora de complemento para dois

Codifica um inteiro com sinal em complemento para dois, ou lê um padrão hex/binário como com sinal. Larguras: Auto, 4, 8, 12, 16, 32 e 64. −1 a 8 bits é 0xFF; −52 é 0xCC; 20 é 0x14. Leitura sem sinal dos mesmos bits: 0xFF é 255. HEX, Binary, Decimal não se traduzem. Não é a calculadora bitwise HEX nem a calculadora HEX sem sinal.

Como usar

  1. Escolha Decimal / Hex / Binary e a largura. O decimal escreve o complemento para dois. Hex e Binary preenchem com zeros e depois leem o valor com sinal. Auto escolhe a menor largura que cabe.
  2. A grelha é o padrão. O bit da esquerda (anel dourado) é o de sinal; clique para o inverter. Os cartões mostram hex, decimal com sinal, sem sinal, complemento para um e a negação inverter+1.
  3. Um decimal negativo: preencher a magnitude, inverter, somar 1. −52 a 8 bits: 0011 0100 → 1100 1011 → 1100 1100 (0xCC). Os positivos não invertem.
  4. A e B são decimais com sinal à mesma largura. A+B e A−B envolvem módulo 2^N; overflow se a soma matemática não cabe. Mostrar exemplo é −1 a 8 bits → 0xFF. Outros chips: −52, 20, 0xFF, 0x80 (−128) e 1010 a 4 bits (−6).
  5. A tabela de 4 bits compara sem sinal, sinal-magnitude, complemento para um e complemento para dois. Clique numa linha para carregar o padrão.

Notas

O padrão é TC = (2^N + X) mod 2^N. O intervalo com sinal de 8 bits é −128…127; o de 4 bits −8…7. Hex/binário mais curto do que a largura preenche com zeros, sem extensão de sinal. Negar 0x80 a 8 bits continua 0x80: não existe +128. Relacionado: IEEE 754, conversor endian.

Onde usar

  • Ler um byte com sinal num dump: 0xFF como signed char é −1; unsigned é 255.
  • Confirmar inverter-mais-um, ou porque A−B é A mais o complemento para dois de B.

Perguntas

Porque é que −128 não se nega a 8 bits?

O intervalo é assimétrico. Inverter 1000 0000 e somar 1 volta a 1000 0000. O +128 matemático não cabe.

0xFF é −1 ou 255?

Depende da leitura. Esta página mostra o valor com sinal em complemento para dois e a leitura sem sinal dos mesmos bits.

O que é o complemento para um aqui?

Cada bit do padrão atual invertido, sem +1. O complemento para dois de um negativo inverte a magnitude e soma 1.