Baixe o app para aproveitar ainda mais
Prévia do material em texto
MATEMÁTICA COMPUTACIONAL AULA 1 Prof. Luiz Gonzaga de Paulo 2 CONVERSA INICIAL A história dos números faz parte da história da escrita, e decorre da necessidade de contar, de expressar quantidades, e posteriormente, de controlar e fazer negócios. Uma boa oportunidade para conhecer um pouco dessa história é assistir ao vídeo: <https://www.youtube.com/watch?v=ZWZKJb06CTU>. A necessidade de contar evoluiu com a civilização, e com o advento do computador e a era da informação surgiram novos sistemas de numeração. As operações de conversão entre estes sistemas passaram a ser conhecimento obrigatório para os profissionais da computação. Nessa aula vamos abordar esses sistemas, a conversão entre eles e os possíveis erros nesse processo, além das operações lógicas e aritméticas em binário. Para ampliar seus conhecimentos, leia o capítulo 2 – “Teoria dos números”, do livro Tópicos de matemática aplicada, e o capítulo 3 do livro Organização estruturada de computadores (5. ed). TEMA 1 – SISTEMAS DE NUMERAÇÃO Sistemas de numeração compreendem a forma de representarmos valores por intermédio de símbolos, geralmente números, organizados de forma que o valor de cada símbolo depende da posição que ele ocupa, isto é, um sistema posicional. Existem diversos sistemas de numeração, sendo o mais comum o decimal, que utilizamos em nossas comunicações. Além desse, existem os sistemas: octal, hexadecimal e o binário, sendo esse último utilizado naturalmente pelos computadores, também chamado de sistema digital. 1.1 Sistema de numeração decimal O sistema de numeração decimal é o nosso sistema numérico por padrão, e nós, seres humanos, o utilizamos para representar valores e quantidades em processos de comunicação. É um sistema posicional, no qual o valor de um símbolo (ou algarismo) é proporcional à posição que ocupa no número. A posição é crescente da direita para a esquerda, partindo da posição 0 (zero), e decrescente da esquerda para a direita, sendo que assume valores negativos a partir da vírgula. Sua base, expressa pela letra grega Beta em maiúsculo (β), é 10, e isso também define seu conjunto de símbolos, algarismos ou números: 3 N = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}. A posição do símbolo no número refere-se ao expoente da base do sistema (β = 10). A Figura 1 traz o exemplo: Figura 1 – Exemplo de representação decimal No capítulo 2 do livro Tópicos de matemática aplicada são apresentadas as formas das operações aritméticas básicas deste sistema de numeração. 1.2 Sistema de numeração octal Nos primórdios da era da computação digital foi criado um sistema melhor adaptado aos computadores, o sistema octal, usado como alternativa ao sistema binário, vigente até então. Pode-se verificar o uso desse sistema na computação e nas linguagens de programação das primeiras gerações. Este sistema prevaleceu na programação em linguagem de máquina e na comunicação entre os computadores por algum tempo, tinha a base (β) 8, a qual define o conjunto de símbolos (ou seja, os algarismos ou números) utilizados: N = {0, 1, 2, 3, 4, 5, 6, 7}. O sistema octal também é um sistema posicional, no qual o valor efetivo de um número depende da sua posição. Para representarmos em Octal o mesmo exemplo usado anteriormente para o sistema de numeração decimal, teremos o que nos mostra a Figura 2: Figura 2 – Exemplo de representação em octal 4 1.3 Sistema de numeração hexadecimal O sistema de numeração binário é de difícil compreensão para nós, pois gera números relativamente grandes para representar valores comuns no dia-a- dia. Para fazer frente a esses problemas passamos a utilizar o sistema de numeração hexadecimal, o mais utilizado nas linguagens de programação, em especial nas linguagens da primeira até a terceira geração. Entre outras representações, o sistema hexadecimal é usado para referenciar os endereços de memória e de rede, a cor e os caracteres em interfaces nas aplicações da internet, e diversos outras. Este sistema tem como base (β) o 16, e os símbolos expandem os números de 0 a 9 com letras, compondo o seguinte conjunto de símbolos: N = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F}. Um aspecto interessante desse sistema é que os valores em hexadecimal podem ser representados de diversos modos, tais como:0xNNNN, NNNNh ou #NNNN, sendo “N” um dígito do sistema hexadecimal. As letras ou símbolos alfabéticos desse sistema equivalem a valores do sistema decimal, como mostrado na Figura 3: Figura 3 – Símbolos alfabéticos do sistema hexadecimal Na Figura 4 apresentamos algumas representações de valores no sistema hexadecimal e seu equivalente no sistema decimal: Figura 4 – Representação em sistema hexadecimal 5 1.4 Sistema de numeração binário O sistema numérico utilizado, por padrão, pelos computadores é o sistema de numeração binário. Isto se deve ao uso dos circuitos eletrônicos digitais, que apresentam apenas dois estados: ligado ou desligado, aceso ou apagado, presente ou ausente, alto ou baixo, verdadeiro ou falso, entre outros. Por isso, o sistema de numeração binário é utilizado para representar as informações digitais e para a comunicação entre computadores e dispositivos digitais, permitindo que a informação digital seja validada ou conferida, já que seus valores são apenas dois. O sistema de numeração binário tem a base (β) é 2 e um conjunto muito reduzido de símbolos: N = {0, 1}. A Figura 5 apresenta a representação de valores em binário e sua equivalência decimal: Figura 5 – Representação de um número no sistema binário TEMA 2 – CONVERSÃO ENTRE OS SISTEMAS Diferente dos computadores, nós utilizamos o sistema de numeração decimal para expressarmos valores e quantidade. É comum haver a necessidade de converter números expressos em outros sistemas para o sistema decimal, ou do sistema decimal para outros sistemas. Também é necessário converter números expressos nos demais sistemas entre si para a realização de operações ou identificação de representações. Ou seja, é necessário conhecermos o processo de conversão de uma base β qualquer para outra base β, o que denominamos conversão de base. 6 O processo de conversão de base está sujeito às limitações de representação e de cálculo, e às restrições do ambiente computacional, o que pode ocasionar erros, como resultados inexatos e imprecisões. 2.1 Conversão de uma base qualquer (β) para a base 10 (decimal) Para executar a conversão de um valor expresso na base β (uma base qualquer) para a base decimal (10) executamos a fatoração do número expresso. Isso já foi utilizado por nós na apresentação dos sistemas de numeração. A Figura 6 apresenta a fórmula geral: Figura 6 – Fatoração de um número na conversão para a base 10 Nessa representação os dígitos do sistema de base β são as letras (a, b, c, d, e). Os expoentes de β na fórmula são as posições ocupadas cada dígito. O valor das posições dos dígitos inteiros, à esquerda da vírgula, cresce da direita para a esquerda, a partir do 0 (zero). Já as posições dos valores fracionários, à direita da vírgula, aumentam à medida em que o dígito se desloca à direita, porém o valor diminui, posto que o expoente é negativo. A Figura 7 mostra essa forma de expressão: Figura 7 – Conversão de uma base qualquer β para a base 10 2.2 Conversão da base decimal para uma base β Para convertermos um valor expresso no sistema decimal (base 10) para um sistema de base β fazemos divisões sucessivas do número na base 10 pela base β, até que o quociente seja menor que β. Isto se aplica à conversão da parte inteira do valor. Já para o valor fracionário devemos fazer multiplicações sucessivas pela base β até obtermos um valor exclusivamente inteiro. Ao 7 efetuarmos cada multiplicação devemos descartara parte inteira da multiplicação anterior. A Figura 8 é um exemplo de conversão de valores expressos no sistema decimal para o sistema binário: Figura 8 – Conversão de decimal para binário Um outro exemplo de conversão do sistema decimal para o sistema octal está na Figura 9: Figura 9 – Conversão de decimal para octal A Figura 10 representa uma conversão do sistema decimal para o sistema hexadecimal: Figura 10 – Conversão de decimal para hexadecimal 8 2.3 Conversão da parte fracionária Como já adiantamos, a conversão da parte fracionária, valores entre 0 e 1, de um valor expresso no sistema decimal para um sistema de base β é feita por multiplicações sucessivas da parte fracionária por β, até se obter um valor exclusivamente inteiro. A cada multiplicação remove-se a parte inteira, como mostrado na conversão do sistema decimal para o sistema binário na Figura 11: Figura 11 – Conversão da parte fracionária 2.4 Conversão direta Uma opção para fazer a conversão entre sistemas é a substituição direta, que é possível nos casos da conversão dos sistemas hexadecimal e octal para binário, ou vice-versa. Isso porque as bases destes sistemas, 16 e 8, são potências de 2, representadas por conjuntos fixos de dígitos binários: Três dígitos binários para cada dígito octal, já que 23 = 8 Quatro dígitos binários para cada digito hexadecimal, já que 24 = 16 Os exemplos da Figura 12 a seguir demonstram o processo: Figura 12 – Conversão direta entre binário e octal/hexadecimal 9 TEMA 3 – ERROS DE CONVERSÃO Na conversão entre sistemas podem ocorrer erros de dois tipos: 1. Os erros de precisão, que ocorrem em função da quantidade insuficiente de dígitos para representar o valor. Nos sistemas de computação digital o número de dígitos binários usados para representar os números é geralmente pré-definido e limitado: caso haja a necessidade de representar um valor com uma quantidade de dígitos maior que o limite, ocorrerá um erro de precisão. Esta ocorrência é típica das variáveis em programas de computador. 2. Os erros de exatidão ocorrem quando há a aproximação, o arredondamento ou a ocorrência de dízimas periódicas. Neste caso, devido à limitação do número de dígitos ou da capacidade de cálculo, geralmente há uma interrupção inesperada da representação. Embora possam parecer a mesma coisa, há uma diferença entre os tipos de erros, e sua ocorrência gera consequências distintas no ambiente computacional. O limite de precisão resulta em truncamento, e afeta principalmente os cálculos com os números irracionais, com o número π (Pi). Em geral este número é representado com duas casas decimais, como 3,14, porém as calculadoras podem representá-lo com oito casas decimais (3,1415926), o que é razoável para maioria dos cálculos. Porém, em cálculos mais extensos é necessário usar uma maior precisão, tal como a representação do Pi com cinquenta e duas casas decimais: O uso de precisões maiores requer a aplicação de algoritmos computacionais específicos. Por exemplo, já se tem realizado o cálculo de Pi com trilhões de dígitos. Os erros de conversão, assim como os demais erros, podem ser expressos de forma absoluta ou relativa. 3.1 Erro absoluto O erro absoluto é a diferença entre o valor real e a forma na qual foi expresso. Calculamos o erro absoluto pela seguinte fórmula: 10 𝑬𝑨𝒙 = x - �̅� Tomando o exemplo dado do valor de Pi, sendo x o valor de Pi com sete casas decimais e �̅� o valor de Pi com dois decimais, então temos: 3,1415926 - 3.14 = 0,0015926 É claro que isto é apenas um exemplo, pois o valor real de Pi é algo ainda desconhecido. 3.2 Erro relativo O erro relativo é a razão entre o erro absoluto EA e o valor real x, isto é: 𝑬𝑹𝒙 = 𝑬𝑨𝒙 𝒙 Ou: 𝑬𝑹𝒙 = 𝒙 − �̅� 𝒙 Se utilizarmos os valores do exemplo dado: 𝑬𝑹𝒙 = 𝟑,𝟏𝟒𝟏𝟓𝟗𝟐𝟔 − 𝟑.𝟏𝟒 𝟑,𝟏𝟒𝟏𝟓𝟗𝟐𝟔 → 𝑬𝑹𝒙 = 5 x 10-4 ou 0,05% TEMA 4 – LÓGICA BINÁRIA Você já se perguntou de que forma as operações de um computador podem ser executadas, já que esse usa somente o sistema binário? As informações que os computadores armazenam e processam são bits, dígitos binários, pois os circuitos eletrônicos do computador digital operam somente com os dígitos zero (0) e um (1). Portanto, todos os cálculos computacionais, por mais complexos que sejam, são realizados com a lógica e a aritmética binária. O computador digital é uma formidável combinação de diversos circuitos eletrônicos que realizam um altíssimo volume de operações, o que o torna capaz de realizar as mais complexas operações matemáticas por meio da programação. 11 Estes circuitos elementares são conhecidos como portas lógicas, e realizam as operações mais básicas da lógica e aritmética binária. Estas operações são realizadas no nível dos bits, e são apresentadas a seguir. 4.1 NOT: “não “ou “negação” A operação de negação (NÃO ou NOT) ou inversão, também chamada de complemento, é realizada apenas com um operador: um único bit. Apresenta como resultado o inverso do valor desse operador. Nas expressões lógicas essa operação é representada por um til “~” que precede o valor, ou por uma barra horizontal colocada sobre o valor negado / inverso - 𝐴, que se lê “A barra” ou “A barrado” ou “A negado”. A tabela verdade é a seguinte (Tabela 1): Tabela 1 - Tabela verdade da operação NOT 4.2 AND: “e” É a operação de conjunção binária, isto é, uma operação muito semelhante à multiplicação. Esta operação, como resultado, apresenta um valor 1 na saída apenas quando todos os operandos apresentam um valor 1. Para os demais valores o resultado é “0”. Esta operação é representada pelo símbolo “&” (E comercial) ou, em inglês, “Ampersand”. A tabela verdade para esta operação é (Tabela 2): Tabela 2 – Tabela verdade da operação AND 12 4.3 OR: “ou” É a operação de disjunção binária, que é semelhante à soma ou adição. Nesta operação, há um resultado 1 quando qualquer um dos operandos tem valor 1. A operação OR é assinalada nas expressões lógicas com o sinal de adição (+), e sua tabela verdade (Tabela 3) é a seguinte: Tabela 3 – Tabela verdade da operação OR 4.4 XOR: “ exclusivo” Está é a operação lógica binária de disjunção exclusiva, a qual tem por finalidade detectar uma desigualdade entre os valores dos operandos. Somente apresenta um valor 1 como resultado quando os operandos têm valores diferentes. É representada pelo sinal de adição contornado por um círculo: ⊕. A tabela verdade é a seguinte (Tabela 4): Tabela 4 – Tabela verdade da operação XOR 4.5 SHIFT: “deslocamento” A operação binária de deslocamento (ou rotação) de bits efetua a divisão ou multiplicação por 2 (e por seus múltiplos). Dado um número binário, ao 13 deslocarmos os bits da direta para a esquerda em uma posição (operação representada pelo sinal <<), multiplicamos o valor por 2. Realizando o deslocamento no sentido contrário, da esquerda para a direita (operação representada pelo sinal >>), dividimos o valor por 2, com o resultado inteiro. Essa operação é demonstrada na Figura 13: Figura 13 – Operação SHIFT É bom ressaltar: as posições deslocadas são preenchidas com “0”, e dessa forma a operação só apresenta resultados inteiros. Entretanto, no caso de utilizarmos a aritmética de ponto flutuante, os valores fracionários da divisão por 2 serão apresentados TEMA 5 – ARITMÉTICA BINÁRIA As operações aritméticas básicas são realizadas por meio de circuitos semelhantes aos – ou compostos pelos – das operações lógicas, ou seja, as portas lógicas. Do ponto de vista matemático, essas operações em nada diferem das operações aritméticas fundamentais que conhecemos nos primeiros anos de nossa formação: soma, subtração, multiplicação e divisão. Os processos para a realização das operações seguemas mesmas regras, e são simples. Uma atenção especial é necessária devido ao fato de tratarmos de um sistema com apenas dois dígitos, o qual não é natural para nós, seres humanos. 5.1 Adição binária A adição ou soma binária assemelha-se à soma decimal, incluindo a operação de “vai-um” – que aqui denominamos Carry Out, porém utilizando somente os dígitos do sistema de numeração binário (zero e um). Esta operação Em binário 0 1 0 0 1 1 0 1 << 1 0 0 1 1 0 1 0 Em decimal x 2 Em binário 0 1 0 0 1 1 0 1 >> 0 0 1 0 0 1 1 0 Em decimal / 2 77 154 77 38 14 é designada pelo sinal de adição (+) nas equações, e as regras da operação são as seguintes: 0 + 0 = 0 0 + 1 = 1 1 + 0 = 1 1 + 1 = 0 e “vai um” (Carry Out = 1) 1 + 1 + 1 = 1 e “vai um” (Carry Out = 1) A tabela verdade da operação apresentada na Tabela 5, que relaciona os resultados. Tabela 5 – Tabela verdade da adição binária Vamos exemplificar a operação demonstrando a soma dos seguintes valores (Figura 14): 101 + 011. Figura 14 – Exemplo Convém notar que não utilizamos a soma binária com dois bits apenas, mas sim com todo tipo de valores. No exemplo a seguir vamos realizar a soma dos valores decimais 65 e 68, tanto no sistema decimal como no sistema binário. Na Figura 15 podemos validar o resultado: 15 Figura 15 – Validação do resultado Primeiro fizemos a conversão dos operadores para o sistema binário e, em seguida, somamos bit a bit, sempre observando as regras da operação. Vejamos mais este exemplo: somar os valores octais 3705 e 3717. (Figura 16) Figura 16 – Exemplo Da mesma forma que no exemplo anterior, primeiro fizemos a conversão para o sistema binário e a seguir somamos bit a bit, observando as regras da operação. Vamos realizar mais esta operação: somar os valores hexadecimais 89F e 457 (Figura 17). Figura 17 – Exemplo Seguimos os mesmos passos das operações anteriores: conversão e soma bit a bit, obedecendo as regras. Em seu ambiente virtual de aprendizagem (UNIVIRTUS), foi disponibilizada uma lista de exercícios com operações de soma. Acesse essa lista e resolva-os. Troque ideias a respeito dessa operação com seus colegas de turma por intermédio do fórum. 1 1 65 1000001 + 68 + 1000100 133 10000101 "Vai um"→ (Carry Out) 1 1 11111 1111 3705 11111000101 + 3717 + 11111001111 7624 111110010100 "Vai um"→ (Carry Out) 1 11111 89F 100010011111 + 457+ 10001010111 CF6 110011110110 "Vai um"→ (Carry Out) 16 5.2 Multiplicação binária A multiplicação binária segue o mesmo modelo da multiplicação decimal, porém com a utilização apenas dos dois dígitos binários: zero e um. Uma boa opção para estruturar a operação é colocar o número maior acima do número menor. Assim a operação fica mais clara. A tabela verdade (Tabela 6) da operação é a mesma da operação lógica AND, como segue: Tabela 6 – Tabela verdade da multiplicação binária As regras para a operação de subtração binária são simples, a saber: 0 x 0 = 0 0 x 1 = 0 1 x 0 = 0 1 x 1 = 1 Os resultados de cada multiplicação de um bit são colocados em linhas seguidas, deslocando-se um dígito para a esquerda, e realizando uma soma ao término dos dígitos do multiplicador, como mostra a Figura 18: Figura 18 – Exemplo 6 110 x 5 x 101 30 110 + 000 110 11110 17 Vamos para mais um exemplo (Figura 19): realizar, em modo binário, a operação decimal 22 x 7: Figura 19 – Exemplo 5.3 Subtração binária A subtração binária segue o mesmo processo da subtração decimal, incluindo o artifício de “pedir emprestado” um dígito de maior valor (à esquerda), quando se subtrai um valor maior de um valor menor, isto é, 1 (um) de 0 (zero). É semelhante à operação XOR, e também pode ser realizada por meio da soma com complemento de 2. A tabela verdade da operação de subtração binária é a seguinte (Tabela 7): Tabela 7 – Tabela verdade da multiplicação binária As regras para a operação de subtração binária são: 0 - 0 = 0 0 - 1 = 1 e “pede emprestado” 1 ao dígito da esquerda 1 - 0 = 1 1 - 1 = 0 Exemplo: realizar a subtração 5 – 3 em binário. 22 10110 x 7 x 111 154 10110 + 10110 10110 10011010 18 Figura 20 – Exemplo Outro exemplo: realizar a subtração 68 – 65 em binário. Figura 21 – Exemplo E mais um exemplo: realizar a subtração 22-7 em binário. Figura 22 – Exemplo 5.4 Divisão binária O modelo da divisão binária segue o mesmo processo da divisão em decimal, operando inclusive com os mesmos componentes: O valor a ser dividido: dividendo; O número que deve estar contido n vezes no dividendo: divisor; O valor que se busca – o resultado da divisão: quociente; Caso a divisão não seja inteira, temos o resto, isto é: dividendo – (divisor * quociente). O resto sempre deve ser menor que o quociente. Figura 23 – Realizando a divisão decimal 42/ 6 em binário (101010/110) 68 1000100 - 65 1000001 3 11 22 10110 - 7 111 15 1111 19 Conferindo o resultado em Decimal: 42 / 6 = 7 Realizando a divisão decimal 37 / 4 usando o sistema binário teremos (Figura 24): Figura 24 – Exemplo Resultado em decimal: 37 / 4 = 9, e resto = 1. É importante observar dois aspectos muito importantes neste último caso: Sobra um resto, pois a divisão não é inteira; Realizada a primeira divisão, quando “100” – dividendo - é dividido por “100” – divisor, ao fazer a descida do valor “1” do dividendo ainda não se tem um valor que possa ser dividido por “100”. Foi adicionado um digito “0” ao quociente e descido mais um dígito. No caso é “0”, o que faz o dividendo ser ainda insuficiente, pois “010” é menor que “100”. Então, repete-se este passo: acrescenta-se um zero ao quociente e desce-se mais um dígito, formando assim o valor 0101 que, desta forma, pode ser dividido por 100, restando então o valor 1. Mais um exemplo: vamos realizar a divisão decimal 22 / 7 usando o sistema binário (Figura 25): Figura 25 – Exemplo Note que há a mesma ocorrência dos dois aspectos, de forma semelhante à do exemplo anterior. 37 4 100101 100 - 36 9 100 1001 1 0101 - 100 1 22 7 10110 111 - 21 3 111 011 1 1000 - 111 1 20 FINALIZANDO Conhecer os sistemas numéricos e as operações apresentadas é um passo fundamental para conhecer o funcionamento dos sistemas computacionais, e também para o entendimento das operações que estes realizam. A maior parte destes processos apresentados são feitos por software e hardware, entretanto, o estudo destas operações e dos processos e o domínio das técnicas apresentadas é indispensável para a evolução na escalada do conhecimento. Dominar as operações mais fundamentais realizadas por um sistema computacional digital ajuda-nos a compreender o funcionamento, as restrições e as potencialidades desse sistema. 21 REFERÊNCIAS GUIMARÃES, C.H.C. Sistemas de numeração: aplicação em computadores digitais. Rio de Janeiro: Interciência, 2014. LEITE, A. E., CASTANHEIRA, N.P. Teoria dos números e teoria dos conjuntos. Curitiba: InterSaberes, 2014. MACEDO, L. R. D., CASTANHEIRA, N. P., ROCHA, A. Tópicos de matemática aplicada. Curitiba: InterSaberes, 2013. TANEMBAUM, A. S. Organização estruturada de computadores. São Paulo: Pearson Prentice Hal, 2014.
Compartilhar