Exemplo 1: Converter 25,5 em binário
1ª Etapa: Transformar o número em algo parecido com 1,### x 2###
Isso é alcançado através de divisões ou multiplicações. No caso do exemplo, divisões, pois o número é menor do que 1.
Nesta etapa o sinal de negativo do número, caso exista, deve ser ignorado!
25,5 / 2 | = 12,75 |
12,75 / 2 | = 6,375 |
6,375 / 2 | = 3,1875 |
3,1875 / 2 | = 1,59375 |
Ao final desta etapa, obtemos R1 = 1,59375 através de 4 divisões.
Com isso, apenas encontramos outra forma de representar
25,5
que é
1,59375 x 24
2ª Etapa: Calcular a mantissa baseado na parte fracionária de R1
Esse processo se dá sempre através de multiplicações sucessivas, até que o resultado seja 0, ou até um máximo de 23 multiplicações.
Como R1 = 1,59375, logo, sua parte fracionária é 0,59375
0,59375 x 2 | = 1,1875 | (De uma etapa para a outra, leva-se apenas a parte fracionária!) |
0,1875 x 2 | = 0,375 | |
0,375 x 2 | = 0,75 | |
0,75 x 2 | = 1,5 | |
0,5 x 2 | = 1,0 | |
0,0 x 2 | = 0,0 | (Acabou!) |
Mantissa calculada = 100110
Como a quantidade de bits da mantissa ficou inferior à 23, completa-se o final com 0's até formar 23 dígitos.
Mantissa final = 10011000000000000000000
3ª Etapa: Coletar as informações necessárias para criar a representação binária
- Sinal
Positivo = 0 (Se fosse negativo seria 1)
- Expoente
4 (Calculado na 1ª etapa)
Porém, devido ao padrão estabelecido pela IEEE para números de ponto flutuante, esse expoente deve ser acrescido de 127. Assim:
4 + 127 = 131 = 10000011
- Mantissa
10011000000000000000000 (Calculada na 2ª etapa)
4ª Etapa: Montar a representação binária
Basta juntar o sinal, o expoente e a mantissa coletados na 3ª etapa, para montar o valor de 32 bits que representa o valor inicial.
Assim, a representação final é:
01000001110011000000000000000000
Ou 01000001110011000000000000000000 (Sem a formatação de cores)
Exemplo 2: Converter 0,203125 em binário
1ª Etapa: Transformar o número em algo parecido com 1,### x 2###
Isso é alcançado através de divisões ou multiplicações. No caso do exemplo, multipicações, pois o número é menor do que 1.
Nesta etapa o sinal de negativo do número, caso exista, deve ser ignorado!
0,203125 x 2 | = 0,40625 |
0,40625 x 2 | = 0,8125 |
0,8125 x 2 | = 1,625 |
Ao final desta etapa, obtemos R1 = 1,625 através de 3 multiplicações.
Com isso, apenas encontramos outra forma de representar
0,203125
que é
1,625 x 2 -3 (Repare que o expoente ficou negativo, pois o número era menor do que 1!)
2ª Etapa: Calcular a mantissa baseado na parte fracionária de R1
Esse processo se dá sempre através de multiplicações sucessivas, até que o resultado seja 0, ou até um máximo de 23 multiplicações.
Como R1 = 1,625, logo, sua parte fracionária é 0,625
0,625 x 2 | = 1,25 | (De uma etapa para a outra, leva-se apenas a parte fracionária!) |
0,25 x 2 | = 0,5 | |
0,5 x 2 | = 1,0 | |
0,0 x 2 | = 0,0 | (Acabou!) |
Mantissa calculada = 1010
Como a quantidade de bits da mantissa ficou inferior à 23, completa-se o final com 0's até formar 23 dígitos.
Mantissa final = 10100000000000000000000
3ª Etapa: Coletar as informações necessárias para criar a representação binária
- Sinal
Positivo = 0 (Se fosse negativo seria 1)
- Expoente
-3 (Calculado na 1ª etapa)
Porém, devido ao padrão estabelecido pela IEEE para números de ponto flutuante, esse expoente deve ser acrescido de 127. Assim:
-3 + 127 = 124 = 01111100
- Mantissa
10100000000000000000000 (Calculada na 2ª etapa)
4ª Etapa: Montar a representação binária
Basta juntar o sinal, o expoente e a mantissa coletados na 3ª etapa, para montar o valor de 32 bits que representa o valor inicial.
Assim, a representação final é:
00111110010100000000000000000000
Ou 00111110010100000000000000000000 (Sem a formatação de cores)
Exemplo 3: Converter 11000001011010000000000000000000 em decimal
1ª Etapa: Extrair os campos
Para isso, basta dividir o número binário em três partes: sinal, expoente e mantissa.
Assim, dividindo o número 11000001011010000000000000000000 nas três partes, temos:
11000001011010000000000000000000
- Sinal
1 (1 significa negativo, se fosse 0, seria positivo)
- Expoente
10000010 (130 em decimal)
- Mantissa
11010000000000000000000
2ª Etapa: Calcular o expoente real
O expoente encontrado na 1ª etapa, devido ao padrão estabelecido pela IEEE para números de ponto flutuante, foi acrescido de 127 durante a conversão original, como foi feito nos outros exemplos de conversão de decimal para binário. Por isso, deve-se remover 127 do expoente encontrado para obter o expoente real.
Assim:
130 - 127 = 3
Expoente real = 3
3ª Etapa: Calcular o valor decimal da mantissa
Basta multiplicar cada bit da mantissa pela potência de 2 correnpondente àquela posição, e somar todos os resultados.
Esse método é análogo a alguns métodos de conversão de números binários (inteiros) para decimal, com uma diferença: aqui todas as potências são negativas, pois está se calculando uma fração e não um número inteiro.
O primeiro bit deve ser multiplicado por 2-1, o segundo por 2-2, o terceiro por 2-3, e assim por diante.
Lembrando:
2-1 = 1/21 = 1/2 = 0,5
2-2 = 1/22 = 1/4 = 0,25
2-3 = 1/23 = 1/8 = 0,125
...
Multiplicando:
1 x 2-1 | = 0,5 | |
1 x 2-2 | = 0,25 | |
0 x 2-3 | = 0,0 | |
1 x 2-4 | = 0,0625 | |
0 x 2-5 | = 0,0 | (Daqui em diante tem-se apenas 0's, logo não é necessário continuar) |
Somando todos os resultados diferentes de 0, tem-se:
0,5 + 0,25 + 0,0625 = 0,8125
4ª Etapa: Montar a representação decimal
Basta juntar o sinal, o expoente e a mantissa, para montar o valor decimal na forma 1,### x 2###.
Assim, a representação final é:
-1,8125 x 23
Ou -1,8125 x 23 (Sem a formatação de cores)
Ainda, pode-se calcular a potência e a multiplicação...
-1,8125 x 23 = -1,8125 x 8 = -14,5
Exemplo 4: Converter 01000010001101000000000000000000 em decimal
1ª Etapa: Extrair os campos
Para isso, basta dividir o número binário em três partes: sinal, expoente e mantissa.
Assim, dividindo o número 01000010001101000000000000000000 nas três partes, temos:
01000010001101000000000000000000
- Sinal
0 (0 significa positivo, se fosse 1, seria negativo)
- Expoente
10000100 (132 em decimal)
- Mantissa
01101000000000000000000
2ª Etapa: Calcular o expoente real
O expoente encontrado na 1ª etapa, devido ao padrão estabelecido pela IEEE para números de ponto flutuante, foi acrescido de 127 durante a conversão original, como foi feito nos outros exemplos de conversão de decimal para binário. Por isso, deve-se remover 127 do expoente encontrado para obter o expoente real.
Assim:
132 - 127 = 5
Expoente real = 5
3ª Etapa: Calcular o valor decimal da mantissa
Basta multiplicar cada bit da mantissa pela potência de 2 correnpondente àquela posição, e somar todos os resultados.
Esse método é análogo a alguns métodos de conversão de números binários (inteiros) para decimal, com uma diferença: aqui todas as potências são negativas, pois está se calculando uma fração e não um número inteiro.
O primeiro bit deve ser multiplicado por 2-1, o segundo por 2-2, o terceiro por 2-3, e assim por diante.
Lembrando:
2-1 = 1/21 = 1/2 = 0,5
2-2 = 1/22 = 1/4 = 0,25
2-3 = 1/23 = 1/8 = 0,125
...
Multiplicando:
0 x 2-1 | = 0,0 | |
1 x 2-2 | = 0,25 | |
1 x 2-3 | = 0,125 | |
0 x 2-4 | = 0,0 | |
1 x 2-5 | = 0,03125 | |
0 x 2-6 | = 0,0 | (Daqui em diante tem-se apenas 0's, logo não é necessário continuar) |
Somando todos os resultados diferentes de 0, tem-se:
0,25 + 0,125 + 0,03125 = 0,40625
4ª Etapa: Montar a representação decimal
Basta juntar o sinal, o expoente e a mantissa, para montar o valor decimal na forma 1,### x 2###.
Assim, a representação final é:
+1,40625 x 25
Ou +1,40625 x 25 (Sem a formatação de cores)
Ainda, pode-se calcular a potência e a multiplicação...
+1,40625 x 25 = 1,40625 x 32 = 45,0