Logo Hardware.com.br
welner
welner Novo Membro Registrado
16 Mensagens 0 Curtidas

Conversão de base 10 para 8

#1 Por welner 11/04/2010 - 11:43
olá, gostaria de saber de onde tiram esse resto, qual a conta que faço.
exemplo: 1985/8=
385 248/8=
65 08 31/8=
1 0 7 3
pronto 1985/8 =248 de onde tiraram o 385, o 65 e o 1?
248/8=31 de onde tiraram o 08 e o 0?
31/8=3 de onde tiraram o 7?
por favor me expliquem não to conseguindo entender, só tenho que fazer isso na c.científica ou dá pra ser em calculadora comum e qual a conta?
jqueiroz
jqueiroz Cyber Highlander Registrado
104K Mensagens 5.7K Curtidas
#3 Por jqueiroz
11/04/2010 - 13:47
Primeiro vamos entender como funciona um sistema de numeração.

Quando a gente escreve um número em base 10, cada algarismo representa uma potência de 10. Assim, "1985" representa um valor que é 1x10³ + 9x10² + 8x10¹ + 5x1 (1==10 elevado a 0).

A chave pra converter números pra sua representação numa base numérica é a chamada "divisão inteira", ou "divisão com resto".

Se a gente faz a divisão inteira de 1985 por 10, temos como quociente "198", e resto 5. Se repetimos o processo com o 198, temos como quociente 19, e resto 8. Nova divisão inteira, com 19, dá quociente 1, e resto 9. Nova divisão, com 1, dá quociente 0, e resto 1. Como tivemos quociente 0, não podemos mais prosseguir.

Veja que os restos, na sequência, foram "5", "8", "9" e "1" --- exatamente os algarismos de 1985, na ordem inversa. Então se juntamos esses algarismos, invertendo a ordem, temos a representação de 1985 em base 10. Como nós já nos acostumamos a trabalhar com a base 10, desde que nascemos, isso não parece estranho pra gente. No entanto, as preguiças contam em binário, e os personagens Disney, em octal (pesquise na internet e descubra o pq wink.png)

Pra converter um número pra outra base numérica, o que fazemos então é dividir o número pela base, usando a "divisão inteira", ou seja, o resultado (quociente) é um número inteiro, e é deixado um "resto". Anotamos este resto, e repetimos o processo com o quociente, até que este seja igual a zero. No final, juntamos os restos, em ordem inversa, para compor o número.

Vamos então ver como converter "1985" (base 10) em base 8.

1985 / 8 = 248, resto 1.
248 / 8 = 31, resto 0.
31 / 8 = 3, resto 7.
3 / 8 = 0, resto 3.

Como o quociente é zero, paramos a conversão. O resultado então é "3701".

O mesmo processo vale pra converter o número para qualquer base. Por exemplo, 177 (base 10) para binário (base 2).

177 / 2 = 88, resto 1.
88 / 2 = 44, resto 0.
44 / 2 = 22, resto 0.
22 / 2 = 11, resto 0.
11 / 2 = 5, resto 1.
5 / 2 = 2, resto 1.
2 / 2 = 1, resto 0.
1 / 2 = 0, resto 1.

Então "177" [base10] equivale a "10110001" [base2].

A conversão entre as bases 2, 8 e 16 tem uma característica interessante: como 8 e 16 são potências de 2, você pode fazer a conversão diretamente, usando padrões de 3 bits p/ base 8, e 4 bits para base 16.

Assim, "10110001" [base 2] => "10.110.001" (o agrupamento deve começar no último bit, chamado de "menos significativo"). Esses padrões correspondem aos números 2, 6 e 1, o que dá o resultado "261" [base 8].

Da mesma forma, "10110001" [base 2] => "1011.0001", onde os padrões equivalem aos dígitos "B" e "1" (*), o que dá o resultado "B1" [base 16].

Então, "177" [base10] == "10110001" [base2] == "261" [base8] == "B1" [base16].

Um costume antigo da computação é usar um prefixo pra avisar que um determinado número está escrito em outra base numérica. Assim, algumas linguagens assumem que um número começado com um "0" está escrito em base 8 (ex. "0755"); já o prefixo "0x" indica que o número está escrito em base 16 (ex. "0x4000bacf").

(*) - Como a base 16 trabalha com "restos" entre 0 e 15, é preciso de mais algarismos do que os 10 que a gente trabalha normalmente. Usa-se pra isso as letras A, B, C, D, E e F pra representar os valores 10, 11, 12, 13, 14 e 15, respectivamente.
"chmod 777 nunca ajudou ninguém" (c) 2002-2021 JQueiroz/FGdH
Conheça o Blog do Zekke
© 1999-2024 Hardware.com.br. Todos os direitos reservados.
Imagem do Modal