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:
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:
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.