Mostrando postagens com marcador cálculo numérico. Mostrar todas as postagens
Mostrando postagens com marcador cálculo numérico. Mostrar todas as postagens

sábado, 1 de setembro de 2012

[Cálculo Numérico] Aula 10: sistema hexadecimal

Sistema Hexadecimal

Composto de 16 valores (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F). É um sinal digital com equivalentes em quatro dígitos binários conforme a tabela:

Decimal Hexadecimal Binário
0 0 0000
1 1 0001
2 2 0010
3 3 0011
4 4 0100
5 5 0101
6 6 0110
7 7 0111
8 8 1000
9 9 1001
10 A 1010
11 B 1011
12 C 1100
13 D 1101
14 E 1110
15 F 1111

Converter de hexadecimal para decimal

a) FACADA
Só fazer normalmente aquela decomposição de cada algarismo:
Lembrando que F = 15, A = 10, C = 12 e D = 13. Fica:
$$10 * 16^0 + 13 * 16^1 + 10 * 16^2 + 12 * 16^3 + 10 * 16^4 + 15 * 16^5 \\
10 + 208 + 2560 + 49152 + 655360 + 15728640 = 16435930_{10}$$
b) BABACA
Antes: B = 11, A = 10, C = 12.
$$10 * 16^0 + 12 * 16^1 + 10 * 16^2 + 11 * 16^3 + 10 * 16^4 + 11 * 16^5 \\
10 + 192 + 2560 + 45056 + 655360 + 11534336 = 12237514_{10}$$
c) CABECA
Antes: C = 12, A = 10, B = 11, E = 14.
$$10 * 16^0 + 12 * 16^1 + 14 * 16^2 + 11 * 16^3 + 10 * 16^4 + 12 * 16^5 \\
10 + 192 + 3584 + 45056 + 655360 + 12582912 = 13287114_{10}$$
d) 2F4D0
Antes: F = 15, D = 13.
$$0 * 16^0 + 13 * 16^1 + 4 * 16^2 + 15 * 16^3 + 2 * 16^4 \\
0 + 208 + 1024 + 61440 + 131072 = 193744_{10}$$

Converter de hexadecimal para binário

Como ambos são sinais digitais, basta substituir pelos binários tabelados:
2FB10
0010.1111.1011.0001.1100
Logo, 101111101100011100 na base 2.

Converter de decimal para hexadecimal

Mesma coisa do resto: divisão por 16 e pegar o resto. Ou fazer aquele esquema de pegar o primeiro algarismo numa multiplicação. Veja bem:
a) 1023
1023/16 = 63, resto 15 (F).
63/16 = 3, resto 15 (F).
3/16 = 0, resto 3.
Logo, 3FF na base 16.

b) 462,24
Parte inteira:
462/16 = 28, resto 14 (E).
28/16 = 1, resto 12 (C).
1/16 = 0, resto 1.
Logo, 1CE na base 16.
Parte fracionária:
0,24 x 16 = 3,84
0,84 x 16 = 13,44 (D)
0,44 x 16 = 7,04
0,04 x 16 = 0,64
E aqui tá bom, né. 3D7.
Assim, podemos considerar 462,24 como 1CE,3D7 na base 16.

c) 16
16/16 = 1, resto 0.
Logo, 10 na base 16.

Exercícios

1. Converta da base 8 para a base 2 ou vice-versa.
a) 101011 na base 8.
NOTE BEM, aqui é a base 8. Não é um binário (não dá pra fazer a base 8 ali bonitinho sem LaTeX e LaTeX que não quebra linha não funciona em todos os navegadores, então só posso pedir para que preste bastante atenção).
Vai ficar assim:
(001)(000)(001)(000)(001)(001)
Ou seja: 1000001000001001 na base 2.

b) 1100 na base 2.
Decompondo: 001.100, que fica 1.4. Logo, 14 na base 8.

c) 11,01 na base 8.
(001)(001),(000)(001)
Logo: 1001,000001.

