Hacred Sall
Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.



 
InícioProcurarÚltimas imagensRegistarEntrar

Compartilhe | 
 

 Trabalhando com Pontos Flutuantes

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

Peixes Ocupação : Programador

Trabalhando com Pontos Flutuantes Empty
MensagemAssunto: Trabalhando com Pontos Flutuantes   Trabalhando com Pontos Flutuantes Icon_minitimeDom 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
Ir para o topo Ir para baixo
Dragus-kai
Major
Major
Dragus-kai

Capricórnio Ocupação : Dorgas

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

Trabalhando com Pontos Flutuantes Empty
MensagemAssunto: Re: Trabalhando com Pontos Flutuantes   Trabalhando com Pontos Flutuantes Icon_minitimeDom 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!
Ir para o topo Ir para baixo
http://www.amigo.kit.net
 

Trabalhando com Pontos Flutuantes

Ver o tópico anterior Ver o tópico seguinte Ir para o topo 
Página 1 de 1

Permissões neste sub-fórumNão podes responder a tópicos
Hacred Sall :: Centro de Operações :: Armazém :: Scripts :: Ajuda e tutoriais-
Ir para: