Você está na página 1de 14

APOSTILA DO MANOLO DE SISTEMAS DE INFORMAO #PASSENOPATER

1 INTRODUO: BINRIOS PRA QUE?


Pra voc que j se perguntou um milho de vezes pra que raios voc est estudando
isso, a resposta muito simples : pra nada. O sistema binrio um sistema numrico
desenvolvido para representar a maneira como as mquinas lidam com as informaes,
e as mquinas, que lidam com energia eltrica para funcionarem, basicamente s
compreendem dois tipos de informao : ou est passando corrente eltrica por
determinado lugar, ou no, ou seja, 0 ou 1.
Cada computador tem uma determinada quantidade de bits com os quais consegue
trabalhar, sendo que os bits so a quantidade de binrios que a mquina trabalhar de
uma vez. Uma mquina de 8 bits, por exemplo, tem 8 casas para trabalhar binrios, ou
seja, 1111 1111 o maior numero que pode ser formado desse sistema que capaz de
reproduzir 256 combinaes diferentes.
Na moral, pra ns isso algo completamente dispensvel, quase sem nenhuma utilidade
prtica (uma vez que mesmo ao trabalharmos com cor em meios digitais, onde usamos
esse tipo de informao, no preciso ter conhecimento de binrios ou hexadecimais
para operar os softwares). Entretanto, preciso passar na matria do Pater pra sair da
ECO com o diploma (a menos que voc seja o manolo que o Ref lanou como aprovado
e deu aquele rolo todo), ento vamos parte que interessa.

2 SISTEMAS NUMRICOS
J natural para ns e estamos completamente habituados a utilizar o sistema decimal
em nossas vidas. Outros sistemas numricos parecem estranhos, porm no passam de
outras maneiras de se representar os nmeros. No sistema decimal trabalhamos com 10
caracteres, que vo de 0 a 10. O sistema binrio trabalha apenas com 0 e 1, e o sistema
hexadecimal trabalha com caracteres de 0 a F. Basicamente a logica desses nmeros
ainda a mesma que vemos no sistema decimal.
Por exemplo, quando contamos de 0 at 9, o 9 o ultimo numero que o sistema decimal
consegue representar, por isso passamos do 9 para o 10, colocando um 0 no final do
numero, que o primeiro numero do sistema, e colocando o 1 em uma segunda casa. No
caso do sistema binrio, como s temos 0 e 1 disponveis, quando temos o 1 e somamos
mais um, j chegamos estvamos no ultimo numero que o sistema capaz de
representar, por isso pulamos de 1 para 10 quando fazemos essa soma. Por isso em
binrio 1+1=10, e assim por diante, e por equivalncia para com o sistema decimal, esse
10 binrio na realidade o 2 decimal.
Em hexadecimal a logica a mesma. Esse sistema utilizado basicamente pelas suas
equivalncias com binrios que veremos a seguir, que fazem com que, atravs deles,
possamos representar os nmeros binrios grandes de maneira que fiquem menos
absurdos. Hexadecimais usam mais caracteres do que os decimais, por isso, quando
somamos 1+9, que em decimal seria 10, em hexadecimal temos o A para representar
esse numero. Ento quando chegamos no F, que equivale ao 15 decimal, chegamos ao
ultimo numero do sistema hexadecimal, e ento, somando F+1, chegamos novamente ao
10, que em um sistema hexadecimal, equivale ao nosso bom e velho 16.
Vocs j tem essa tabela, mas para o caso de algum no ter, esse o seu principal
ponto de referencia para as converses que veremos a seguir.


3- CONVERSES
Observao: Usarei, antes dos nmeros letras para identificar o sistema numrico
utilizado. Basicamente:
h=hexadecimal
b=binrio
d=decimal
Ento, por exemo d10 = 10 unidades, hA = 10 unidades e b1010 = 10 unidades.

3.1 BINARIO PARA HEXADECIMAL

