Representação de dados

Propaganda
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
inteiro
Não Discreto
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
1
Códigos Binários
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
Gama de variação
N
0..2N-1
Tipos pré-definidos em
linguagem de alto nível
(pascal)
8
0..255
Byte
16
0..65535
word
Códigos Binários
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 1
•
Complementos para 2
2
Códigos Binários
Sinal e Valor Absoluto
Bit de sinal + valor absoluto
O bit de sinal tem 2 valores possíveis:
0 quando o número é positivo
1 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
+19
0 + 0010011 (código. binário natural de 19) logo a representação de +19 em sinal
e valor absoluto é 00010011.
-19
1+0010011 (código. binário natural de 19) logo a representação de -19 em sinal e
valor absoluto é 10010011.
Códigos Binários
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
1 0000000 (-0)
N.º Bits
Gama de variação
N
-(2N-1 -1)..+(2N-1 -1)
8
-127..+127
16
-32767..+32767
3
Códigos Binários
Complemento para 1
Representação de números positivos
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
Representação em complemento para 1
+19
00010011
+10
00001010
+65
01000001
+133
10000101
+255
11111111
Códigos Binários
Complemento para 1
Representação de números negativos
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
Valor absoluto
Complemento para 1
-19
00010011
11101100
-10
00001010
11110101
-65
01000001
10111110
-133
10000101
Não Representável
-255
11111111
Não Representável
4
Códigos Binários
Complemento para 1
Desvantagem
Tal como a representação em Sinal e Valor Absoluto o complemento para 1 tem dois
códigos binários para o valor 0 (zero).
São elas, 00000000 e 11111111.
N.º Bits
Gama de variação
N
-(2N-1 -1)..+(2N-1 -1)
8
-127..+127
16
-32767..+32767
O total de valores distintos representáveis é de 2N -1.
Códigos Binários
Complemento para 1
Somas algébricas
Vamos analisar alguns exemplos de como devemos proceder para efectuar-mos
somas algébricas em complemento para 1.
Exemplo 1: (+10) + (-2)=+8
(N=5)
(+10)
01010
(-2)
11101
00010 (+2)
Soma binária
100111
1
(+8)
Soma do ultimo transporte (se?0)
01000
5
Códigos Binários
Complemento para 1
Somas algébricas
Exemplo 2: (-8) + (-5)=-13
(N=5)
(-8)
10111
01000 (+8)
(-5)
11010
00101 (+5)
Soma binária
110001
Soma do ultimo transporte (se?0)
1
(-13)
10010
01101 (+13)
Códigos Binários
Complemento para 1
Somas algébricas
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: (-10) + (-7)=-17
(N=5)
(-10)
10101
01010 (+10)
(-7)
11000
00111 (+7)
Soma binária
101101
Soma do ultimo transporte (se?0)
1
(-17)
01110
01110 (+14)
??????????????????????????
Neste Exemplo houve OVERFLOW. Por norma isto acontece quando os dois últimos
n −1
transportes são diferentes. Excepto quando o resultado é igual a − (2 − 1)
6
Códigos Binários
Complemento para 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 1.
Número
Representação em complemento para 2
0
00000000
+19
00010011
+65
01000001
+133
10000101
+255
11111111
Como se pode ver o valor 0 (zero) em complemento para 2 tem uma única
representação.
Códigos Binários
Complemento para 2
Representação de números negativos
Os números negativos são obtidos através da passagem para complemento para 1, da
representação em código binário natural do valor absoluto de um certo e determinado
número, seguido da adição de 1.
N.º a
Representar
Valor
absoluto
Complemento 1
Valor a
somar
Complemento 2
-19
00010011
11101100
+1
11101101
-10
00001010
11110101
+1
11110110
-65
01000001
10111110
+1
10111111
-133
10000101
Não Representável
+1
Não Representável
-255
11111111
Não Representável
+1
Não Representável
7
Códigos Binários
Complemento para 2
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 1 que também
se copia; a partir daí, substituem-se os 1 por 0 e vice versa.
Exemplo 1 : Obtenção de -19 em C2
Exemplo 2: Obtenção de -24 em C2
+19 00010011
+24 00011000
-19 11101101
-24 11101000
copiar
complementar
copiar
complementar
Códigos Binários
Complemento para 2
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
Pesos
4
3
2
1
0
1
0
1
0
1
-16
+8
+4
+2
+1
Como podemos ver o bit de
sinal (MSB) é negativo.
Esta regra aplica-se igualmente
números inteiros positivos.
para
Efectuando a respectiva soma algébrica temos:
-16+4+1= -11
8
Códigos Binários
Complemento para 2
Vantagem
Ao contrário das representações em Sinal e Valor Absoluto e complemento para 1 o
valor 0 (zero) tem uma representação única em complemento para 2, 00000000 (N=8).
N.º Bits
Gama de variação
N
-(2N-1)..+(2N-1 -1)
8
-128..+127
16
-32768..+32767
O total de valores distintos representáveis é de 2N.
Códigos Binários
Complemento para 2
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 1,
se o número é positivo propaga-se 0.
Exemplo: Aumento da gama de variação de N=4 para N=8
-8
1000 11111000
+4
0100 00000100
-7
1001 11111001
9
Códigos Binários
Complemento para 2
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)
01000
(-3)
11101
Soma binária
00011 (+ 3)
100101 (+5)
Despreza-se
Códigos Binários
Complemento para 2
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.
(-12)
10100
01100 (+12)
(-14)
10010
01110 (+14)
Despreza-se
100110 (-26)
(-10)
10110
01010 (+10)
(-6)
11010
00110 (+ 6)
Soma binária
2 últimos transportes diferentes
Há overflow
Soma binária
110000 (-16)
2 últimos transportes iguais
Despreza-se
Não há overflow
20
10
Códigos Binários
Complemento para 2
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 (2N),
visto que a sua gama de variação é -(2N-1) ... +(2N-1-1);
• Transformar as adições e subtracções em somas algébricas, utilizando apenas
circuitos somadores binários;
• Comparativamente ao código de complemento para 1, as somas algébricas são
menos complexas, já que o último transporte é desprezado;
21
Códigos Binários
Código BCD 8421 (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 0100 0101 1000 (12
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
11
Códigos Binários
Código BCD 8421 (Binary Coded Decimal)
23
Códigos Binários
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:
true – (-1) em C2 - 11111111
false – 0 em C2 - 00000000
Operações lógicas elementares
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(11111111)=00000000 (false). Na Prática efectuamos a complementação bit a bit.
24
12
Códigos Binários
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 +1). Inicialmente o
oitavo bit era utilizado como bit paridade,
sendo, actualmente utilizado na obtenção
de
128
códigos
adicionais
para
codificação de caracteres acentuados e
outros símbolos.
25
13
Download