2. Converta da base 16 para a base 8 ou vice-versa.
Pra isso os srs. terão de converter primeiro pra binário, depois de volta pra base 8 ou pra base 16. Veja só:
a) 10 na base 8.
(001)(000), logo em binário 1000.
1000 na base 16 fica 8.
b) AB na base 16.
(1010)(1011), logo em binário 10101011.
10101011 na base 8 você decompõe da seguinte maneira:
10.101.011, que fica 2.5.3. Que fica 253 na base 8.

3. Converta os números seguintes para as demais bases:
Aqui o esquema é o seguinte: todos os números deverão ser convertidos para todas as bases. Veja só, decimal, binário, octal e hexadecimal: um deles será dado, os outros deverão ser descobertos através dele. Meu conselho é o seguinte:

Descubra sempre o hexadecimal primeiro. O hexadecimal simplifica todos os processos porque ele é o maior, e que vai precisar de menos contas pra resolver. De hexadecimal pra decimal você provavelmente só fará três divisões enquanto octal fará um pouco mais e binário será ridículo, de hexadecimal pra binário é uma tabela maior que octal mas também significa menos decomposição de números, e de hexadecimal pra octal... bem, pra que você vai fazer hexadecimal pra octal primeiro mesmo? "Ah, mas se me derem um octal, eu vou ter que descobrir binário primeiro." então descubra, ué, mas depois faça hexadecimal pra sofrer menos no decimal.
Veja só:

a) 124,5 na base 8.
Pra binário (não dá pra hexadecimal direto):
(001)(010)(100),(101), logo 1010100,101 na base 2.
Pra hexadecimal:

101.0100,1010, não esqueça desse último zero, logo 5.4,A. O que dá 54,A na base 16.

Pra decimal:
$$5 * 16^1 + 4 * 16^0 + \dfrac{10}{16} = 80 + 4 + 0.625 = 84.625_{10}$$

E está respondido o primeiro.

b) 322,21 na base 16.
Pra binário:

(0011)(0010)(0010),(0010)(0001), logo 1100100010,00100001 na base 2.
Pra octal:
1.100.100.010,001.000.010. O que dá 1.4.4.2,1.0.2. Logo, 1442,102 na base 8.
Pra decimal:
$$3 * 16^2 + 2 * 16^1 + 2 * 16^0 + \dfrac{2}{16} + \dfrac{1}{16^2} \\
768 + 32 + 2 + 0.125 + 0.00390625 = 802.12890625_{10}$$
E está respondido o segundo.

c) 100111101 na base 2.
Pra hexadecimal:
1.0011.1101. O que dá 1.3.D. Ou seja, 13D na base 16.
Pra octal:
100.111.101. O que dá 4.7.5. Logo, 475 na base 8.
Pra decimal:
Aqui vamos usar octal porque é mais conveniente que ficar usando letra (tanto octal quanto hexadecimal usam 3 algarismos mesmo). Mas é caso e caso, faça a análise que lhe convier.
5*1 + 7*8 + 4*8² = 5 + 56 + 256 = 317 na base 10.
Resolvido.

d) 7002 na base 10.
Pra hexadecimal:
7002/16 = 437, resto 10 (A).
437/16 = 27, resto 5.
27/16 = 1, resto 11 (B).
1/16 = 0, resto 1.
Ou seja, 1B5A na base 16.
Pra binário:
(0001)(1011)(0101)(1010), ou seja, 1101101011010 na base 2.
Pra octal:
1.101.101.011.010, ou seja, 1.5.5.3.2, logo 15532 na base 8.
E estão resolvidos todos.

Boa noite. \o\

[Cálculo Numérico] Aula 9: sinal digital pra decimal, sistema octal

1. Converta o sinal digital abaixo (binário) para decimal:
a) 10000001
Se é um sinal digital de 8 bits e está iniciando com 1, temos que é um número negativo. Então vamos convertê-lo pra positivo pra fazer a operação primeiro, fazendo o oposto que fazemos de positivo pra negativo: complemento de um, depois subtrai 1 (soma -1) já que na outra conversão se somava 1.
Complemento de 1
10000001
01111110

