InícioFAQBuscarMembrosGruposRegistrar-seConectar-se

Compartilhe | 
 

 Trabalhando com Pontos Flutuantes

Ver o tópico anterior Ver o tópico seguinte Ir em baixo 
AutorMensagem
Bnezinho
Soldado
Soldado
avatar

Peixes Ocupação : Programador

MensagemAssunto: Trabalhando com Pontos Flutuantes   Dom Jul 12, 2009 2:07 pm

[size=15pt]Trabalhando com Pontos Flutuantes[/size]

Olá pessoal, como vão? Bem, como a maioria dos meus tutoriais, irei abordar mais uma curiosidade que acerca o mundo das dúvidas.
Nesta aula você aprenderá a trabalhar melhor com pontos flutuantes, ou na língua inglesa: Floats.
Aprenderemos um pouco sobre sistemas numéricos: Binários, Octais, Hexadecimais e Notação Científica. Let's go? XD

Notação Científica
Notação científica é uma forma de simplificar um número muito extenso, ou seja, com muitos zeros.
Em matemática, usamos: 10 elevado a alguma coisa x número restante. Bem, mais ou menos isso =S
Já no Ruby, usamos:
Resto + e + número de zeros. Exemplo:
- Quero fazer 1 milhão em notação científica.
1 milhão = 1.000.000 (6 zeros!), logo:
1 milhão = 1e6, onde => 1 é o resto, e o número posterior ao 'e' corresponde ao número de zeros.
- Outros exemplos:
1 bilhão = 1.000.000.000 (9 zeros)
1 bilhão = 1e9
- 6 décimos = 0.6 (-1 zero)
6 décimos = 6e-1
- 6 centimétros de um metro:
1 metro = 1, logo, 6 centimetros = 0.06m
0.06m = 6e-2
*OBS: Embora esteja assim, o retorno sempre virá em forma decimal e não em notação científica.

Sistema Octal:
Os números octais estão relacionados de forma direta à área da informática. Mas hoje, é mais usado o seu sucessor: O sistema hexadecimal.
É um sistema número de base 8 que usa 8 símbolos, excluíndo o 8 e o 9.

Sistema Binário:
O sistema binário é bem famoso na área da informática. É o sistema númerico padrão do Computador.
Nós usamos o sistema decimal, conjunto dos números decimais. Mas os computadores são incríveis!
Tudo que você vê é constituido por esses algarismos também chamados de bits, que é a menor unidade de alocamento de um computador.
Neste sistema, só existem dois algarismos: 0 e 1, verdadeiro ou falso. É bem simples de se entender...
No Ruby, não necessariamente usamos o binário e sim uma variante dele: O BCD 8421.
Nele, os zeros antes do 1 não valem nada, e o que contam são os que vem posterior à ele.
Convertendo binário à decimal:
Veja este número:
1111
Ele é um exemplo de número binário. Como posso convertê-lo para número decimal? Simples, Basta multiplicar o número por 2 elevado a ordem em que ele está. Exemplo:
1111 = 1 x 2³ + 1 x 2² + 1 x 2¹ + 1 x 2°, pois possui quatro carácteres.
Logo, 8 + 4 + 2 + 1 = 15
Então, o número binário 1111 corresponde ao número decimal 15.
Éis aqui uma tabelinha com os números mais conhecidos:
Código:
0 = 0
1 = 1  #(1 x 2°)
2 = 10 #(1 x 2¹)
3 = 11 #(1 x 2² + 1 x 2°)
4 = 100 #(1 x 2² + 0 x 2¹ + 0 x 2°)
5 = 101 #(1 x 2² + 0 x 2¹ + 1 x 2°)
6 = 110 #(1 x 2² + 1 x 2¹ + 0 x 2°)
7 = 111 #(1 x 2² + 1 x 2¹ + 0 x 2°)
8 = 1000 #(1 x 2³ + 0 x 2² + 0 x 2¹ + 0 x 2°)
9 = 1001 #(1 x 2³ + 0 x 2² + 0 x 2¹ + 1 x 2°)
etc...
Perceba que nós "decompomos" o número em partes e multiplicamos por uma base 2 elevado ao número que corresponde justamente ao posicionamento em que ele se encontra no algarismo.

Agora chega de papo furado! XD
Para usar números binários em floats, basta seguir o exemplo:
Código:
bin = 0b<numero>
*Retornará um número decimal

Sistema Hexadecimal:
Ele é mais usado em Assembly.
O sistema hexadecimal é formado por dezesseis símbolos diferentes. São eles:
1, 2, 3, 4, 5, 6, 7, 8, 9, 10, A, B, C, D, E e F, as letras correspondendo aos números 10, 11, 12, 13, 14 e 15 respectivamente.
Por usar letras e números, o sistema hexadecimal é o mais difícil de todos.
Convertendo Números Hexadecimais em Decimais:
Primeiro, da mesma forma que os outros, imaginemos um número qualquer (416).
Agora vamos "decompor" esse número:
416 = 4 * 16² + 1 * 16¹ + 6 * 10°
416 = 1024 + 16 + 6 = 1046
Logo... O número hexadecimal 416 será igual ao número decimal 1024!
Convertendo Números Decimais em Hexadecimais:
Pegue o número (48).
Divida-o por 16 até quando a divisão resultar numa fração. Exemplo:
48 / 16 = 3 (Resta 0)
3 / 16 = 0 (Resta 3)
Agora, enfileirando os respectivos algarismos que representaram o resto (de baixo para cima), obtemos o número hexadecimal:
No caso, os números que representaram o resto foram: 0 e 3. Logo, trocando a ordem, o número hexadecimal que irá representar o número decimal 48 é o 30! Legal, né? XP

Criando números hexadecimais em floats:
É simples, veja:
Código:
hexa = 0xnumber #Onde number é o número
*Há retorno de número em forma decimal.

Números Racionais:
Você por acaso já tentou fazer a seguinte operação: 2**-1?
Não? Pois bem... Se tivesse, resultaria no seguinte:
Código:
Rational(1, 2) #Lê-se: O primeiro dividido pelo segundo
São números racionais, embora não possa dizer fielmente que fazem parte da classe Float, em matemática, pertecem a esse grupo.

Bom pessoal, nesta aula aprendemos um pouco mais sobre esses três sistemas númericos e suas aplicações no objeto tipo Float.
Espero que tenham gostado... Junto com aquela antiga aula do Math, nem há desculpa pra não criar uma calculadora científica, né? XP
Voltar ao Topo Ir em baixo
Dragus-kai
Major
Major
avatar

Capricórnio Ocupação : Dorgas

Registro
: Dargus
: Monstro
: Goomba - nv. 8 / Traficante - nv. 4 / Beast Master - nv. 2

MensagemAssunto: Re: Trabalhando com Pontos Flutuantes   Dom Jul 12, 2009 5:48 pm

Muito útil, também muito macabro D:

Ótimo trabalho, Bne!
Tô lendo ainda, mas o pouco que já li entendi.

Valeu pela contribuição!

Continue o Good Work!
Voltar ao Topo Ir em baixo
http://www.amigo.kit.net
 

Trabalhando com Pontos Flutuantes

Ver o tópico anterior Ver o tópico seguinte Voltar ao Topo 

 Tópicos similares

+
Página 1 de 1

Permissão deste fórum:Você não pode responder aos tópicos neste fórum
Hacred Sall :: Centro de Operações :: Armazém :: Scripts :: Ajuda e tutoriais-
Ir para: