http://www.inf.ufes.br/~rgomes/sp1.htm Sistemas de Numeração Sistemas de Numeração (Aula Extra) Sistemas de diferentes bases Álgebra Booleana Um sistema de numeração é formado por um conjunto de símbolos (alfabeto) que é utilizado para representar quantidades e por regras que definem a forma de representação. É definido por sua base, a qual define o número de algarismos (ou dígitos) utilizados para representar números. Base: b Conjunto de dígitos: d = {0, 1, 2, ..., b-2, b-1} Notação posicional: Roberta Lima Gomes - LPRM/DI/UFES Sistemas de Programação I – Eng. Elétrica 2007/2 A posição é que dá importância ou peso ao dígito. Os pesos são todos potências de uma dada base O dígito mais significativo é o que está mais à esquerda (MSB) O dígito menos significativo é o que está mais à direita (LSB) dmbm+ dm-1bm-1+ ... + d1b1+ d0b0 2 Sistemas de Programação I – 2007/2 http://www.inf.ufes.br/~rgomes/sp1.htm Exemplos de Sistemas de Numeração (1) Sistema decimal http://www.inf.ufes.br/~rgomes/sp1.htm Exemplos de Sistemas de Numeração (2) b = 10 d = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9} 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,10, 11, 12, 13, ... 1842 ⇒ 1x103 + 8x102 + 4x101 + 2x100 Sistema Binário b=2 d = {0, 1} 0, 1, 10, 11, 100, 101, 110, 111, ... 1011 ⇒ 1x23 + 0x22 + 1x21 + 1x20 Sistemas de Programação I – 2007/2 3 Computadores usam o sistema binário Base Octal b=8 d = {0, 1, 2, 3, 4, 5, 6, 7} 0, 1, 2, 3, 4, 5, 6, 7, 10, 11, 12, 13, 14, 15, 16, 17, 20 ... 4501 ⇒ 4x83 + 5x82 + 0x81 + 1x80 Base Hexadecimal Profa Roberta L.G. - LPRM/DI/UFES Profa Roberta L.G. - LPRM/DI/UFES b = 16 d = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F} 0, 1, ... 8, 9, A, B, C, D, E, F, 10, 11 ... 18, 19, 1A, 1B, ... F1A0 ⇒ 15x163 + 1x162 + 10x161 + 0x160 Sistemas de Programação I – 2007/2 4 Profa Roberta L.G. - LPRM/DI/UFES http://www.inf.ufes.br/~rgomes/sp1.htm Conversão da base B para a base Decimal A conversão de um número na base B para a base decimal é feita através da multiplicação dos (valores decimais dos) dígitos que constituem o número por potências adequadas de B http://www.inf.ufes.br/~rgomes/sp1.htm Conversão da base B para a base Decimal A conversão de um número na base B para a base decimal é feita através da multiplicação dos (valores decimais dos) dígitos que constituem o número por potências adequadas de B Binário 1011 (10112) ⇒ Octal 4501 (45018)⇒ Hexadecimal F1A0 (F1A016) ⇒ 5 Sistemas de Programação I – 2007/2 Profa Roberta L.G. - LPRM/DI/UFES Binário 1011 (10112) ⇒ 1x23 + 0x22 + 1x21 + 1x20 = 1110 Octal 4501 (45018)⇒ 4x83 + 5x82 + 0x81 + 1x80 = 206910 Hexadecimal F1A0 (F1A016) ⇒ 15x163 + 1x162 + 10x161 + 0x160 = 6185610 http://www.inf.ufes.br/~rgomes/sp1.htm Exercícios 6 Sistemas de Programação I – 2007/2 http://www.inf.ufes.br/~rgomes/sp1.htm Exercícios converter binário para decimal converter binário para decimal a. (1010111)2 ( )10 a. (1010111)2 b. (11111111)2 ( )10 b. (11111111)2 c. (1011011011)2 ( )10 c. (1011011011)2 d. (0100001)2 ( )10 d. (0100001)2 ( 731 )10 ( 33 )10 e. (110011)2 ( )10 e. (110011)2 ( f. (1000110001)2 ( )10 f. (1000110001)2 g. (111000111)2 ( )10 g. (111000111)2 h. (1100110011)2 ( )10 h. (1100110011)2 ( 455 )10 ( 819 )10 i. (00100100)2 ( )10 i. (00100100)2 ( Sistemas de Programação I – 2007/2 Profa Roberta L.G. - LPRM/DI/UFES 7 Profa Roberta L.G. - LPRM/DI/UFES Sistemas de Programação I – 2007/2 ( 87 )10 ( 255 )10 51 )10 ( 561 )10 36 )10 8 Profa Roberta L.G. - LPRM/DI/UFES http://www.inf.ufes.br/~rgomes/sp1.htm Conversão de Decimal para Binário Divisões sucessivas Conversão de Decimal para Binário 2610 = Sistemas de Programação I – 2007/2 http://www.inf.ufes.br/~rgomes/sp1.htm 2610 = 110102 19710 = 9 Divisões sucessivas Profa Roberta L.G. - LPRM/DI/UFES Conversões para Octal e Hexadecimal As bases que são potências de 2 são facilmente convertidas em binário e vice-versa Octal 1 dígito octal = 3 dígitos binários Hexadecimal 1 dígito hexa = 4 dígitos binários 10 Sistemas de Programação I – 2007/2 http://www.inf.ufes.br/~rgomes/sp1.htm 19710 = 110001012 Profa Roberta L.G. - LPRM/DI/UFES http://www.inf.ufes.br/~rgomes/sp1.htm Exercícios Converter os seguintes números para a base 10 A016 , 10216 , 118 Converter os seguintes números 1310 para binário 499 para hexadecimal 65 para octal 2D316 = 10110100112 = 13238 Vantagens do Hexadecimal Usam menos dígitos para representar um dado número São mais facilmente entendidas por humanos Sistemas de Programação I – 2007/2 11 Profa Roberta L.G. - LPRM/DI/UFES Observação: Os número sem indicação de base, salvo indicação ao contrário, são decimais. Sistemas de Programação I – 2007/2 12 Profa Roberta L.G. - LPRM/DI/UFES http://www.inf.ufes.br/~rgomes/sp1.htm http://www.inf.ufes.br/~rgomes/sp1.htm Aritmética Binária (1) Basicamente as mesmas regras que a aritmética decimal ! Somam-se os números dígito a dígito De um dígito para o seguinte (mais significativo), pode “ir um”, ou seja pode haver “CARRY” Aritmética Binária (2) x 1 mais 1 são dois ( ou seja 102) Exemplos: 27 + 19 46 Tabela da adição binária 1o 0 0 1 1 2o 0 1 0 1 Soma 0 1 1 0 Carry 0 0 0 1 Multiplicação por potências de 2 realiza-se efetuando shift à esquerda Multiplicar 0000010102 = 1010 por 8 (23). É necessário fazer o shift à esquerda 3 vezes: 0010100002 = 8010 13 Sistemas de Programação I – 2007/2 Profa Roberta L.G. - LPRM/DI/UFES 14 Sistemas de Programação I – 2007/2 http://www.inf.ufes.br/~rgomes/sp1.htm Profa Roberta L.G. - LPRM/DI/UFES http://www.inf.ufes.br/~rgomes/sp1.htm Aritmética Binária (4) Aritmética Binária (3) 13 5 65 A subtração binária é realizada exatamente como subtração decimal Divisão Por potência de 2 : shift p/ direita Dividir 0000000112 por 2 => 0000000012 Ou ou “vem 1” Sistemas de Programação I – 2007/2 15 Profa Roberta L.G. - LPRM/DI/UFES Sistemas de Programação I – 2007/2 16 Profa Roberta L.G. - LPRM/DI/UFES http://www.inf.ufes.br/~rgomes/sp1.htm Representações com número fixo de dígitos (1) http://www.inf.ufes.br/~rgomes/sp1.htm Representações com número fixo de dígitos (2) Numa máquina, o número de dígitos é FINITO Erro de overflow: Não posso usar todos os dígitos que quiser Há um número MÁXIMO que se pode representar: Ocorre sempre que o resultado de uma operação é muito grande para ser representado no hardware disponível Exemplo (8 bits, inteiros positivos) 0110 01012 + 1111 00012 1 0101 01102 Conseqüência: Os números não são representados por uma reta, mas sim por uma circunferência ! Erro de underflow: 17 Profa Roberta L.G. - LPRM/DI/UFES Ocorre sempre que o resultado de uma operação é muito pequeno para ser representado no hardware disponível Exemplo (3 bits inteiros positivos): num. de 0 a 7 Problema: Como indicar que um número é negativo, sem usar o símbolo “-” (usando apenas 0 e 1) Solução: usar uma das posições para representar o sinal Idéia base Para se chegar à representação negativa de um número em complemento de 2, deve-se realizar 2 etapas: Conversão mais simples... Profa Roberta L.G. - LPRM/DI/UFES Facilitar somas e subtrações 1. Inverter todos os bits (inclusive o de sinal) 2. Somar 1 Exemplo: 00110 (610) -> 11001 -> 11010 (-610) 19 Profa Roberta L.G. - LPRM/DI/UFES Complemento de 2 (1) O bit mais significativo representa o sinal, e os restantes a magnitude Sinal = 0 => Positivo (representação normal) Sinal = 1 => Negativo Exemplos: Sistemas de Programação I – 2007/2 0112 1112 1002 http://www.inf.ufes.br/~rgomes/sp1.htm Sinal e módulo 18 Sistemas de Programação I – 2007/2 http://www.inf.ufes.br/~rgomes/sp1.htm Representação de Números Negativos 101 241 342 86 3 - 6 = - 3 => NEGATIVO Sistemas de Programação I – 2007/2 + Inverter todos os dígitos a partir do primeiro ‘1’ (da dir. p/ esq.) Exemplo: 00110 - > 11010 Sistemas de Programação I – 2007/2 20 Profa Roberta L.G. - LPRM/DI/UFES http://www.inf.ufes.br/~rgomes/sp1.htm Complemento de 2 (2) Complemento de 2 (2) VANTAGEM: Apenas uma representação para ‘0’ http://www.inf.ufes.br/~rgomes/sp1.htm Conseqüência: quantidade de números positivos diferente da quantidade de números negativos 011001 + 100111 000000 Exemplo (4 bits) -8, -7, ..., -1, 0, 1, ..., 7 21 Sistemas de Programação I – 2007/2 Outra vantagem: Adição Profa Roberta L.G. - LPRM/DI/UFES Formato de representação digital de números reais O número é dividido numa mantissa (M) e um expoente (E). M · 2E //criada por Konrad Zuse Em geral, a base da potência é 2 Três partes: 10000001 + 01100011 11100100 22 Sistemas de Programação I – 2007/2 http://www.inf.ufes.br/~rgomes/sp1.htm Ponto Flutuante (1) 25 + (-25) 0 (-127) + 99 (-28) Profa Roberta L.G. - LPRM/DI/UFES http://www.inf.ufes.br/~rgomes/sp1.htm Ponto Flutuante (2) A mantissa é um número binário fracionário O valor de uma casa é metade do valor da casa vizinha à esquerda Esquematicamente Sinal Expoente Mantissa Exemplo: (101,11 x 101101)2 Expoente: 1101 Mantissa: 101,11 Sistemas de Programação I – 2007/2 23 Profa Roberta L.G. - LPRM/DI/UFES Sistemas de Programação I – 2007/2 24 Profa Roberta L.G. - LPRM/DI/UFES http://www.inf.ufes.br/~rgomes/sp1.htm Ponto Flutuante (3) http://www.inf.ufes.br/~rgomes/sp1.htm Ponto Flutuante (2) Normalização da Mantissa 25 Sistemas de Programação I – 2007/2 Profa Roberta L.G. - LPRM/DI/UFES O separador deve ficar imediatamente após o primeiro algarismo significativo Sistemas de Programação I – 2007/2 http://www.inf.ufes.br/~rgomes/sp1.htm Ponto Flutuante Profa Roberta L.G. - LPRM/DI/UFES http://www.inf.ufes.br/~rgomes/sp1.htm Álgebra de Boole - Introdução e Histórico (1) A Norma IEEE754 define os formatos para representar pontos flutuante Álgebra de Boole ou Booleana 27 Profa Roberta L.G. - LPRM/DI/UFES Propósito de representar e validar argumentos lógicos e filosóficos usando base matemática. Usa proposições que têm sentido negativo ou positivo O expoente no Padrão IEEE é deslocado de +127 unidades Uma das ferramentas mais importantes para a eletrônica Criada por um matemático britânico, George Boole (18051864) Sistemas de Programação I – 2007/2 26 P: Chove lá fora? R: Está chovendo lá fora P: Você tem um guarda-chuva? R: Não tenho guarda-chuva É uma álgebra com operações construídas somente sobre dois valores representando verdadeiro(V) e falso(F). Sistemas de Programação I – 2007/2 28 Profa Roberta L.G. - LPRM/DI/UFES http://www.inf.ufes.br/~rgomes/sp1.htm http://www.inf.ufes.br/~rgomes/sp1.htm Álgebra de Boole - Principais Operações (2) Álgebra de Boole - Principais Operações (1) Necessita que todas as proposições básicas sejam válidas, para que a geral seja válida Disjunção, ou regra “OU”, ou OR Para que a geral seja válida, basta que uma das proposições básicas seja verdadeira Exemplo: Se você ou Maria quiserem sorvete, eu comprarei. P1: Você quer sorvete? R1:Não. P2: Maria quer sorvete? R2:Sim RG: Então eu comprarei. AND OR S = A⋅ B A B S S = A+ B A B S A S 0 0 0 0 0 0 0 1 0 1 0 0 1 1 1 0 1 0 0 1 0 1 1 1 1 1 1 1 Conjunção, ou regra “E”, ou AND 29 Sistemas de Programação I – 2007/2 Profa Roberta L.G. - LPRM/DI/UFES Representa o funcionamento dos operadores lógicos. Mostra os resultados das operações sobre todas as combinações de valores dos operandos. Sistemas de Programação I – 2007/2 http://www.inf.ufes.br/~rgomes/sp1.htm Profa Roberta L.G. - LPRM/DI/UFES Referências NAND NOR XOR S = A⋅ B A B S S = A+ B A B S S = A+ B A B S 0 0 0 0 0 0 0 1 0 1 0 1 1 0 1 0 1 0 1 1 1 1 1 1 31 30 http://www.inf.ufes.br/~rgomes/sp1.htm Álgebra de Boole - Principais Operações (3) Sistemas de Programação I – 2007/2 S=A Tabela verdade Negação, ou regra “NÃO”, ou NOT NOT Profa Roberta L.G. - LPRM/DI/UFES Andrew S. Tanenbaum, Organização Estruturada de Computadores, 5ª edição, Prentice-Hall do Brasil, 2007. Apêndices A e B KNUTH, DONALD E. The Art Of Computing Programming. V.2, http://www.wikipedia.org Sistemas de Programação I – 2007/2 32 Profa Roberta L.G. - LPRM/DI/UFES