Soma (-1)
Primeiro, vale a pena lembrar quem é -1:
1 = 00000001
(Compl. de 1) + 1: (11111110) + 1 = 11111111
Logo, a operação final fica:
01111110 +
11111111
0+1 = 1

1+1 = 10, fica 0 e vai 1
1+1+1 = 11, fica 1 e vai 1
E isso se repete até a última casa, aonde fica 1+1 = 10, fica 0 e vai 1, que some porque sai da última casa do sinal digital.
Sendo assim, temos que esse binário fica: 01111101
Convertendo pra decimal:

$$-n = 1 * 2^0 + 0 * 2^1 + 1 * 2^2 + 1 * 2^3 + 1 * 2^4 + 1 * 2^5 + 1 * 2^6 + 0 * 2^7 \\
1 + 4 + 8 + 16 + 32 + 64 = 125_{10} \\
n = -125_{10}$$
Mas aí uma regra muito doida que eu não entendi se surgiu de algum lugar ou é apenas magia negra diz que você acrescenta -2 ao resultado final, sendo assim, o número é na verdade -127 em decimal. Simplesmente isso.

b) 10010011
Mesma coisa:
Complemento de 1
10010011
01101100

Soma (-1)
01101100 +
11111111
0+1 = 1
0+1 = 1
1+1 = 10, fica 0 e vai 1
1+1+1 = 11, fica 1 e vai 1
1+1 = 10, fica 0 e vai 1
1+1+1 = 11, fica 1 e vai 1
1+1+1 = 11, fica 1 e vai 1
1+1 = 10, fica 0 e vai 1, que é desconsiderado porque explode os 8 bits
Resultado em binário: 01101011
Pra decimal:
$$-n = 1*2^0 + 1*2^1 + 0*2^2 + 1*2^3 + 0*2^4 + 1*2^5 + 1*2^6 + 0*2^7 = \\
1 + 2 + 8 + 32 + 64 =  107 \\
n = -107_{10}$$
Menos 2, -109 decimal.

c) 11111111
Complemento de 1
11111111
00000000

Soma (-1)
00000000 +
11111111
= 11111111
Eu por algum motivo tenho anotado na aula +255 aqui, mas preciso de uma luz nesse. A lógica passada é a seguinte: vai dar -255, menos 2 vai estourar e ir pra +256 e depois +255, mas não lembro se sinal digital vai de -255 a +256 ou de -127 a +128, então para todos os efeitos fiquem com a resposta da aula e perguntemos ao professor depois.


Sistema Octal

Sistema de 8 dígitos: 0, 1, 2, 3, 4, 5, 6, 7, 8.

Converter octal para decimal:

$$123.3_8 = 1 * 8^2 + 2 * 8^1 + 3 * 8^0 + 3 * 8^{-1} \\
123.3_8 = 83.375_{10}$$

Converter decimal em octal:

223
223/8 = 27, resto 7.
27/8 = 3, resto 3.
3/8 = 0, resto 3.
O número então vai dar 0337, ou simplesmente 337 em octal.
495,25
Parte normal
495/8 = 61, resto 7.
61/8 = 7, resto 5.
7/8 = 0, resto 7.
Ou seja, 757.
Parte fracionária: você vai fazer mais ou menos como no binário, multiplicar por 8 o tanto de casas que for preciso e ir pegando o último número. Sobrando 0,00, chega-se à última casa.
0,25 x 8 = 2,00
Pega o 2, deixa o resto, fica 0,00. Então o resultado final é:
757,2


Converter binário em octal

Esse é o mais simples, veja bem:
1011011001
Você vai fragmentar o binário de 3 em 3, contando a partir do primeiro, e vai formar algarismos de 0 a 7 com eles. Simples assim. Veja esse exemplo:
1.011.011.001
1.3.3.1, logo 1331 em octal. (lembrando que o primeiro, isolado, você pode considerar dois zero à esquerda se quiser)