Em cima dessa tabela, basta pegarmos o numero binrio e irmos vendo suas
equivalncias em hexadecimal. Anotar o numero binrio de trs para frente j separando
ele em blocos de 4 binrios, ajuda no processo. Basicamente s verificar equivalncias
e substituir. Por exemplo:
Tomando como base o numero b1100 0011 1010 1101 1111 0010
Se quisermos converter esse binrio para hexadecimal, basta verificarmos que
1100 = C 0011 = 3 1010 = A 1101 = D 1111 = F 0010 = 2
Uma vez que j sabemos as equivalncias, j temos nosso numero. Ou seja,
b1100 0011 1010 1101 1111 0010 = hC3ADF2
Mas e se o numero no completa 4 casas em todos os grupos? Lembrando que sempre
devemos dividir o numero em grupos de 4 de trs pra frente e pegando como exemplo o
numero 11 0011 1100 0111, basta acrescentar zeros esquerda at que o ultimo grupo
complete 4 casas, nesse caso, chegando ao numero 0011 0011 1100 0111, que
exatamente igual ao 11 0011 1100 0111, uma vez que zeros a esquerda no acrescentam
em nada ao numero. Depois disso s converter.

3.2 HEXADECIMAL PARA BINRIO

Para converter de hexadecimal para binrio, o processo exatamente o mesmo que
descrevi anteriormente na seo de binrio para hexadecimal, s que ao contrrio. Voc
verifica quais binrios so equivalentes aos determinados hexadecimais e substitui, por
isso no preciso me prolongar nessa seo.

3.3 Binrio e hexadecimal para decimal
Esse um ponto que j fica mais chato, porque comea a envolver contas. Porm
muito mais fcil do que parece. Em primeiro lugar, vocs j tem isso no material que o
pater passou, na parte da tabela das potencias de 2 e 16, mas segue novamente algumas
como referncia para ajudar vocs a entender essa parte:

Potncia de 16 Decimal
16
0
1
16
1
16
16
2
256
16
3
4096
16
4
65 536
16
5
1 048 576
16
6
16 777 216

Mas porque eu no estou passando a tabela de potencia de 2 se vamos trabalhar com
converses de binrio tambm? Simplesmente porque vocs vo ignorar essa parte da
tabela de vocs. Converses diretas de binrio para decimal so UM C. Envolvem
muito mais contas do que vocs precisariam fazer normalmente. Como converses de
binrio para hexadecimal so automticas, bastando substituir as equivalncias, o que
vocs vo fazer para converter binrios para decimal primeiro convert-los para
hexadecimal e depois converter o hexadecimal para decimal, pois isso vai economizar
tempo e trabalho de vocs que tero de fazer muito menos contas.
Tomando como exemplo o nmero b1110 0011 1100. Sua equivalncia hexadecimal
hE3C, com o qual vamos trabalhar.
Lembra daquele papo do pater das fichas? Esquece as fichas, porque ningum mais usa
ficha hoje em dia e pensa que voc t jogando banco imobilirio. Cada casa, da direita
pra esquerda, representa uma nota, cujo valor determinado pelas potncias de 16. O
numero que estiver naquela casa indica quantas notas voc tm daquele valor. A
pergunta que voc tm de se fazer para saber o resultado : quanto dinheiro eu tenho?
Exemplo:

E 3 C
_____ _____ _____ _____ _____ _____ _____
7casa 6casa 5casa 4casa 3casa 2casa 1casa
d1677216 d1048576 d65536 d4096 d256 d16 d1

Sabendo, pela tabela de converses de decimal para hexadecimal e binrio que hE =
d14, h3=d3 e hC=d12 e tendo em vista o valor decimal de cada casa, definido pela
tabela das potncias de 16, nesse caso como se tivssemos em nosso jogo de banco
imobilirio, 12 notas de 1 real, 3 de 16 e 14 de 256. Basta multiplicarmos os valores e
somarmos.
12x1=12
16x3 = 48
256x14 = 3584
12+48+3584 = 3644
Logo, nosso querido numero b1110 0011 1100 igual a hE3C que igual a d3644.
isso, apenas isso. Com a tabela das potncias de 16 na mo s voc converter de
binrio para hexadecimal, ver o valor de cada casa, multiplicar e somar, e esqueam
aquelas piraes do Pater, ele tenta fazer aquilo pra ajudar, mas s confunde mais, com
isso vocs convertem tudo.

