-
Os sistemas computacionais
-
trabalham com o sistema
binário de numeração,
-
ou seja, com o sistema
de base 2,
-
no qual nós trabalhamos
com os algarismos 0 e 1.
-
Portanto, é necessário
nós fazermos as conversões
-
de outros valores,
de outras bases,
-
geralmente a base 10,
para a base 2.
-
Nesse processo de
conversão entre bases,
-
existem erros que ocorrem
-
principalmente quando
nós fazemos a conversão
-
de números decimais,
números que têm casas decimais,
-
como dízimas não periódicas,
para a base 2.
-
Então, há uma perda
das casas decimais
-
nesse processo de conversão.
-
Nós chamamos esse tipo de situação
de erros em conversões de bases.
-
Nós temos então
um tratamento estatístico,
-
que tem o objetivo
de minimizar esses erros,
-
ou minimizar essa
margem de erro
-
que acontece
e que deve ser prevista.
-
Nós trabalhamos em computação,
de maneira geral,
-
com três bases, com três
sistemas de numeração:
-
o sistema de base 2,
sistema binário,
-
o sistema de base 10,
também chamado de sistema decimal,
-
e o sistema de base 16,
que é o sistema hexadecimal,
-
no qual nós trabalhamos com
os 10 algarismos do sistema decimal
-
e mais letras que são
utilizadas para representar
-
números no sistema de base 16.
-
O sistema de base 10 trabalha
com 10 algarismos que vão de 0 a 9.
-
Esses algarismos são chamados
de algarismos indo-arábicos,
-
em homenagem à sua origem,
-
e, dessa forma, nós conseguimos
converter esses valores
-
desse sistema de base 10
para o sistema de base 2.
-
Vamos ver aqui um exemplo
-
onde a gente compreende
um pouco mais
-
esse sistema de
numeração de base 10,
-
que é um sistema
de numeração posicional.
-
Isso significa que nós trabalhamos
com potências de 10
-
associadas a cada um
dos algarismos
-
que fazem parte de um
determinado número.
-
Veja o exemplo aqui.
-
Sabendo que o sistema de base 10
é um sistema posicional,
-
nós vamos entender
que o valor associado
-
a um determinado algarismo
depende da sua posição no número.
-
Vamos ver então
alguns exemplos aqui.
-
No item A,
nós temos o número 25,
-
que nós podemos indicar também
como 25 na base 10.
-
Para simplificar, a gente
costuma indicar apenas 25 assim.
-
E aí nós entendemos
que o primeiro algarismo aqui,
-
que é o algarismo 5,
multiplica um 10 elevado a 0.
-
Já o segundo algarismo
da direita para a esquerda é o 2,
-
e ele multiplica o 10
elevado ao expoente 1.
-
Então, é por esse motivo que nós
chamamos de sistema posicional.
-
Isso indica que cada algarismo
multiplica uma determinada potência,
-
que está associada à base do número
que você está trabalhando.
-
Se é um número de base 10,
são potências de 10,
-
se é um número
de base 2, base 3, base 5,
-
são potências de 2, 3 e 5.
-
E se você fizer
esse cálculo aqui,
-
você vai observar que
o resultado é exatamente 25,
-
porque 10 elevado a 1 é 10,
vezes 2 vai dar 20,
-
e 10 elevado a 0 é 1,
qualquer valor elevado a 0 é 1,
-
e 1 vezes 5 é 5.
-
Então, você vai ficar com
20 somado com 5,
-
gerando 25 na base 10.
-
Mais um exemplo aqui,
o número 2784
-
nós também podemos escrever
como 2784 na base 10,
-
para deixar evidente que se trata
de um valor da base 10.
-
Dessa maneira,
nós entendemos então
-
que o algarismo 4,
que é o algarismo das unidades,
-
multiplica 10 elevado a 0.
-
O algarismo das dezenas, que é o 8,
multiplica 10 elevado a 1.
-
O algarismo das centenas, que é o 7,
multiplica 10 ao quadrado.
-
e o algarismo da unidade
de milhar, que é o 2,
-
multiplica 10 ao cubo.
-
Então, se você
fizer esse cálculo,
-
você vai chegar
exatamente em 2784.
-
São 2 vezes 1000,
que vai dar 2000,
-
7 vezes 100, que são 700,
8 vezes 10, que são 80,
-
e 4 vezes 1, na realidade,
que vai gerar 4.
-
Se você fizer 2000 mais 700
mais 80 mais 4,
-
você vai obter 2784.
-
Como nós sabemos,
-
os computadores trabalham
com um sistema de base 2,
-
que é conhecido
como sistema binário.
-
Além disso,
nós temos uma álgebra
-
que envolve todo esse
processamento na base 2,
-
que é conhecida como
álgebra de Boole ou booleana,
-
em homenagem a um matemático
inglês do século XIX
-
de sobrenome Boole.
-
E nesse caso, então,
-
nós temos uma gramática específica,
uma gramática algébrica
-
que trabalha com
esses algarismos 0 e 1,
-
que são os algarismos
do sistema binário,
-
e mais uma série de propriedades
e axiomas que nos permitem
-
desenvolver um sistema de forma
organizada, lógica e sistêmica,
-
atendendo uma série de condições
e propriedades dessa álgebra
-
que é chamada de álgebra booleana,
como eu comentei aqui.
-
Então, lembrando que
o sistema de base 2
-
também é um sistema posicional,
assim como o sistema de base 10.
-
Isso significa dizer o seguinte:
-
que cada algarismo
do sistema de base 2
-
está associado a uma certa
potência de base 2, justamente.
-
Então, nós entendemos
que o algarismo 1 aqui
-
multiplica 2 elevado a 0,
-
já esse algarismo 0
multiplica 2 elevado a 1,
-
e esse algarismo 1
multiplica 2 ao quadrado.
-
Se você fizer esse cálculo aqui,
-
veja que 2 ao quadrado é 4,
vezes 1 vai dar 4 mesmo,
-
2 elevado a 1 é 2,
vezes 0 vai dar 0,
-
e 2 elevado a 0 equivale a 1,
1 vezes 1 resulta em 1,
-
de maneira que, aqui,
-
você vai ficar com 4 mais 0
mais 1, resultando em 5.
-
Esse resultado que você
encontra aqui, que é o 5,
-
representa para nós a conversão
desse número para a base 10.
-
Portanto, o resultado 5
é 5 na base 10.
-
Assim, a gente diz que
o número 101 na base 2
-
corresponde ao número
5 na base 10.
-
Veja aqui mais um exemplo:
o número 1001, na base 2,
-
corresponde ao
número 9 na base 10.
-
Como a gente pode descobrir isso?
-
De maneira simples.
-
Basta lembrar, então,
que cada algarismo da base 2
-
está associado a uma
potência de 2,
-
sendo que o algarismo
aqui mais à direita
-
está associado a
uma potência de base 2
-
elevada a expoente 0.
-
Então, aqui é 2 elevado a 0,
2 elevado a 1, 2 ao quadrado
-
e 2 ao cubo.
-
Portanto, o algarismo 1
multiplica 2 ao cubo,
-
o algarismo 0
multiplica 2 quadrado,
-
o algarismo 0
multiplica 2 elevado a 1,
-
e esse último algarismo
aqui, que é 1,
-
multiplica 2 elevado a 0.
-
Agora, nós fazemos
as contas aqui.
-
2 ao cubo é 8,
vezes 1 vai dar 8 mesmo.
-
Isso aqui vai dar 0,
e isso aqui vai dar 0.
-
E aqui, 1 vezes 1 vai dar 1.
-
Então, você fica com 8
mais 0, mais 0, mais 1,
-
resultando em 9,
9 na base dez.
-
Veja outro exemplo aqui.
-
No caso de conversões, então,
-
de valores da base 2
para a base 10,
-
É só a gente lembrar
que cada algarismo
-
multiplica uma certa
potência de 2.
-
Então o algarismo zero
aqui mais à direita,
-
multiplica 2 elevado a 0,
-
o outro algarismo 0
já multiplica 2 elevado a 1,
-
e dessa maneira,
-
você tem esse algarismo 1
multiplicando 2 quadrado,
-
esse algarismo 1
multiplicando 2 ao cubo,
-
e esse primeiro algarismo aqui
multiplicando 2 à quarta.
-
Fazendo essas contas, então,
calculando a potência mesmo,
-
2 à quarta é 16,
vezes 1 dá 16.
-
2 ao cubo é 8, vezes 1 vai dar 8,
16 mais 8 é 24,
-
24 mais 4 é 28,
aqui e aqui é 0,
-
então, você tem 28 na base 10.
-
Veja o problema aqui.
-
Qual é o número
do apartamento do Bender,
-
que é um personagem
do desenho Futurama?
-
Aqui, a gente pode
dar uma consultada,
-
e você vai verificar que
o número que aparece no seriado
-
é esse número aqui: 00100100.
-
Esse número que aparece
lá no desenho, no seriado,
-
na verdade é um número
que está na base 2.
-
Então, nós podemos lembrar
-
que basta converter
esse número para a base 10.
-
Assim, a gente descobre
qual é o número
-
do apartamento do Bender
na base 10.
-
Na base 2 é isso aqui
mesmo, 00100100.
-
Então, lembrando que
cada algarismo multiplica
-
uma certa potência de 2,
-
a gente acaba ficando com
esse algarismo 0 aqui à direita,
-
multiplica 2 elevado a 0,
-
esse algarismo 0,
multiplica 2 elevado a 1,
-
e dessa forma 0
multiplica 2 quadrado,
-
esse 0 multiplica 2 ao cubo,
-
o 1 já vai multiplicar
aqui o 2 à quinta,
-
já esse 0 multiplica o 2 à sexta
-
e esse outro algarismo 0
multiplica 2 à sétima.
-
E aí, fazendo as contas,
-
veja que a gente tem vários locais
aqui onde o resultado é 0.
-
Aqui vai dar 0,
aqui vai dar 0, aqui vai dar 32,
-
aqui é 0, aqui é 0, aqui é 4,
-
aqui é 0 e aqui é 0.
-
Então, você fica com 32 mais 4
que é 36 na base 10.
-
Portanto, a gente pode dizer que o
número do apartamento do Bender
-
na base 10, é 36.
-
Nós também conseguimos converter
-
um número da base 10
para a base 2.
-
Esse processo é o processo inverso,
então, de conversão,
-
e nós trabalhamos
com uma técnica
-
que é chamada de técnica
das divisões sucessivas.
-
Ou seja, é um processo no qual você
considera um valor da base 10,
-
esse valor será sucessivamente
dividido por 2,
-
e aí você aproveita os valores que
surgem desse processo de divisão.
-
Veja alguns exemplos, então.
-
Vamos considerar
a conversão do 35 e do 19,
-
que são números da base 10
para a base 2.
-
Então, eu vou começar aqui
dividindo 35 por 2.
-
O resultado dessa divisão
é 17 e sobra 1,
-
veja que esse 1
é o resto da divisão.
-
35 dividido por dois
dá 17, sobra 1.
-
Agora, esse 17,
que foi o resultado da divisão,
-
eu divido por 2 novamente.
-
17 dividido por 2
dá 8, sobra 1,
-
8 dividido por 2
dá 4 e sobra 0.
-
4 dividido por 2
vai dar 2 e sobra 0,
-
e 2 dividido por 2
dá 1 e sobra 0.
-
Uma vez que você obteve
aqui o algarismo 1,
-
que foi a última divisão aqui,
2 dividido por 2 que dá 1,
-
a gente aproveita
esse quociente que é 1
-
e os demais restos da divisão.
-
Então repare que, nessa técnica
de divisões sucessivas,
-
você considera esse
último quociente,
-
que foi o algarismo 1,
-
e os demais restos que surgiram
nas divisões sucessivas,
-
nesse sentido aqui,
conforme essa flecha indica.
-
Então, veja que esse número 35,
convertido para a base 2,
-
é representado como 1000011.
-
Veja aqui, 1000011 na base 2.
-
Portanto, 35 na base 2
-
é esse número que nós
estamos observando aqui.
-
Vamos ver mais um exemplo:
o 19 para a base 2
-
é só dividir sucessivamente por 2,
-
já que você quer converter
para a base 2, nesse caso aqui.
-
Então, 19 dividido
por 2 vai dar 9,
-
9 vezes dois dá 18,
para 19 sobra 1,
-
9 por 2 dá 4, resta 1,
-
4 dividido por 2 vai dar 2,
2 vezes 2 dá 4, sobra 0,
-
2 dividido por 2 dá 1,
-
1 vezes 2 é igual a 2
e vai sobrar 0.
-
Agora, eu vou considerar
esse último quociente
-
e os demais restos
nesse sentido aqui,
-
da direita para a esquerda.
-
Portanto, o número 19
convertido para a base 2
-
vai ficar assim: 10011,
10011 na base 2.
-
A gente indica esse 2
pequenininho aqui
-
para reforçar que se trata
de um número da base 2.
-
Mais uma situação aqui, 67.
-
Veja: é só você dividir o 67
sucessivamente por 2,
-
observando os restos e
o último quociente que você obteve.
-
Dessa maneira, então,
-
considerando o último quociente
e todos os restos que surgiram,
-
e nesse sentido aqui,
da direita para a esquerda,
-
você vai obter a conversão
de 67 para a base 2,
-
que acabou resultando em 10000,
quatro zeros, 1 e 1 na base 2.
-
Dessa maneira, você sabe
como fazer conversões
-
de números da base 10
para a base 2.
-
Quando nós representamos
números inteiros
-
em um sistema computacional,
há uma técnica que é utilizada.
-
que nós chamamos
de sinal de magnitude.
-
Nesse caso,
um bit é reservado
-
para você indicar
qual é o sinal do número,
-
se ele é positivo
ou se é negativo.
-
Nós utilizamos o algarismo 0
lá do sistema de base 2
-
para indicar que o valor
é positivo à esquerda,
-
e indicamos o 1 à esquerda
do número da base 2
-
para indicar que
aquele número é negativo.
-
Essa técnica então é chamada
de sinal de magnitude,
-
para a gente informar
se o número é positivo ou negativo.
-
Nós temos um desafio também
-
que consiste na conversão
de números decimais para base 2.
-
Veja como fica esse processo.
-
Sendo assim, para converter
números da base 10
-
que apresentam casas decimais,
-
nós, inicialmente,
convertemos a parte inteira,
-
a parte que está à esquerda
da vírgula para a base 10,
-
e em seguida, a gente vai
duplicando os valores que surgem,
-
a parte decimal,
-
a gente vai multiplicando
sucessivamente por dois, duplicando,
-
até que a gente não tenha
mais a parte decimal,
-
essa parte fracionária.
-
Observando o exemplo aqui,
vai ficar um pouco mais claro.
-
Por exemplo:
eu tenho o número 0,1875,
-
e esse número está na base 10,
é um número decimal mesmo,
-
convencional, 0,1875,
-
e eu quero converter
esse número para a base 2.
-
Então, esse número corresponde
a um certo x na base 2,
-
digamos assim.
-
Para isso, então,
a gente vai observar
-
que a parte inteira aqui, a parte
que está à esquerda da vírgula,
-
é 0.
-
Então, como a parte que está
à esquerda da vírgula é 0,
-
na parte que fica
à esquerda da vírgula,
-
na base 2,
a gente também vai ter 0.
-
Se nós tivéssemos um outro valor
aqui à esquerda da vírgula,
-
nós iríamos utilizar o método
das divisões sucessivas
-
para determinar como ficaria
esse número na base 2.
-
E aí, feita a conversão, eu deixaria
aqui à esquerda da vírgula
-
o valor que corresponde
a parte inteira aqui
-
convertido para a base 2,
-
justamente aqui
à esquerda da vírgula.
-
Agora, como no caso é 0,
a gente manteve o 0
-
à esquerda da vírgula.
-
O desafio é converter esse 1875,
que é a casa decimal aqui,
-
para a base 2.
-
Para isso, então,
a gente multiplica por 2.
-
Veja que o resultado dá 0,3750.
-
Agora, a gente segue
com essa parte decimal,
-
que é o 3750, o 0,3750,
também multiplicado por 2.
-
Mais uma vez: a parte decimal,
que é o 0,750, 0,75,
-
multiplica por 2.
-
Veja que o resultado
vai dar 1,5, um e meio, 1,50.
-
Na próxima etapa
eu vou elevar só a parte decimal,
-
que é o 0,50, não o 1,50,
repare só.
-
Só o 0,50 vem para cá
e você multiplica por 2,
-
e veja que o resultado vai dar
um número inteiro, dá 1.
-
Então, como aqui eu cheguei
em um valor inteiro,
-
a gente para o processo
de duplicação,
-
de multiplicação por dois.
-
E aí, basta a gente
considerar então
-
esses algarismos que nós
destacamos aqui na cor laranja.
-
Veja que nós consideramos esse
valor que está à esquerda de 0,
-
à esquerda da vírgula,
melhor dizendo,
-
que é o 001 e 1.
-
Então, esses quatro
algarismos aqui
-
representam os quatro
algarismos da parte decimal.
-
Portanto, a parte inteira
desse número na base 10 é 0,
-
e a parte inteira na base 2
acabou ficando 0 também.
-
A parte decimal desse número
da base 2 é 1875,
-
e convertendo esse 1875
para a base 2,
-
a gente acabou encontrando
esse 0011 na base 2.
-
Veja então que é dessa forma
que a gente faz a conversão
-
de um número decimal
da base 10 para base 2.
-
Vamos ver um segundo exemplo,
-
onde esse processo de conversão
de um número decimal
-
para a base 2 acaba
gerando, por exemplo,
-
uma situação de indefinição
do número de casas decimais
-
e, consequentemente,
um tipo de erro em computação.
-
Logo após esse processo
de multiplicação sucessiva por 2,
-
nós encontramos então esses
algarismos que ficaram aqui
-
destacados na cor laranja.
-
Vamos então aproveitar
justamente esses algarismos
-
que vão representar a parte
decimal do número na base 2.
-
Assim como 1875 representa a parte
decimal do número na base 10,
-
0011 representa a parte decimal
do número na base 2.
-
Então observe que, nesse caso,
-
para a conversão de números
decimais para a base 2,
-
nós utilizamos esse método
de duplicação sucessiva
-
da parte decimal do número.
-
É um processo, então,
que nos permite
-
fazer esse tipo de
conversão de decimais
-
na base 10 para a base 2.
-
Vamos ver um outro exemplo
-
onde essa conversão
de um número decimal
-
da base 10 para a base 2
acaba gerando
-
uma indefinição
de casas decimais
-
e, consequentemente,
um tipo de erro em computação.
-
Nesse exemplo 2, nós vamos
considerar então o número 0,1,
-
um decimal muito comum,
-
em termos percentuais isso aqui
seria 10%, por exemplo,
-
a famosa taxa percentual de 10%.
-
Bem, 0,1, para ser
bem preciso, na base 10.
-
Eu quero saber
como é que fica 0,1,
-
que é o número
da base 10, na base 2.
-
Então, o processo é esse aqui.
-
A parte inteira é 0 mesmo,
-
e a parte decimal é o 0,1,
é o vírgula 1
-
que fica aqui
à direita da vírgula.
-
Esse 0,1 eu multiplico por 2,
o que vai gerar 0,2,
-
e aí, agora eu considero
a parte decimal.
-
Destaque para o 0 aqui,
à esquerda da vírgula,
-
e a parte decimal, que é 0,2,
eu multiplico por 2 novamente,
-
o que vai gerar 0,4.
-
Destaque para o 0,
-
a parte decimal, que é 0,4,
eu duplico novamente, gerando 0,8,
-
duplico novamente,
gerando 1,6.
-
Agora, repare que o que eu levo
para a próxima etapa não é 1,6.
-
O que eu levo para a próxima
etapa de duplicação
-
é só a parte decimal,
que é o 0,6.
-
Vezes 2, isso aqui vai gerar 1,2.
-
Novamente: repare que,
para a próxima etapa de duplicação,
-
o que eu levo é a parte decimal.
-
Mantenho o algarismo 1 aqui
e levo o 0,2 para ser duplicado,
-
gerando o 0,4.
-
Entretanto,
quando chega aqui,
-
eu acabo percebendo que
nós voltamos para essa etapa,
-
onde já tinha aparecido 0,4.
-
Isso significa que,
daqui para frente,
-
esse processo vai ficar
se repetindo indefinidamente.
-
Então, na conversão de 0,1
para a base 2,
-
acaba ocorrendo
esse tipo de situação aqui.
-
Nós dizemos então que o número
que corresponde a 0,1 na base 2
-
acaba ficando com
esse aspecto aqui.
-
Veja só: 000, já indicamos aqui,
000 à direita da vírgula,
-
depois nós temos o 1 e o 1,
-
e depois o processo
começa a se repetir novamente,
-
aí a gente acaba
recomeçando o processo.
-
0011, 001, 001.
-
Então, você tem uma dízima
periódica na base 2.
-
Veja, é um número decimal,
é um decimal exato na base 10,
-
e no momento de fazer
a conversão para a base 2,
-
eu acabo me deparando aqui
com uma dízima periódica.
-
E aí nós temos a questão
da limitação do número
-
de casas decimais que o computador
que nós estamos utilizando
-
pode oferecer.
-
Como nós temos um número finito
de casas decimais à disposição,
-
nós vamos acabar por trabalhar
com apenas algumas casas decimais
-
dessa conversão de 0,1
para base 2.
-
Um teste que nós podemos fazer aqui
é o processo inverso,
-
no qual eu considero aquele
número da base 2,
-
que nós acabamos de obter,
-
convertido para a base 10.
-
Ou seja: nós convertemos o 0,1
-
que estava na base 10
para a base 2,
-
encontramos aquele resultado,
aquela dízima periódica.
-
Perfeito?
-
Agora, eu vou considerar aquela
dízima periódica que está na base 2,
-
e nós vamos converter
para a base 10.
-
Veja como fica então o resultado
nesse tipo de conversão.
-
Se nós considerarmos
então o número 0,1
-
que está na base 10
convertido para a base 2,
-
nós encontramos
esse número aqui.
-
Vimos o processo
no slide anterior.
-
Agora, fazendo a
transformação inversa,
-
se nós convertermos esse número
da base 2 para a base 10,
-
veja que a gente acaba
encontrando esse valor aqui,
-
de 0,09960937500.
-
Veja que esse valor fica
próximo do 0,1, na realidade,
-
porque 0,099
está muito próximo de 0,1,
-
entretanto, já não é
mais exatamente 0,1.
-
Então, dependendo do número
de casas decimais
-
que eu utilize aqui no processo
inverso de conversão para a base 10,
-
veja que o número
já não volta mais para 0,1.
-
Por exemplo:
nesse caso aqui,
-
se você fizer 0,1
menos esse valor,
-
para você ver
qual é a diferença aqui,
-
você vai ver que nós temos aqui
um erro absoluto de 0,0039.
-
Esse erro aqui
é um erro absoluto,
-
é a diferença direta entre
o número que está na base 10,
-
o número original,
-
e o número que a gente obteve
após essa transformação inversa.
-
E esse tipo de situação
gera um problema,
-
gera um tipo de erro
no processo de trabalho,
-
com números
que estão na base 10
-
e serão convertidos
para a base 2 e vice-versa.
-
Sendo assim,
-
é necessário fazer a previsão
desses tipos de erros no sistema.
-
Nós temos informações
que ficam disponíveis nos sistemas,
-
deixando claro então
quais são os erros
-
que essas conversões
entre bases estão gerando.
-
Nós temos, inclusive,
uma área muito grande
-
no tratamento de erros,
que é representada pelas normas.
-
Nós temos diferentes
tipos de normas
-
que estabelecem quais são
essas margens de erros
-
envolvidas nessas
conversões de base.
-
O exemplo que
nós trouxemos aqui
-
é justamente essa conversão
de números decimais
-
que estão na base 10,
-
para números decimais
que ficam na base 2,
-
onde nós pudemos notar
esses erros que vão ocorrer
-
e a importância de se fazer
essa previsão dos erros,
-
buscando sempre
a minimização desses erros.