1001110111,100101010
Antes da vírgula, da direita pra esquerda: 1.001.110.111<
1.1.6.7
Depois da vírgula, da esquerda pra direita: 100.101.010
4.5.2
Logo, 1167,452 em octal.


Converter octal em binário

Faça o oposto: pegue cada algarismo do octal e trunque em binários. Veja esse exemplo:
523 em octal
5 = 101
2 = 010
3 = 011
Logo, 101010011. Vale a pena lembrar que a não ser que vá sobrar zero à esquerda ou à direita no algarismo final (ou seja, último algarismo inteiro à esquerda, e fracionário à direita), você obrigatoriamente tem que conservar o 0 do binário.


Exercícios

1. Converta de decimal para octal com 4 dígitos na parte fracionária:
a) 102,4
Parte inteira:
102/8 = 12, sobra 6.
12/8 = 1, sobra 4.
1/8 = 0, sobra 1.
Logo, 146.
Parte fracionária:
0,4 x 8 = 3,2
0,2 x 8 = 1,6
0,6 x 8 = 4,8
0,8 x 8 = 6,4
Logo, 0,3146.
No total, fica: 146,3146 em octal.

b) 1004,5
Parte inteira:
1004/8 = 125, sobra 4.
125/8 = 15, sobra 5.
15/8 = 1, sobra 7.
1/8 = 0, sobra 1.
Logo, 1754.
Parte fracionária:
0,5 x 8 = 4,0
Logo, 0,4.
No total: 1754,4 em octal.

c) 723,45
Parte inteira:

723/8 = 90, sobra 3.
90/8 = 11, sobra 2.
11/8 = 1, sobra 3.
1/8 = 0, sobra 1.
Logo, 1323.
Parte fracionária:
0,45 x 8 = 3,6
0,6 x 8 = 4,8
0,8 x 8 = 6,4
0,4 x 8 = 3,2
Logo, 0,3463.
No total: 1323,3463.

2. Converta de octal para decimal:
a) 732,1

Só fazer a conta tradicional:
$$7 * 8^2 + 3 * 8^1 + 2 * 8^0 + \dfrac{1}{8} = 448 + 24 + 2 + 0.125 = 474.125_{10}$$
b) 423,6
$$4 * 8^2 + 2 * 8^1 + 3 * 8^0 + \dfrac{6}{8} = 256 + 16 + 3 + 0.75 = 275.75_{10}$$

c) 1004,123
$$1 * 8^3 + 0 * 8^2 + 0 * 8^1 + 4 * 8^0 + \dfrac{1}{8} + \dfrac{1}{8^2} + \dfrac{1}{8^3} \\
512 + 4 + 0.125 + 0.03125 + 0.005859375 = 516.162109375_{10}$$

3. Converta de binário para octal:
a) 11100111
011.100.111
3.4.7
Logo, 347.
b) 1100111
001.100.111
1.4.7
Logo, 147.
c) 1111011
001.111.011
1.7.3
Logo, 173.
d) 10,000010001
Parte inteira: 010. Logo, 2.
Parte fracionária:
000.010.001
0.2.1
Logo, 0,021.
Sendo assim, o total é 2,021.

Já vou postando a outra aula e a de equações diferenciais, não confirmo de algoritmo e estrutura de dados ainda porque acho melhor o professor passar o algoritmo dele e tal pra não confundir ninguém. Aliás, estou realmente cogitando postar estrutura de dados porque é uma matéria muito mais complexa que programação comum, mas ainda envolve muito código e acho código extremamente pessoal, daí não sei uma maneira de passar um "código didático" pra vocês que estão interessados.
Discutam aí, se alguém souber essa maneira e quiser passar aqui no blog também, sem problema.

No mais, bom dia a todos.

sábado, 25 de agosto de 2012

[Cálculo Numérico] Aula 8: subtração de binários

Subtração de binários

