Conversor de base numérica e complemento de dois

Seus dados

Um 0b, 0o ou 0x na frente é aceito e ignorado, e espaços e sublinhados entre os dígitos também.

Resultados

Quanto esses bits valem, lidos do jeito que você escolheu

Os mesmíssimos bits, lidos do outro jeito
Em binário
Em hexadecimal
Em octal
Tudo o que cabe nesta largura

Negando esse número, passo a passo

Comece pelos bits
Inverta todos eles
Some um, e esse é o negativo
O que dá

Inverter os bits e somar um é a mesma coisa que subtrair de dois elevado à largura, e isso foi conferido nos duzentos e cinquenta e seis padrões de oito bits. Fazer duas vezes sempre devolve o que se começou, que é a propriedade que faz o esquema inteiro funcionar.

Esta página conta em números inteiros de qualquer tamanho, e não no ponto flutuante de sempre, porque a partir de uns nove quatrilhões o tipo comum começa a pular valores: dois elevado a cinquenta e três mais um sai como dois elevado a cinquenta e três. Em sessenta e quatro bits isso daria respostas erradas caladamente.

Reações

0

0 Comentários

User profile image

Seja o primeiro a comentar

Por que 200 sai como menos 56?

Porque 200 e menos 56 são os mesmos oito bits: 11001000. Nada nesses bits diz qual dos dois você quis dizer. A largura e a leitura são decididas em outro lugar, por quem escreveu o programa, e os bits servem às duas respostas.

A diferença inteira é o bit mais à esquerda. Enquanto ele está desligado, as duas leituras coincidem exatamente — e é por isso que o desencontro fica invisível até um valor passar da metade.

Por que a faixa vai de menos 128 a 127 e não de menos 127 a 127?

Porque o zero tem de morar em algum lugar, e mora do lado positivo. Oito bits dão 256 padrões diferentes; um deles é gasto com o zero, sobrando 255 para dividir. A divisão fica em 127 positivos e 128 negativos, então o lado negativo ganha um a mais.

É igual em qualquer largura: 16 bits vão de menos 32768 a 32767, e 64 bits de menos 9223372036854775808 a 9223372036854775807.

Existe um número sem oposto?

Existe, exatamente um por largura: o mais negativo. Menos 128 em oito bits não tem gêmeo positivo, porque 128 precisaria de uma vaga que o lado positivo não tem.

Inverta os bits de 10000000 e você chega a 01111111; some um e volta a 10000000. Negá-lo devolve o mesmo número. Esta página mostra isso acontecendo em vez de esconder, e a propriedade foi conferida em 8, 16, 32 e 64 bits.

O que acontece quando o número não cabe?

Ele dá a volta, e esta página mostra a volta em vez de recusar. Escrever 300 em oito bits guarda 44, e escrever menos 129 guarda 127.

Não é a página sendo permissiva: é o que o hardware faz. Mostrar um erro esconderia exatamente o comportamento que causa o bug que você provavelmente veio entender.