Representação Numérica - Giga Mundo

Propaganda
2 Representação numérica
Agora que já conhecemos um pouco da história da Computação e da arquitetura
de um computador, estudaremos como podemos representar números em outras bases
numéricas e como algumas operações básicas podem ser realizadas sobre esses números
a fim de compreender como um computador realiza certos cálculos.
2.1.
Bases mais estudadas em Computação
O sistema numérico que nós utilizamos em nosso dia-a-dia possui a base
decimal, isto é, utiliza-se de dez valores para a representação dos algarismos de um
número. E esses dez valores são os números de 0 a 9.
Quando desejando representar um número qualquer em uma base decimal,
geralmente utilizamos a representação na forma de N, onde N é composto pelos
algarismos pertencentes àquele número.
Entretanto, em Computação, há outras bases numéricas que podem ser
empregadas, sendo as mais utilizadas a base binária e a base hexadecimal.
A base binária, como o próprio nome diz, é aquela em que somente dois valores
são admitidos para representar os algarismos de um número e tais valores são 0 e 1. Esta
é a forma como a informação está armazenada dentro do computador, tanto quando em
memória secundária quanto quando em execução, na memória primária.
Quando desejando representar um número qualquer em uma base binária,
geralmente utilizamos a representação na forma de (N)2 , onde N é composto pelos
algarismos pertencentes àquele número.
A base hexadecimal é aquela em que 16 valores são admitidos na representação
dos algarismos, sendo esses valores os números de 0 a 9, acrescidos das letras do
alfabeto de A até F. Esta é uma forma comum que o computador utiliza para enviar ao
usuário dados que, se representados na base binária ou decimal, assumiriam números
ainda maiores quanto ao número de algarismos, como endereços de memória e códigos
de erro, bem como a forma como certos programas que manipulam cores podem receber
valores para uma cor.
Quando desejando representar um número qualquer em uma base hexadecimal,
geralmente utilizamos a representação na forma de (N)16 , onde N é composto pelos
algarismos pertencentes àquele número.
Se quisermos representar o número 217 na base binária, como podemos fazê-lo?
Qual a melhor forma para representarmos um número em uma base qualquer?
2.1 Representação de um número em uma base qualquer
Há uma regra geral para a representação de um número em uma base qualquer.
Um número X qualquer na base decimal terá em uma base b qualquer os algarismos an
an-1 ... a1 a0 se X = an.bn + an-1.bn-1 + ... + a1.b1 + a0
Em outras palavras:
X = an.bn + an-1.bn-1 + ... + a1.b1 + a0
X = ( an an-1 ... a1 a0 ) b
Estudemos agora a conversão de números de uma base numérica para outra,
onde poderemos colocar tal conhecimento em prática.
2.2 Conversão de base
2.2.1 Base decimal para base binária
Lembre-se bem disto: A forma mais fácil de converter um número da base
decimal para qualquer outra base (inclusive a binária) é fazendo a divisão inteira desse
número pelo valor da base (neste caso, 2) e até que o quociente seja zero. Neste ponto
então, os restos da divisão serão os nossos algarismos, sendo o primeiro resto
encontrado o termo a0 , isto é, o último algarismo, aquele que representa as unidades, e
o último resto encontrado o termo an , isto é, o primeiro algarismo.
Vejamos agora um exemplo mostrando como converter o número 13 da base
decimal para a base binária:
Sendo assim, temos que: 13 = (a3 a2 a1 a0) 2 = (1101) 2
2.2.2 Base binária para base decimal
Geralmente a forma mais fácil de converter um número em uma base b qualquer
(neste caso, binária) para a base decimal é utilizando-se da expressão que iguala um
número na base decimal à soma dos algarismos da base b multiplicados pela base
elevada aos seus respectivos expoentes (X = an.bn + an-1.bn-1 + ... + a1.b1 + a0 ).
Pode até parecer complicado falando, mas na prática é bem fácil. Suponha que
temos o número na base binária (1101) 2 e queremos sua representação na base decimal.
Primeiro, vejamos a representação desse número binário em termos de coeficientes an:
(1101) 2 = (a3 a2 a1 a0) 2
Agora, vamos utilizar da regra supracitada para descobrir quanto isso vale na
base decimal:
X = a3.b3 + a2.b2 + a1.b1 + a0
X = 1.23 + 1.22 + 0.21 + 1
X = 13
Sendo assim, temos que (1101) 2 = 13
2.2.3 Base decimal para base hexadecimal
A conversão da base decimal para a base hexadecimal faz-se de forma similar,
lembrando somente que a base para a qual se está convertendo agora é a base 16 e que
os restos com valores de 10 a 15 devem ser convertidos para os seguintes algarismos:
•
10 = A
•
11 = B
•
12 = C
•
13 = D
•
14 = E
•
15 = F
Que tal convertermos o número 678 da base decimal para a base hexadecimal?
Sendo assim: 678 = (a2 a1 a0) 16 = (2A6) 16
2.2.4 Base hexadecimal para base decimal
De forma similar à conversão da base binária para decimal, podemos nos utilizar
das expressões para representação de um número em uma base qualquer para converter
da base hexadecimal para a base decimal.
Vejamos então como seria a conversão do número (2A6) 16 da base hexadecimal
para a base decimal (perceba que, agora, colocaremos o valor 10 no lugar de “A” na
hora de efetuar o cálculo):
(2A6) 16 = (a2 a1 a0) 16
X = a2.b2 + a1.b1 + a0
X = 2.162 + 10.161 + 6
X = 512 + 160 + 6
X = 678
Sendo assim (2A6) 16 = 678
2.2.5 Base binária para base hexadecimal
O processo de conversão da base binária para a base hexadecimal geralmente é
feito de uma forma um pouco diferente, mas tão simples quanto tem sido até agora.
Em um número binário, cada grupo de quatro algarismos poderá assumir valores
de 0 a 15 que são os valores correspondentes aos que um algarismo na base
hexadecimal pode acontecer. Caso você esteja curioso para entender por que isso
ocorre, perceba que: 24 = 161 , o que significa que a combinação de 4 elementos com
dois valores distintos dará a mesma variabilidade que a combinação de 1 elemento com
16 valores distintos ou, traduzindo para o que nos interessa aqui, 4 algarismos em uma
base 2 assumem os mesmos valores possíveis que 1 algarismo na base 16.
Apenas uma curiosidade: apesar de não estarmos tratando aqui da base octal
(isto é, a representação numérica de um valor com somente oito algarismos possíveis),
podemos dizer, a partir dessa fórmula, que 3 algarismos na base binária representam 1
algarismo na base octal.
Agora que sabemos disso, precisamos agrupar os algarismos binários em grupos
de 4 algarismos, começando pelo algarismo a0 e indo até o algarismo an. Você pode
estar se perguntando: e como proceder caso faltem algarismos para completar o último
grupo? Bem, neste caso, basta completar com zeros à esquerda do algarismo an.
Depois disso, basta fazer a conversão de cada grupo para o algarismo
hexadecimal desejado e aquele algarismo ocupará a mesma posição que aquele grupo
ocupa no número original.
Nosso problema agora, então, é quanto a converter cada grupo de quatro
algarismos, não é mesmo? Vejamos, por exemplo, como podemos converter (0111)2 em
hexadecimal.
A forma mais simples é convertê-lo em decimal e depois no algarismo
hexadecimal correspondente. Teríamos então que:
(0111)2 = (a3 a2 a1 a0)2
X = a3.b3 + a2.b2 + a1.b1 + a0
X = 0.23 + 1.22 + 1.21 + 1
X=7
Entretanto, há outro jeito de calcular isso sem precisar fazer todo esse cálculo,
pois como o valor de cada algarismo em uma base binária é somente zero ou um,
teremos que em decimal cada termo valerá:
•
a0 = zero se a0 = 0, 1 se a0 = 1;
•
a1 = zero se a1 = 0, 2 se a1 = 1;
•
a2 = zero se a2 = 0, 4 se a2 = 1;
•
a3 = zero se a3 = 0, 8 se a3 = 1;
Então, na prática, basta somar os valores correspondentes às posições com
valores diferentes de zero. Então no exemplo anterior, (0111)2, a0, a1 e a2 são diferentes
de zero, o que significa que o valor em decimal que procuramos é 1 + 2 + 4 = 7. Pronto,
agora é só converter para hexadecimal.
E o número decimal 7 em hexadecimal também é representado por 7 (ou melhor
dizendo, (7)16 ).
Agora que já explicamos como funciona todo o processo, vejamos como
funciona para um número um pouco maior. Convertamos (1101010111)2 para a base
hexadecimal:
Então, temos que (1101010111)2 = (357)16
2.2.6 Base hexadecimal para base binária
Como se pode imaginar, basta executarmos o contrário do que fizemos na
conversão da base binária para a hexadecimal, isto é, basta encontrarmos para cada
algarismo em hexadecimal os quatro algarismos binários que representam o mesmo
valor e aquele grupo deverá ocupar no novo número a mesma posição que o algarismo
hexadecimal possui no número original.
Veja abaixo como podemos converter (2A6)16 para a base binária:
Ou seja, (2A6)16 = (001010100110)2.
Bem, agora que já sabemos como converter números de uma base para outra,
vejamos como podemos efetuar as operações básicas (adição, subtração, multiplicação e
divisão) em bases não-decimais.
2.3 Operação de adição
O processo de adição é exatamente o mesmo daquele ocorrido em bases
decimais, começando-se a operação de soma a partir do algarismo de menor valor ( a0 )
e lembrando que sempre que alcançar ou exceder o valor da base há a regra do “vai a
um”, onde se subtrai o valor da base do valor encontrado e soma-se um ao próximo
algarismo, até que o resultado encontrado seja menor que o valor da base.
Essa regra é válida para qualquer base, mas aqui estaremos estudando somente
com as bases binárias e hexadecimais.
2.3.1 Na base binária
A fim de treinarmos o que acabamos de aprender, façamos a soma de (1011)2 +
(1010)2:
Perceba que quando somamos os algarismos da segunda posição (contando do a0
até o an) de cada número (1 + 1) alcançamos o valor da base (2), motivo pelo qual
aplicamos a regra do “vai a um”, quando então acrescentamos 1 ao próximo algarismo
(o algarismo com valor zero, à esquerda, a terceira posição) e subtraímos o valor da
base do que foi encontrado (2 – 2 = 0), sendo então este o resultado para a segunda
posição.
Desta forma: (1011)2 + (1010)2 = (10101)2
2.3.2 Na base hexadecimal
E agora, vamos efetuar a soma de dois números hexadecimais: (25A6)16 +
(3D23)16.
Perceba que, quando somamos a terceira posição alcançamos um valor superior
ao da base (5 + D = 18), quando aplicamos novamente a regra do “vai a um”, somando
um ao próximo algarismo (2 + 1 = 3) e subtraindo a base do resultado encontrado (18 –
16 = 2), ficando então com 2 como sendo o algarismo da terceira posição de nosso
resultado.
Resultado final: (25A6)16 + (3D23)16 = (62C9)16
2.4 Operação de subtração
A operação de subtração também ocorre de forma similar à operação na base
decimal, lembrando que quando o valor a ser subtraído é maior que o termo do qual
estamos subtraindo precisamos “pegar um emprestado” do próximo algarismo, o que
significa que reduzimos em um o próximo algarismo e somamos o valor da base ao
algarismo atual (perceba bem, somamos o valor da base!).
2.4.1 Na base binária
Vejamos agora um exemplo de como se processa a operação de subtração na
base binária realizando o cálculo (1011)2 – (110)2 .
Perceba que no terceiro algarismo não é possível subtrair 1 de 0, então “pegamos
um emprestado” do próximo algarismo e somamos 2 ao 0. Agora sim, podemos subtrair
1 de 2 e temos como resultado para aquele algarismo o valor 1.
Resultado: (1011)2 – (110)2 = (101)2
2.4.2 Na base hexadecimal
Agora, efetuemos uma operação de subtração na base hexadecimal. Realizemos
o cálculo (2C8)16 – (1A9)16 .
De forma análoga ao caso anterior, teremos na primeira posição uma subtração
onde o valor subtraído (9) é maior do que o termo do qual subtraímos (8), então
“pegamos um emprestado” do próximo algarismo e somamos 16 aos 8, obtendo 24 e
então podemos realizar a subtração, encontrando 15 para essa posição. Basta agora
converter 15 para o algarismo correspondente, que é F.
Resultado: (2C8)16 – (1A9)16 = (11F)16
2.5 Operação de multiplicação
Mais uma vez, dá-se o processo de forma similar à operação em base decimal,
lembrando mais uma vez que, quando um valor encontrado para um algarismo for igual
ou maior que o valor da base, deve-se usar a regra do “vai a um” até que o algarismo
tenha um valor menor que o valor da base.
Essa regra é válida para a operação de multiplicação em todas as bases,
entretanto não é necessário o “vai a um” para a base binária, uma vez que cada valor é
somente “zero” ou “um” e, portanto, estaremos multiplicando sempre por “zero” ou
“um”, nunca então superando o valor da base (2).
2.5.1 Na base binária
Vejamos agora um exemplo de multiplicação na base binária: (10)2 x (1101)2 =
(11010)2.
Resultado final: (10)2 x (1101)2 = (11010)2
2.5.2 Na base hexadecimal
Realizemos agora uma operação de multiplicação na base hexadecimal: (A6)16 x
(538)16 .
Perceba que já na primeira multiplicação já atingimos um valor superior ao da
base (6 x 8 = 48). Teremos então que executar o processo de “vai a um” três vezes, até
que o resultado seja menor que a base (o resultado chegará a zero). Isso aconteceu
porque 16 x 3 = 48, ou seja, ao subtrairmos o número 16 três vezes de 48 chegaremos
ao valor zero. Teremos então como algarismo para a primeira posição o número “zero”
e ao resultado da próxima multiplicação somaremos 3. O próximo algarismo a ser
multiplicado por 6 é 3 e o produto dará 18, que é outra vez maior que a base. Teremos
então um “vai a um”, o resultado ficará então como sendo 2, que já é menor que a base.
Somamos então o 2 com o 3 que tivemos no “vai a uns” do algarismo anterior e teremos
5. Perceba que se tivesse dado um valor igual ou superior ao da base, teríamos que fazer
outro “vai a um”, que seria somado com aquele já realizado para somar com o resultado
da próxima multiplicação. Muito cuidado, portanto, para não se enganar no meio de
tantos “vai a uns”!
Resultado: (A6)16 x (538)16 = (36250)16
2.6 Operação de divisão
A forma mais fácil é converter para a base decimal, efetuar o cálculo e converter
para a base desejada.
2.7 Exercícios
1. Efetue os seguintes cálculos, convertendo antes os valores para cada uma das
três bases (em outras palavras, para cada item, converta primeiro os operadores
para as bases binária, decimal e hexadecimal e então realize os três cálculos,
obtendo assim o resultado para cada uma das bases):
a) 3 + 5
b) 12 + 16
c) (10110)2 + (10100)2
d) (AF8)16 + (5C0)16
e) (10110)2 + (5C0)16
f) 120 - 31
g) (1011101)2 – (100110)2
h) (AF8)16 – (5C0)16
i) (AF8)16 – (1011101011)2
j) (CB)16 x (101)2
Download