Como os sinais digitais não reconhecem (-) como números negativos o processo de subtração entre A e B deve ser dado por A + (-B) onde -B representa o oposto de B.
Esta determinação de oposto de um binário pode ocorrer de três formas:
1. sinal-magnitude: representado em sinais digitais de 8 bits onde o primeiro bit é o indicativo da magnitude.
Exemplo: (0)0001001 = +9, enquanto (1)0001001 = -9.
Ou seja, todo binário que possui N-1 = 0 é positivo e N-1 = 1 é negativo. Existe assim 2^8 possibilidades de combinação. 2^8 = 256 dígitos, sendo 128 positivos e 128 negativos, mas, observe que 00000000 = +0 e 10000000 = -0 assumem o mesmo valor. Logo:
127 combinações positivas, 127 combinações negativas, e 0. Um total de 255 combinações.

2. complemento de um: troca-se os 0 por 1 e os 1 por zero.
+9 = 00001001
-9 = 11110110
Novamente, 00000000 = +0 e 11111111 = -0. Por isso temos 255 valores de -127 a +127.

3. complemento de dois: realiza-se o complemento de um e soma-se mais um:
+9 = 00001001
-9 = 11110110 (comp. de um de 9) + 1 = 11110111
No caso de 0:
+0 = 00000000
-0 = 11111111 (comp. de um de 0) + 1 = 100000000
Como estamos falando de 8 bits, ignoramos o nono caracter à esquerda. Ou seja: -0 = 00000000. Sendo assim, esse sistema é o mais favorável, pois permite de -128 a +127.


Exercícios:
1. Resolva em binário:
a) (antes dele alterar) 5 - 2

5 + (-2)
5 é muito fácil, né:
4 - 2 - 1
1 - 0 - 1

Logo, 5 = 00000101
Já o -2 é um pouquinho mais complicado, mas nada demais. Lembrando que usaremos complemento de dois:
2 = 00000010
Comp.1 de 2 é 1111101. +1 = 11111110. Logo a operação fica:
00000101 +
11111110

Primeiro algarismo, 1. Segundo algarismo, 1. Terceiro algarismo, 10, fica 0 e vai 1. Aí vai dando 10 (fica 0 e vai 1) até estourar a oitava casa, o que dá: 00000011 (3 no sistema decimal). Mas note que estamos usando um número muito grande, então vamos usar do seguinte aconchego: só vamos até a última casa do número maior, passou disso começaremos a ignorar porque sabemos que vai estourar a oitava casa.
Perceba na b:

b) 3 - 2
3 + (-2)

Não precisamos fazer conta pra saber que 3 = 11.
2 = 10. Com complemento de 1, fica 01. Acrescentando 1, 10.
Logo a operação fica:
11 +
10
1 + 0, fica 1.
1 + 1, fica 0 e vai 1. Mas a última casa é essa, então ignoramos tudo depois dela.

Logo, 3 - 2 dá 01 que, bem, é igual a 1 em decimal.

a) (depois dele alterar) 5 - 1
5 + (-1)

Já sabemos que 5 = 101.
1 é 001. Complemento de 1 fica 110, somando 1 fica 111.
Logo, a conta será:
101 +
111
1+1 dá 10, fica 0 e sobe 1.

0+1+1 dá 10, fica 0 e sobe 1.
1+1+1 dá 11, fica 1 e sobe 1, que ignoramos.
Logo, 5 - 1 fica 100, que é 4.

c) 12 - 6
12 + (-6)


Pra 12:

8 - 4 - 2 - 1
1 - 1 - 0 - 0


Pra 6:
8 - 4 - 2 - 1
0 - 1 - 1 - 0
Complemento de 1: 1001. Soma-se 1: 1010.
Logo a operação fica:

1100 +
1010
0+0 = 0.

0+1 = 1.
1+0 = 1.
1+1 = 10, fica 0 e sobe 1, que ignoramos.
Logo, essa conta dá o resultado 110, que em decimal fica (obviamente) 6.

d) 7 - 5
7 + (-5)


Pra 7:
4 - 2 - 1

