Você está na página 1de 13

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

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 Tipos pré-definidos em


linguagem de alto nível
(pascal)
N 0..2N-1

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 Soma do ultimo transporte (se?0)

(+8) 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
1 Soma do ultimo transporte (se?0)

(-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
1 Soma do ultimo transporte (se?0)

(-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 Valor Complemento 1 Valor a Complemento 2


Representar absoluto somar
-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 copiar
complementar 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 4 3 2 1 0 Como podemos ver o bit de


1 0 1 0 1 sinal (MSB) é negativo.

Esta regra aplica-se igualmente para


Pesos -16 +8 +4 +2 +1 números inteiros positivos.

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 00011 (+ 3) Soma binária

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) Soma binária

Despreza-se 100110 (-26) 2 últimos transportes diferentes


Há overflow

(-10) 10110 01010 (+10)


(-6) 11010 00110 (+ 6) 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

Você também pode gostar