Pular para o conteúdo
Matemágica

Bases numéricas e ponto flutuante

Converta números entre as bases 2 a 36, some e subtraia em binário com transbordo, veja o complemento de dois e os bits do IEEE-754 de 32 e 64 bits.

Nível 2 · Intermediário Aula Origem: nova

Bases numéricas e ponto flutuante

Conversão

Um número na base b usa dígitos de 0 a b − 1. Para a base 36, os dígitos vão de 0 a 9 e de a a z. A conversão funciona nos dois sentidos: lê-se o número como soma de potências da base e escreve-se por divisões sucessivas. A ferramenta usa aritmética exata, então números com centenas de dígitos também convertem sem erro.

Operações binárias em largura fixa

O computador opera com um número fixo de bits. Em 8 bits, o resultado de 11111111 + 1 cabe em 0 (é 256 módulo 256), e a ferramenta marca transbordo: o valor verdadeiro não coube. Subtrair um número maior de um menor também transborda sem sinal (o resultado vira um número grande).

Complemento de dois

Para representar negativos com a mesma máquina de somar, usa-se o complemento de dois: em w bits, −n é 2^w − n. Assim −5 em 8 bits é 11111011. O bit mais à esquerda indica o sinal, e o intervalo representável vai de −2^(w−1) a 2^(w−1) − 1. Somar em complemento de dois não precisa de circuito separado para subtrair.

IEEE-754

Um número de ponto flutuante tem três campos: sinal (1 bit), expoente (8 bits em precisão simples, 11 em dupla) com viés 127 ou 1023, e mantissa (23 ou 52 bits). O valor é (−1)^sinal × 1,mantissa × 2^(expoente − viés) para números normais.

Muitos decimais não têm expansão binária finita. Por isso 0,1 é guardado como uma fração binária aproximada. A ferramenta mostra a expansão exata do valor de 64 bits: ela é 0,1000000000000000055511..., não 0,1.

Padrões especiais: expoente todo zero dá zero ou subnormal; expoente todo um com mantissa zero dá infinito; com mantissa diferente de zero dá o valor “não é um número”. Um valor grande demais para a precisão vira infinito.

Entradas

Use bases de 2 a 36, números sem espaço no meio e sem ponto decimal (a conversão é de inteiros). Para o padrão IEEE, digite um número decimal; para os bits, use somente 0 e 1 no tamanho correto.

Desafios

  1. Converta 255 para hexadecimal e confira com 11111111 em binário. Por que os dois têm o mesmo número de dígitos?

    Dica

    Cada dígito hexadecimal cobre exatamente quatro bits.

  2. Em 8 bits, quanto é 127 + 1 com sinal? Compare o transbordo sem sinal com o estouro com sinal.

    Dica

    Use a aba de operações e depois o complemento de dois de 127 e de 128.

  3. Por que 0,1 não tem representação exata em IEEE-754? Escreva o padrão de 32 bits e identifique sinal, expoente e mantissa.

    Dica

    Compare a expansão exata do double mostrada no painel com 0,1.

  4. O que acontece com 1e39 em precisão de 32 bits? E em 64 bits?

    Dica

    Existe um maior número finito representável em cada precisão.

Continue daqui

Pré-requisitos

Nenhum. Esta aula pode ser o começo.

Próximos passos

Nenhuma aula usa esta como pré-requisito ainda.

Conceitos

Cada conceito leva à lista de aulas que o usam, por disciplina.