Processing math: 100%

sábado, 25 de agosto de 2012

[Cálculo Numérico] Aula 7: fração decimal pra binária

Decimal para Binário (Nº fracionário)

Peguemos o número 35,625 na base 10. Vamos convertê-lo para binário.
1º Passo: separamos as partes inteiras das fracionárias:
35 + 0,625
A parte inteira é bem fácil. Como o número é menor que 256, ao invés de fazer divisão, é mais fácil usar aquele método que o professor passou de ordenar decrescentemente as potências de 2:
32 - 16 - 8 - 4 - 2 - 1
É intuitivo, deve ter um método matemático pra descobrir o que usar, mas honestamente... Não é necessário. É só pensar um pouquinho. Queremos chegar ao 35, então 32+2+1 resolve.
Logo:
32 - 16 - 8 - 4 - 2 - 1
1 - 0 - 0 - 0 - 1 - 1

Logo:
3510=1000112

Para a fracionada, temos a seguinte metodologia: ao invés de sair dividindo como feito na aula passada, vamos multiplicando por 2, pegando o algarismo depois da vírgula e removendo ele pra colocar no binário. E repetindo até chegar no tanto de casas após a vírgula exigidas. Ao contrário do binário inteiro, o fracionário segue ordem normal.
Explicando fica meio complicado mesmo, então vamos fazer na prática que dá pra entender bem:
0.625×2=1.250

Pegamos esse 1 depois da vírgula, deixamos 0,250 e multiplicamos ele por 2 de novo.
0.250×2=0.5

Pegamos o 0, repetimos o processo:
0.5×2=1

Pegamos o 1 e terminamos o número. Esse caso é bom porque é perfeito: o número tem um fim simples. Muitos deles serão gigantescos e o exercício exigirá um mínimo de casas, então não se preocupe tanto com isso. E o resultado final?
0.62510=0.1012

Logo:
35.62510=100011.1012


Exercícios:
1. Converter para decimal.
a) 11010101011
Binário pra decimal é deveras simples, está na outra aula o método. Só sair somando:
120+121+022+123+024+125+026+127+028+129+1210

1+2+0+8+0+32+0+128+0+512+1024170710

b) 1,01010101
Mesma coisa, só que com valores mais feios:
(120)+(021+122+023+124+025+126+027+128

(1)+(0+0.25+0+0.0625+0+0.015625+0+0.00390625)1+(0.33203125)1.3320312510

c) 11011,1101
Agora juntando o útil ao agradável:
(124+123+022+121+120)+(121+122+023+124)(16+8+0+2+1)+(0.5+0.25+0+0.0625)27+0.812527.812510


2. Converter para binário com 5 dígitos.
a) 234,435
Primeiro, a parte antes da vírgula (234):
128 - 64 - 32 - 16 - 8 - 4 - 2 - 1
128+64 = 192
192+32 = 224
224+16 = 240, então pulamos pro próximo.
224+8 = 232
Sabemos que é somando 2 que temos 234, óbvio, então:
128 - 64 - 32 - 16 - 8 - 4 - 2 - 1
1 - 1 - 1 - 0 - 1 - 0 - 1 - 0

234 = 11101010 em decimal
Pra parte depois da vírgula, 435:
0,435 x 2 = (0),87
0,870 x 2 = (1),74

0,740 x 2 = (1),48
0,480 x 2 = (0),96
0,960 x 2 = (1),92
E tá bom, né, pediu 5 casas decimais depois da vírgula.

Ou seja:
0.435=0.011012234.435=11101010.011012

b) 12,234
Parte depois da vírgula:
8 - 4 - 2 - 1

1 - 1 - 0 - 0
(acho que é muito "de cabeça" que 12 = 8 + 4)
Pro 0,234:
0,234 x 2 = (0),474
0,474 x 2 = (0),948
0,948 x 2 = (1),896
0,896 x 2 = (1),792
0,792 x 2 = (1),584
Logo:

0.234=0.00111212.234=1100.001112

c) 43,956
Parte depois da vírgula:

32 - 16 - 8 - 4 - 2 - 1
32 + 16 = 48, passa.

32 + 8 = 40
40 + 4 = 44, passa.
40 + 2 = 42
42 + 1 = 43
Logo:
32 - 16 - 8 - 4 - 2 - 1
1 - 0 - 1 - 0 - 1 - 1
Assim, 43 = 101011.

Agora, pro que vem depois da vírgula:
0,956 x 2 = (1),912
0,912 x 2 = (1),824
0,824 x 2 = (1),648
0,648 x 2 = (1),296
0,296 x 2 = (0),592
E 0,956 fica em 5 casas decimais até 0,11110. E:

43.956=101011.111102

Operações com binário

Adição de dois termos: escreva em binário o nº 2.
2+2=4410=102+102102+102=1002

A regra é a seguinte:
0 + 0 = 0
1 + 1 = 10
1 + 0 = 1
0 + 1 = 1

Veja a seguinte conta (com o sinal do outro lado por conveniência):

1101101 +
1001101
Vamos fazer a operação normalmente de trás pra frente, passo a passo, como se fazia no primário. Lembrando que 1+1 = 10. Então fica 0 e sobe 1.
Primeira casa: 1+1 = 10. Fica 0, sobe 1.
Segunda casa: 0+0+1 = 1. Fica 1.
Terceira casa: 1+1 = 10. Fica 0, sobe 1.
Quarta casa: 1+1+1 = 11. Fica 1, sobe 1.
Quinta casa: 0+0+1 = 1. Fica 1.
Sexta casa: 1+0 = 1. Fica 1.
Sétima casa: 1+1 = 10. Como é a última casa, fica 10.
Pega tudo o que está na frente do "fica", obviamente na ordem inversa (da sétima pra primeira):

(10)(1)(1)(1)(0)(1)(0)
Logo, o resultado é: 10111010.

Se tiver qualquer dificuldade nisso, o mais recomendado é pegar algum livro de cálculo numérico ou eletrônica digital e sair queimando todos os exercícios até entender perfeitamente o que está acontecendo. Só dá trabalho, mas é facinho.
Também sei que a estrutura do post ficou meio estranha, não sei ao certo qual seria a melhor pra trabalhar aqui. Se ficou muito pouco claro pra quem tá estudando, sou aberto a sugestões de modelos diferentes.
Gratíssimo, boa noite.

2 comentários:

  1. Ou se preferir, uma forma prática é usar uma calculadora que faça a conversão de decimal para binário.
    -A parte inteira é convertida diretamente pelas calculadoras.
    -Para a parte fracionária é necessário, definir a quantidade de bits (F) que deseja usar na parte fracionária, e multiplicar o número por 2^F. Isso resulta no deslocamento dos bits de F. converta para binário, e conte os bits da direita para esquerda (F são a parte fracionária) os demais a parte inteira.

    ResponderExcluir