Representação de Dados Propriedades Domínio - Valores que um tipo de dado pode assumir; Gama de variação - N.º de valores que um dado pode assumir; Precisão Distância entre dois valores consecutivos Operações permitidas sobre dados; Classificação Tipo Escalar Discreto Não Discreto inteiro enumeração Virgula fixa Virgula flutuante Representação de Dados Codificação Representação interna dos dados. MSB Most Significant Bit Bit mais significativo LSB Lower Significant Bit Bit menos significativo
Inteiros não negativos A representação de números inteiros não negativos é feita pelo código binário natural. Propriedades do código binário natural N.º Bits N 8 6 Gama de variação 0..2 N - 0..255 0..65535 Tipos pré-definidos em linguagem de alto nível (pascal) Byte word Representação de números Inteiros negativos A codificação deste tipo de dados é feita com recurso a códigos bipolares. Os códigos bipolares que iremos passar a estudar são os seguintes: Sinal e valor absoluto Complementos para Complementos para 2
Sinal e Valor Absoluto Bit de sinal + valor absoluto O bit de sinal tem 2 valores possíveis: 0 quando o número é positivo quando o número é negativo O valor absoluto utiliza a representação do respectivo valor em código binário natural. Exemplo com N=8 +9 0 + 0000 (código. binário natural de 9) logo a representação de +9 em sinal e valor absoluto é 00000. -9 +0000 (código. binário natural de 9) logo a representação de -9 em sinal e valor absoluto é 0000. Sinal e Valor Absoluto Este código apresenta uma grande desvantagem a existência de dois códigos binários para o valor zero. 0 0000000 (+0) ou 0000000 (-0) N.º Bits N 8 6 Gama de variação -(2 N- -)..+(2 N- -) -27..+27-32767..+32767
Representação de números positivos Complemento para Os números positivos são representados pelo código binário Natural. Como é facilmente perceptível esta representação é idêntica à usada em igual circunstância ao código do sinal e valor absoluto. Número +9 +0 +65 +33 +255 Representação em complemento para 00000 000000 000000 00000 Representação de números negativos Complemento para Os números negativos são obtidos através da complementação bit a bit, da representação em código binário natural do valor absoluto de um certo e determinado número. Número a Representar -9-0 -65-33 -255 Valor absoluto 00000 000000 000000 00000 Complemento para 000 00 00 Não Representável Não Representável
Complemento para Desvantagem Tal como a representação em Sinal e Valor Absoluto o complemento para tem dois códigos binários para o valor 0 (zero). São elas, 00000000 e. N.º Bits N 8 6 Gama de variação -(2 N- -)..+(2 N- -) -27..+27-32767..+32767 O total de valores distintos representáveis é de 2 N -. Complemento para Somas algébricas Vamos analisar alguns exemplos de como devemos proceder para efectuar-mos somas algébricas em complemento para. Exemplo : (+0) + (-2)=+8 (N=5) (+0) (-2) (+8) 000 0 00 0000 0000 (+2) Soma binária Soma do ultimo transporte (se?0)
Complemento para Somas algébricas Exemplo 2: (-8) + (-5)=-3 (N=5) (-8) (-5) (-3) 0 00 000 000 0000 (+8) 000 (+5) 00 (+3) Soma binária Soma do ultimo transporte (se?0) Somas algébricas Complemento para Existem situações em que o resultado da soma algébrica não é representável com o mesmo número de bits utilizados para os operandos. Nesta situação dizemos que ocorreu um overflow Exemplo 3: (-0) + (-7)=-7 (N=5) (-0) (-7) (-7) 00 000 00 00 000 (+0) 00 (+7) 00 (+4) Soma binária Soma do ultimo transporte (se?0)?????????????????????????? Neste Exemplo houve OVERFLOW. Por norma isto acontece quando os dois últimos n transportes são diferentes. Excepto quando o resultado é igual a (2 )
Representação de números positivos e nulos Os números positivos são representados pelo código binário Natural. Como é facilmente perceptível esta representação é idêntica à usada em igual circunstância ao código do sinal e valor absoluto e complemento para. Número 0 +9 +65 +33 +255 Representação em complemento para 2 00000000 00000 000000 00000 Como se pode ver o valor 0 (zero) em complemento para 2 tem uma única representação. Representação de números negativos Os números negativos são obtidos através da passagem para complemento para, da representação em código binário natural do valor absoluto de um certo e determinado número, seguido da adição de. N.º a Representar -9-0 -65-33 -255 Valor absoluto 00000 000000 000000 00000 Complemento 000 00 00 Não Representável Não Representável Valor a somar + + + + + Complemento 2 00 00 0 Não Representável Não Representável
Representação de números negativos Regra Prática: A partir do código binário natural do número em valor absoluto (positivo), copiam-se os bits, começando pelo menos significativo, até se encontrar o primeiro que também se copia; a partir daí, substituem-se os por 0 e vice versa. Exemplo : Obtenção de -9 em C2 +9 00000-9 00 copiar complementar Exemplo 2: Obtenção de -24 em C2 +24 000000-24 0000 copiar complementar Regra Prática: Em complemento para 2 podemos aplicar a seguinte regra para determinar o valor inteiro (positivo ou negativo) representado por uma determinada codificação, bastando para isso, atribuir o peso que cada bit tem em código binário natural, sendo que o MSB tem um peso negativo, e efectuar a respectiva soma algébrica. Analisemos o seguinte exemplo considerando N=5 Posição 4 3 0 2 0 0 Como podemos ver o bit de sinal (MSB) é negativo. Pesos -6 +8 +4 +2 + Esta regra aplica-se igualmente para números inteiros positivos. Efectuando a respectiva soma algébrica temos: -6+4+= -
Vantagem Ao contrário das representações em Sinal e Valor Absoluto e complemento para o valor 0 (zero) tem uma representação única em complemento para 2, 00000000 (N=8). N.º Bits N 8 6 Gama de variação -(2 N- )..+(2 N- -) -28..+27-32768..+32767 O total de valores distintos representáveis é de 2 N. Aumento da gama de variação O aumento da gama de variação pode ser feito através da propagação do bit de sinal para a esquerda. Se o número é negativo propaga-se para a esquerda o bit se sinal, se o número é positivo propaga-se 0. Exemplo: Aumento da gama de variação de N=4 para N=8-8 +4-7 000 000 00 000 0000000 00
Somas algébricas Em complemento para 2 as somas algébricas são efectuadas através de uma soma binária, desprezando-se no final o último transporte. Sempre que o desprezar do ultimo transporte leve a uma representação incorrecta do resultado da soma binária em causa, significa que ocorreu um overflow. (+8) (-3) 0000 0 000 (+5) 000 (+ 3) Soma binária Despreza-se Somas algébricas Regra prática: Por norma verifica-se a existência de um overflow em somas algébricas em C2 quando os dois últimos transportes da soma binária são diferentes. (-2) (-4) Despreza-se 000 000 000 000 (+2) 00 (+4) (-26) Soma binária 2 últimos transportes diferentes Há overflow (-0) (-6) 00 00 0000 000 (+0) 000 (+ 6) (-6) Soma binária 2 últimos transportes iguais Despreza-se Não há overflow 20
Resumo O código de complemento para 2 é o código bipolar mais utilizado nos sistema computacionais por: Utilizar um código único para o valor 0; Utilizar a totalidade dos códigos binários na representação dos números (2 N ), visto que a sua gama de variação é -(2 N- )... +(2 N- -); Transformar as adições e subtracções em somas algébricas, utilizando apenas circuitos somadores binários; Comparativamente ao código de complemento para, as somas algébricas são menos complexas, já que o último transporte é desprezado; 2 Código BCD 842 (Binary Coded Decimal) Uma vez que a conversão de binário para decimal é particularmente difícil (quando comparada com outras notações) e uma vez que existem muitos equipamentos digitais com saídas e/ou entradas decimais (calculadoras, jogos...) desenvolveu-se um código binário especial para representação desses números decimais. Neste código a representação de cada dígito decimal é feita por um conjunto de 4 bits. Por exemplo o número decimal 458 tem como representação 000 00 000 (2 bits). A grande vantagem é a conversão imediata de BCD para decimal. Conversão de decimal para BCD Conversão de BCD para decimal 22
Código BCD 842 (Binary Coded Decimal) 23 Valores Lógicos Estes valores são representados à custa de um byte. A representação dos valores lógicos True (verdadeiro) e False (falso) é feita da seguinte forma: Operações lógicas elementares true (-) em C2 - false 0 em C2-00000000 NOT - Complementação; AND - Conjunção - Produto lógico; OR - Disjunção - Soma Lógica; XOR - Ou exclusivo; Como exemplo podemos referir a determinação de NOT(true) NOT()=00000000 (false). Na Prática efectuamos a complementação bit a bit. 24
Caracteres A codificação de caracteres é feita através do conhecido código ASCII (American Standart Code for Information Interchange). Cada símbolo (dígito, letra, sinal de pontuação, etc.) é representado à custa de um byte (7 bits +). Inicialmente o oitavo bit era utilizado como bit paridade, sendo, actualmente utilizado na obtenção de 28 códigos adicionais para codificação de caracteres acentuados e outros símbolos. 25