Capítulo 6
Representação de
Dados
2
Representação de Dados
• Um computador executa operações sobre dados numéricos (os números) ou alfabéticos (letras e símbolos).
• Por outro lado, um computador somente opera sobre valores
representados em notação binária, isto é, somente “entende” bits - uns e zeros. Assim, os dados precisam ser representados no computador (na memória e no processador) sempre em bits, de forma que o
computador possa interpretar corretamente o seu significado e executar as operações adequadas.
• Isso significa que é preciso definir um meio de representar os dados, codificados em uns e zeros, que possa ser interpretada pelo
Tipos de Dados
• Um programa (uma seqüência de instruções) deverá manipular diferentes tipos de dados. Esses dados podem ser:
• numéricos
• ponto fixo (números inteiros)
• ponto flutuante (números reais ou fracionários)
• alfabéticos
• letras, números e símbolos (codificados em ASCII ou EBCDIC)
4
Tipos de Dados
• Por exemplo, na linguagem C, declarações do tipo:
• int num; ou
• float sal;
• Indicam que a variável num é um número inteiro e a variável sal é um número real (ponto flutuante), usando representação científica, isto é, representado na forma (Sinal) Valor x Base Expoente.
Representação de Números Inteiros
• Como os computadores operam sempre em binário, a forma mais intuitiva de representar números inteiros seria por meio da conversão do número decimal para seu correspondente em binário.
• Essa representação seria a mais imediata e eficiente.
• Como os números podem ser positivos ou negativos, um aspecto primordial a ser definido seria como representar o sinal.
• Nesta representação, foi definida a utilização de um bit a mais na
representação (o bit mais representativo), representando o sinal, com a seguinte convenção:
6
Representação de Números Inteiros
• Assim, uma representação em binário com n bits teria disponíveis para a representação do número n-1 bits, pois o bit mais significativo é
Exemplo (PLT – 6.24)
•
Somar (– 17) e (– 19). Considerar a palavra de dados com 6
bits.
•
Ocorrência de overflow ! Estouro de capacidade dos
registradores.
•
O resultado desta operação seria – 36. Porém com 6 bits,
limita-se as operações em – 31 a 31.
•
Com palavras de dados com 7 bits seria possível, pois a
limitação vai de – 63 a 63.
8
Notação Complemento a 1
• Complemento a 1 e uma maneira de representação dos números inteiros negativos, que são obtido efetuando-se: 1 menos cada algarismo do numero. Em outras palavras, para complementar um numero a 1, invertemos todos os bits do numero binário (todos os 0s viram 1s e todos os 1s viram 0s).
• Assim como na representação em Sinal e Magnitude, os números positivos permanecem inalterados. A representacao do primeiro bit representando um sinal continua valida, sendo que números positivos iniciam-se com 0 e números negativos com 1.
Notação Complemento a 1
• O algoritmo para representacao de números (iniciando-se com um numero na base 10) com Complemento a 1 e o seguinte:
1. Represente o numero absoluto (sem o sinal) em binário, com o numero de bits solicitado (completando com 0s a esquerda).
2. Caso o numero seja positivo, não há alteração (o número já está representado).
3. Caso o número seja negativo, complementa-se o número a 1 (inverte-se o valor dos bits → todo bit 0 passa a (inverte-ser bit 1 e todo bit 1 passa a ser 0).
10
Notação Complemento a 1
• Para “descobrir” o valor de um número representado em complemento de 1, deve-se proceder o caminho contrário, seguindo-se o algoritmo a seguir:
1. Verifica-se o primeiro bit (que ainda tem como função dizer qual e o sinal do número).
2. Caso o numero seja positivo (primeiro bit = 0), apenas converte-se para decimal para 'descobrir' o número.
3. Caso o número seja negativo (primeiro bit = 1)
12
Notação Complemento a 2
• A representação dos números inteiros negativos em complemento a 2 é obtida subtraindo-se cada algarismo de 1 (Complemento a 1) e
depois somar 1 ao resultado.
• Complemento de dois é o sistema mais usado para representação de números inteiros com sinal nos computadores modernos.
• A representação em complemento de 2 tem o atrativo de propor uma única representação para o número 0.
14
Notação Complemento a 2
• O algoritmo para obter-se um número em complemento de 2 é um adendo ao algoritmo do complemento do 1, sendo:
1. Represente o número absoluto (sem o sinal) em binário, com o número de bits solicitado (completando com 0s a esquerda).
2. Caso o número seja positivo, não há alteração (o número já está representado)
3. Caso o número seja negativo,
a. Complementa-se o número a 1, invertendo o valor dos bits (complemento a 1)
16
Notação Complemento a 2
• Para “descobrir” o valor de um número representado em complemento de 2, deve-se proceder o caminho contrário, seguindo-se o algoritmo a seguir:
1. Verifica-se o primeiro bit (que ainda tem como função dizer qual é o sinal do número).
2. Caso o número seja positivo (primeiro bit = 0), apenas converte-se para decimal para 'descobrir' o número.
3. Caso o número seja negativo (primeiro bit = 1)
a. Subtrai-se 1 do número (transformando em complemento a 1)
b. Invertem-se os bits do número (retorno do complemento a 1) e
c. Converte-se o valor do número em decimal. (Não esquecendo que o número é NEGATIVO)
18
Tabela 6.2 (PLT) – Parte 1
Decimal Sinal e Magnitude Complemento a 1 Complemento a 2
-15 11111 10000 10001 -14 11110 10001 10010 -13 11101 10010 10011 -12 11100 10011 10100 -11 11011 10100 10101 -10 11010 10101 10110 -9 11001 10110 10111 -8 11000 10111 11000 -7 10111 11000 11001 -6 10110 11001 11010 -5 10101 11010 11011 -4 10100 11011 11100 -3 10011 11100 11101 -2 10010 11101 11110 -1 10001 11110 11111 -0 10000 11111
-Tabela 6.2 (PLT) – Parte 2
Decimal Sinal e Magnitude Complemento a 1 Complemento a 2
+0 00000 00000 00000 +1 00001 00001 00001 +2 00010 00010 00010 +3 00011 00011 00011 +4 00100 00100 00100 +5 00101 00101 00101 +6 00110 00110 00110 +7 00111 00111 00111 +8 01000 01000 01000 +9 01001 01001 01001 +10 01010 01010 01010
20
Representação em BCD
• Codifica o sistema decimal em binário.
• Codifica os algarismos de 0 a 9.
• Cada dígito é representado por seu equivalente binário.
• 4 bits são necessários para Codificar cada dígito:
22
BCD X Binário
• BCD não é um outro sistema de numeração, como binário, octal, hexadecimal ou decimal.
• Ele é um sistema decimal, com cada digito codificado no seu equivalente binário.
• Número BCD não é o mesmo que número binário puro.
• Código binário puro considera o número decimal completo e representa em binário.
BCD X Binário
• Considere o número 137 e compare seus códigos binário e BCD:
• 137 = 10001001 (binário)
• 137 = 0001 0011 0111 (BCD)
• Código BCD requer 12 bits.
• Código binário puro requer 8 bits.
• Principal vantagem do BCD: relativa facilidade de conversão para decimal e vice-versa.
24
Tipo Lógico
• AND, OR, XOR e NOT são os principais operadores lógicos, base para
a construção de sistemas digitais e da Lógica proposicional.
• Os operadores AND, OR e XOR são operadores binários, ou seja, necessitam de dois elementos, enquanto o NOT é unário. Na
computação, esses elementos são normalmente variáveis binários, cujos possíveis valores atribuídos são 0 ou 1.
• Porém, a lógica empregada para essas variáveis serve também para sentenças (frases) da linguagem humana, onde se está for verdade corresponde ao valor 1, e se for falsa corresponde ao valor 0.
Operador Lógico AND
Componente: porta AND
A
B
X = A . B ou X = A AND B
0
0
0
0
1
0
1
0
0
26
Operador Lógico OR
A
B
X = A + B ou X = A OR B
0
0
0
0
1
1
1
0
1
1
1
1
Componente: porta OR
A
A+B
B
Operador Lógico NOT
Componente: inversor ou porta NOT
A
A
A
X = A ou X = NOT A
0
1
28