3.3 DECIMAL PARA HEXADECIMAL E BINRIO

O processo de converso de decimal para Hexadecimal e binrio ainda mais simples.
Mais uma vez eu digo, voc NO VAI FAZER A CONVERSO DIRETA PRA
BINRIO. Converta primeiro pra hexadecimal, isso vai te economizar tempo e
trabalho, depois s verificar as equivalncias.
Basicamente, tudo que necessrio pra converter o numero ir dividindo-o por 16, sem
calcular nmeros fracionrios. Aps feita a primeira diviso, voc comea a montar seu
hexadecimal da direita para a esquerda colocando sempre o que sobrou da diviso
convertido para hexadecimal, e ento dividindo novamente o numero por d16, at
chegarmos ao resultado d0.
Por exemplo, tomando como base o numero d720 880
d720 880 / d16 igual a d45 055 e no h sobras.
Como no h sobras, comeamos a montar nosso hexadecimal por 0. Ento at o
momento temos h0.
Em seguida, dividimos o resultado por d16 novamente:
d45 055 / d16 igual a d2815 e sobram d15.
d15 = hF. Colocando isso no nosso hexadecimal em construo, temos at o momento,
hF0.
Em seguida, dividimos o resultado por d16 novamente.
d2815 / d16 = d175 e sobram d15.
d15 = hF. Colocando isso no nosso hexadecimal em construo, temos at o momento,
hFF0.
Em seguida, dividimos o resultado por 16 novamente.
d175 / d16 = d10 e sobram d15.
d15 = hF. Colocando isso no nosso hexadecimal em construo, temos at o momento,
hFFF0.
Em seguida, dividimos o resultado por 16 novamente.
d10 / d16 = d0 e sobram d10.
d10 = hA. Como o resultado dessa ltima diviso foi 0, significa que no h mais o que
dividir, ento colocando no nosso hexadecimal em construo esse ltimo numero
temos hAFFF0.
Logo, nosso querido d720.880 igual a hAFFF0 que, convertendo pelas equivalncias
igual a b1010 1111 1111 1111 0000.

3.4 ASCII
Em primeiro lugar, segue a tabela de converso para ASCII, que est junto ao material
do pater, mas s por segurana estarei colocando aqui para consulta.

ps. Ignorem os valores escritos a direita da tabela. No fazem o menor sentido.
Basicamente para converses de ASCII para Hexadecimal, basta analisar a linha e a
coluna em que se encontra o caractere e escrever o valor nessa ordem. Cada caractere
em ASCII corresponde a 2 nmeros hexadecimais. Seguindo as numeraes
encontradas na tabela, sempre colocamos o numero da linha em primeiro lugar e da
coluna em segundo. Por exemplo, a letra A (maiscula) em ASCII se encontra na linha
4 coluna 1, por isso representada pelo Hexadecimal h41. As letras PQP por exemplo,
em ASCII, se encontram : P (Maisculo) na linha 5 coluna 0, e Q (Maisculo) na linha
5 coluna 1. Logo, PQP igual a h50 51 50.
Tendo em vista isso, tanto para a converso de Hexa para ASCII e de ASCII para Hexa,
basta consultar a tabela. Para outros sistemas, primeiro convertemos para Hexa e depois
convertemos seguindo as converses anteriormente explicadas.

4 EXCESSOS E COMPLEMENTOS
Excessos e complementos so maneiras de se poder trabalhar com nmeros negativos
em sistemas binrios. Como o sistema binrio no comporta um sinal de mais ou menos
antes do numero para identificarmos, so basicamente convenes que criamos de modo
a conseguir representa-los.
4.1 COMPLEMENTO DE 1
Em primeiro lugar preciso explicar o que um complemento a 1. O complemento de
um numero um numero que tenha os valores necessrios para que todas as casas de
determinado binrio cheguem a 1. Por exemplo, tomando como base o numero
b110001.
O complemento de b110001 b001110, que exatamente o que falta a b110001 para
chegar a b111111.
110001
+001110
111111

