AZ Tools

Conversor de Complemento de Dois (8–64 bits)

Converter

O complemento de dois é como quase todo computador armazena inteiros com sinal: o bit superior é o sinal, e um número negativo é formado invertendo os bits de sua magnitude e somando um. Este conversor pega qualquer inteiro — digitado como decimal, hex (0x), binário (0b) ou octal (0o), positivo ou negativo — ajusta-o a uma largura escolhida de 8, 16, 32 ou 64 bits e mostra o padrão de bits resultante com o bit de sinal destacado. Desse único padrão ele lê tanto o valor com sinal (complemento de dois) quanto o valor sem sinal, junto com hex, octal e o complemento de um. É o jeito rápido de responder perguntas como "o que 0xFF significa como byte com sinal?" (−1) ou "como −128 é armazenado em 8 bits?" (0x80), e de ver como os valores dão a volta ao estourar uma largura. A aritmética BigInt de precisão arbitrária mantém exatos os valores de 64 bits. Tudo roda localmente; nada é enviado.

Prefixe com 0x para hex, 0b para binário, 0o para octal; caso contrário decimal. Um − inicial é permitido.

Padrão de bits

1101 0110

Com sinal (complemento de dois)-42
Sem sinal214
Hex0xd6
Octal0o326
Complemento de um0x29

Complemento de dois: o bit superior é o sinal. O mesmo padrão é lido como um valor com sinal e um sem sinal.

Como usar

  1. Digite um valor em decimal, ou com prefixo 0x / 0b / 0o para hex, binário ou octal.
  2. Escolha a largura de bits (8, 16, 32 ou 64).
  3. Leia os valores com e sem sinal, o padrão de bits, hex/octal e o complemento de um; uma nota aparece se o valor não coube e deu a volta.

Perguntas frequentes

Como um número negativo é representado?
No complemento de dois, você pega o binário do valor absoluto, inverte cada bit (complemento de um) e soma um. Para um −5 de 8 bits: 5 é 00000101, invertido é 11111010, mais um é 11111011 = 0xFB. O bit superior sendo 1 marca-o como negativo. Esta ferramenta faz isso automaticamente para qualquer largura.
Por que 0xFF aparece como 255 e −1?
O mesmo padrão de bits significa números diferentes conforme você o leia sem sinal ou com sinal. Como byte sem sinal, 11111111 é 255; como byte com sinal em complemento de dois, é −1. Hardware e linguagens escolhem uma interpretação por tipo (ex.: uint8 vs int8); esta ferramenta mostra ambas ao mesmo tempo.
O que acontece se meu número não couber na largura?
Ele dá a volta. Um valor fora do intervalo da largura é reduzido módulo 2^largura — o mesmo que a aritmética de inteiros de largura fixa faz no estouro. Por exemplo 300 em 8 bits vira 300 − 256 = 44, e a leitura com sinal segue desse padrão. Uma nota sinaliza quando a volta ocorre.
Complemento de um versus complemento de dois?
O complemento de um é só o NOT bit a bit — cada 0 vira 1 e vice-versa. O complemento de dois é o complemento de um mais um, e é o que as CPUs modernas usam para inteiros com sinal porque tem um único zero e torna a adição uniforme. A ferramenta mostra o complemento de um como referência extra.

Ferramentas relacionadas