1 - 1 - 1

Pra 5:
4 - 2 - 1
1 - 0 - 1
Complemento de 1: 010. Soma-se 1: 011.
Logo a operação fica:

111 +
011
1+1 = 10, fica 0 e sobe 1.

1+1+1 = 11, fica 1 e sobe 1.
1+1 = 10, fica 0 e sobe 1, que ignoramos.
Logo, essa conta dá o resultado de 10, que em decimal fica 2.

E é basicamente isso. Mais uma vez lembro que não sei ao certo qual estrutura de post uso pra essa matéria de binários aqui, porque não sei se está claro dessa forma, ainda mais porque não consigo determinar a base sem usar o LaTeX só que me parece muito inconveniente usar o LaTeX nessa situação.
É vocês que me contatam e decidem. No mais, boa noite.

[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:
$$35_{10} = 100011_2$$
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 \times 2 = 1.250$$
Pegamos esse 1 depois da vírgula, deixamos 0,250 e multiplicamos ele por 2 de novo.
$$0.250 \times 2 = 0.5$$
Pegamos o 0, repetimos o processo:
$$0.5 \times 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.625_{10} = 0.101_2$$
Logo:
$$35.625_{10} = 100011.101_2$$

Exercícios:
1. Converter para decimal.
a) 11010101011
Binário pra decimal é deveras simples, está na outra aula o método. Só sair somando:
$$1*2^0 + 1*2^1 + 0*2^2 + 1*2^3 + 0*2^4 + 1*2^5 + \\ 0*2^6 + 1*2^7 + 0*2^8 + 1*2^9 + 1*2^{10}$$
$$1 + 2 + 0 + 8 + 0 + 32 + 0 + 128 + 0 + 512 + 1024 \\
1707_{10}$$
b) 1,01010101
Mesma coisa, só que com valores mais feios:
$$(1 * 2^0) + (0 * 2^{-1} + 1 * 2^{-2} + 0 * 2^{-3} + 1 * 2^{-4} + \\ 0 * 2^{-5} + 1 * 2^{-6} + 0 * 2^{-7} + 1 * 2^{-8}$$
$$(1) + (0 + 0.25 + 0 + 0.0625 + 0 + 0.015625 + 0 + 0.00390625) \\
1 + (0.33203125) \\
1.33203125_{10}$$
c) 11011,1101
Agora juntando o útil ao agradável:
$$(1 * 2^4 + 1 * 2^3 + 0 * 2^2 + 1 * 2^1 + 1 * 2^0) + (1 * 2^{-1} + 1 * 2^{-2} + 0 * 2^{-3} + 1 * 2^{-4}) \\
(16 + 8 + 0 + 2 + 1) + (0.5 + 0.25 + 0 + 0.0625) \\
27 + 0.8125 \\
27.8125_{10}$$

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.01101_2 \\
234.435 = 11101010.01101_2$$
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.00111_2 \\
12.234 = 1100.00111_2$$
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.11110_2$$

Operações com binário

Adição de dois termos: escreva em binário o nº 2.
$$2 + 2 = 4 \\
4_{10} = 10_2 + 10_2 \\
10_2 + 10_2 = 100_2$$
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.

domingo, 19 de agosto de 2012

[Cálculo Numérico] Aula 6: sistemas de numeração

Sistemas de Numeração

Surge com a necessidade de contar e tem seus primeiros sistemas relacionados com o homem primitivo.
As primeiras contagens são relacionadas aos dedos da mão (sistema fingers). Com a necessidade de aumento é incorporado o sistema toes (dedos do pé) que leva ao surgimento dos sistemas decimais e vigesimais.
Os sistemas são utilizados para descrever o que chamamos de Sinais (eventos que ocorrem em relação a um determinado tempo).

Sinal Analógico

São sinais contínuos no tempo, neste tipo de sinal ocorre a passagem de um evento de forma suave e podem assumir qualquer valor.

Sinal Digital

São sinais descontínuos com valores discretos (não assumem qualquer valor).

