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.
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.
Reações
0
0 Comentários
Seja o primeiro a comentar