4.2 COMPLEMENTO A 2
Ao chegarmos em complemento a 2 finalmente quando entram em jogo os negativos.
Basicamente convencionamos que qualquer numero comeado por 1 negativo e
qualquer numero comeado por 0 positivo. Os nmeros negativos so contados de trs
para frente, logo b11111, que em tese seria o maior numero possvel nesse sistema de 5
bits, na verdade o menor nmero negativo em complemento a 2, que equivalente a
d-1.
O nome de complemento a 2 vm da maneira como fazemos para descobrir o valor
equivalente a esse numero em decimal. Para isso necessrio tirarmos o complemento
do numero binrio negativo, somarmos um a ele e ento convertermos para decimal.
Assim chegamos verso positiva do nmero negativo que estamos procurando.
Tomando como base o numero b10110 em complemento a 2 por exemplo, se quisermos
saber sua equivalncia decimal, primeiro temos de tirar seu complemento, que 01001.
Sabendo seu complemento, somamos um a ele (por isso o nome complemento a 2, pois
o complemento de 1, mais 1). Ento vejamos como fica.

01001
+00001
01010

Aps chegarmos a esse b01010, que o complemento de b10110 somado com 1, basta
convertermos esse binrio para decimal para sabermos sua equivalncia. Como b01010
igual a d10, b10110 igual a d-10, uma vez que d10 sua verso positiva.

4.3 EXCESSOS

Trabalhar com excessos, como excesso de 8, assim como com o complemento a 2
apenas mais uma maneira de se trabalhar com nmeros negativos em binrios. Excesso
pode ser de qualquer valor, como excesso de 8, excesso de 5 ou excesso de 400.
Basicamente, ao definir que se esta trabalhando com excesso, voc est dizendo que
aquele determinado numero igual a d0. Por exemplo, ao trabalhar em excesso de 8,
determina-se que d8 =d 0. Excesso de 5 determinar que d5 = d0. Se d8 = d0, por
exemplo, pra saber o valor de determinado numero em excesso de 8 basta subtrair 8 de
seu valor convertido. Se d8 = d0, ento d9 = d1, d7 = d-1
Por exemplo, trabalhando em excesso de 8, o numero b1010, que corresponderia a d10,
na verdade d2. Definindo que d8 = d0 se b1010 seria igual a d10, ento b1010, em
excesso de 8, igual a d2, uma vez que d10-d8 = d2.

5 SOMA, VLIDOS E INVLIDOS
Soma em binrios ou hexadecimais so como contas em decimais, como citei na sesso
de sistemas numricos. Porm, como estamos trabalhando com mquinas elas so
limitadas por suas especificaes. Ento, por exemplo, em um sistema de 8bits, s
temos 8 casas disponveis para trabalhar. Ento h clculos que podem exceder a
capacidade de representao da mquina.
Em uma soma de b1111 (d15) com b1111 (d15), num sistema de 4 bits, acaba
resultando no seguinte resultado:
1111
+1111
1110
O resultado correto, na realidade, seria b11110 (d30), no b1110 (d14) como
aconteceu. Porm, como a mquina em questo no capaz de utilizar um quinto digito,
no possvel exibir o resultado correto, ento, como d15+d15 no possvel ser igual
a d14, o resultado em questo um resultado invlido.
Ao trabalharmos com complemento de 2, possvel existirem 6 tipos de resultados para
uma conta: Positivos vlidos, Negativos vlidos, Zeros vlidos, Positivos invlidos,
Negativos invlidos e Zeros invlidos.
Em completo a 2 sabemos de antemo que qualquer numero comeado por 1 negativo
e qualquer nmero comeado por 0 negativo. Nesse caso, ignoramos a questo das
casas extras que no seriam utilizadas, pois comum isso acontecer nos nmeros
negativos sem que isso seja problema, a nica coisa que devemos verificar se o
resultado final condizente com o que se espera. Por exemplo, se somarmos dois
nmeros negativos e o resultado final for um nmero positivo, o resultado se trata de
um Positivo Invalido. Se somarmos dois nmeros positivos e o resultado for um
nmero negativo, se trata de um Negativo Invlido. Se somarmos dois nmeros do
mesmo tipo, como dois positivos ou dois negativos, e o resultado for zero, trata-se de
um Zero Invlido.
Exemplos:
1000011
+1011011 Somamos dois negativos e o resultado foi um nmero positivo.
0011110 O resultado um Positivo Invlido