Exemplo: imagine um termômetro digital e um analógico. Enquanto o digital retorna valores discretos, pode-se, com a utilização de uma lupa, devolver valores suaves para um termômetro analógico.
Os fenômenos físicos ocorrem todos com sinal analógico.
Contudo, os sinais digitais apresentam algumas vantagens:

  • são mais fáceis de projetar;
  • facilidade em seu armazenamento;
  • menos suscetível a ruídos.
Pois pequenas variações de amplitude não afetam seu significado. Como na física os sinais são analógicos e na eletrônica o sinal muitas vezes é digital devemos trabalhar com essa transformação.

Descrição de Números

Todo sistema de numeração, seja ele digital ou analógico, segue um padrão de representação padrão. Este é dado por:
$$... + XB^y + ...$$
Onde:
X = dado do sistema de numeração
B = base do sistema de numeração
Y = posição do dígito com relação a vírgula
Obs.: y = 0 para o primeiro dígito à esquerda da vírgula, y = -1 para o primeiro dígito à direita da vírgula.
$$\epsilon = 323841.52_{10} \\ 3*10^5 + 2*10^4 + 3*10^3 + 8*10^2 + 4*10^1 + 1*10^0 + 5*10^{-1} + 2*10^{-2}$$
Quando um número não apresenta indicativo de base a direita, sua base é 10.

Sistema Binário

São representados pela base 2 e apresentam apenas dois dígitos: 1 e 0. O sistema binário possui uma correspondência direta entre os sinais analógicos e digitais, uma vez que sua conversão ocorre de forma direta.
Exemplo:
$$1001101_2 \\ 1*2^6 + 0*2^5 + 0*2^4 + 1*2^3 + 1*2^2 + 0*2^1 + 1*2^0 = \\ 64+0+0+8+4+0+1 = 77_{10}$$
Ocorre assim a conversão de binário em decimal. Como realizar o processo inverso?
Duas maneiras:
1. Vá dividindo por 2 e coletando os restos. Exemplo: para 23 na base 10:
23/2 = 11, resto 1
11/2 = 5, resto 1
5/2 = 2, resto 1
2/2 = 1, resto 0
Agora veja bem: você pega o resultado da primeira divisão, 1, e vai acrescentando ao número os restos em ordem inversa (ou seja, nesse caso, de baixo pra cima). 23 em binário fica 10111.

2. Para até 8 bits, faça a seguinte fila:
1 - 2 - 4 - 8 - 16 - 32 - 64 - 128 - 256
Ou seja, 2 elevado a um número de 0 a 8. Aí é só localizar o número entre esses e analisar qual soma é necessária pra chegar a ele. Peguemos 23 novamente:
  • ele está antes do 32 e depois do 16, então já convém pegar o 16;
  • 16+8 = 24, passou de 23, não compensa pegar o 8. 16+4 = 20;
  • 20+2 = 22;
  • 22+1, 23.
Agora é só pegar novamente a sequência e inserir 1 abaixo dos números usados, e 0 abaixo dos não-usados:
1 - 2 - 4 - 8 - 16
1 - 1 - 1 - 0 - 1
Invertendo, temos 10111. O mesmo resultado usando a outra maneira. Essa é meio pior de explicar porque depende bastante da prática, mas é só ir pegado.

Números fracionários
$$1101.111_2$$
Agora você vai imaginar o seguinte: 2 elevado a -1 é 0.5, a -2 é 0.25, a -3 0.125, e a cada expoente n+1 você vai dividindo o resultado por 2 (lógico).
Mas a conversão em si de binário pra decimal é bem fácil. É só decompor os números normalmente:
$$1*2^3 + 1*2^2 + 0*2^1 + 1*2^0 + 1*2^{-1} + 1*2^{-2} + 1*2^{-3} \\ 8 + 4 + 0 + 1 + 0.5 + 0.25 + 0.125 = 13 + 0.875 = 13.875$$

E essa foi a aula de sexta. Boa tarde a todos.