0111011
+0100010 Somamos dois positivos e o resultado foi um nmero negativo.
1011101 O resultado um Negativo Invlido

10000
+10000 Somamos dois negativos e o resultado foi zero.
00000 O resultado um Zero Invlido

6 FUNCIONAMENTO DA MQUINA (IP, RI, SP E ETC)

Essa parte pura decoreba, voc s precisa saber o que cada coisa faz. Ento segue uma
lista de funes e etc.
MP = Memria Principal
Local onde so registrados os dados e programas do computador. como se fosse o
HD.
IP = Instruction Pointer (ou indicador de instrues)
Sua funo registrar o prximo endereo a ser buscado na memria para que RI
execute. Por padro funciona sequencialmente, mas no depende de seu modo
sequencial para funcionar, uma vez que existem operaes que podem tirar o IP de seu
funcionamento linear.
RI = Registrador de Instrues
Sua funo registrar a ao que ser executada
Barramento de dados
Cuida das transferncias envolvendo a memria, garantindo que seja transferido apenas
determinadas partes.
Barramento de Endereos
Local onde so catalogados os endereos da memria e buscados para serem
executados.
Barramento de Controle
Determina se uma operao de escrita ou leitura na memria principal. Por exemplo,
se h uma operao entre o RI e a memria principal, ele o que determina se o RI est
lendo algo da memria ou gravando algo na memria.
Acumuladores
Registradores de uso geral do processador que servem para guardar resultados de
operaes que no sero gravados na memria. Basicamente, se no houver meno de
para onde vai determinado resultado, por padro ele vai para os acumuladores.
SP = Stack Point
Marca o ponto de retorno caso seja realizado um CALL
FLAGS
Determinam se a ultima operao realizada pela mquina deu ou no 0. utilizado para
saltos condicionais.

A mquina, ao ser ligada, comea a executar as operaes que se encontram na
memria. O IP, por padro segue linearmente, indicando os endereos na memria a
partir do primeiro. Resumidamente, o IP marca o endereo da prxima ao a ser
executada. Atravs do Barramento de Endereos busca-se o local indicado na
memria e atravs do Barramento de Dados se transfere o contedo para o RI, com o
Barramento de Controle determinando que esta uma operao de leitura na
memria. Aps o contedo ser copiado para o RI, o IP atualiza para o prximo numero
da sequncia e ento o RI executa a funo que foi copiada para ele.
Entre as operaes que podem ser realizadas pelo RI, alm de operaes de escrita,
leitura e etc... Existem as chamadas Operaes de Controle
Operaes de Controle
Operaes que tiram o IP de seu fluxo linear, alterando o fluxo das instrues. Pode ser
JUMP, CALL ou RET. Operaes de controle nada tem h ver com o barramento de
controle.
Jump
Jumps so saltos de um endereo da memria para outro. Alteram diretamente o IP
para que o IP passe a indicar o endereo determinado pelo JUMP. Existem dois tipos de
Jumps: Saltos Incondicionais, que, independente da situao alteram o endereo do IP
para aquele valor, e Saltos Condicionais, que realizam o salto apenar em determinada
situao (basicamente so dois tipos de saltos condicionais, o Jump Zero (JZ) e o
Jump Not Zero (JNZ) que determinam que o salto apenas realizado se a ultima
operao tiver ou no dado 0.
CALL
Calls funcionam exatamente como os Saltos Incondicionais, porm, guardam o
endereo atual do IP no SP, para que, posteriormente, possa-se voltar a esse endereo
quando for realizado um RET.
RET (Retornar)
Faz com que o programa retorne ao endereo que ficou salvo no SP quando o ultimo
Call foi realizado.