Estudo de aderência entre padrões de representação de dados sobre entidades
IC - Representação de dados
-
Upload
duilio-andrade -
Category
Documents
-
view
219 -
download
0
description
Transcript of IC - Representação de dados
Precisamos definir no nosso programa comocada dado será manipulado pelo computador
Um programa, que é uma seqüência deinstruções, deverá manipular diferentes tiposde dados: inteiro (Integer), texto (Array),caractere (String), doublé, byte, etc
Alguns dados serão definidos como texto eoutros como números
Tipo Caractere◦ BCD (Binary Coded decimal), – Formado por um grupo de 6
bits por caractere, permitindo a codificação de 64 caracteres;
◦ EBCDIC (Extended Binary Coded Decimal Interchange Code)- Formado por um grupo de 8 bits por caractere, permitindo a codificação de 28 = 256 caracteres. Codificação exclusiva da IBM;
Tipo Caractere◦ ASCII (American Standard Code for Information Interchange)
- Grupo de 7 bits e 1 de paridade, permitindo a codificação de 27 = 128 símbolos para representar letras, números, pontuação e outros caracteres;
◦ UNICODE – Grupo de 16 bits por símbolo pode representar até 216 = 65.536 símbolos. Ideal para representar os símbolos de outras línguas como chinês, russo, árabe, japonês, turco, etc.
3 aspectos são importantes para se trabalharcom valores numéricos:◦ Como os sinais dos números inteiros serão
representados
◦ Como separar a parte inteira da fracionária dosnúmeros não inteiros
◦ O limite de algarismos usados na representaçãodos números
Representação em Ponto Fixo◦ Indicada e usada para valores inteiros
Sinal e Magnitude
Complemento de 1
Complemento de 2
Representação em Ponto Flutuante◦ Usada para valores fracionários e números reais
Consiste na determinação de uma posiçãofixa para a vírgula (ponto em inglês),separando a parte inteira da fracionária
Todos os valores representados em pontofixo possuem a mesma quantidade dealgarismos inteiros e a mesma quantidadede algarismos para a parte fracionária
Exemplo:◦ 10110,101 01111,110 00001,00111110,010
Número Inteiro : a vírgula fica na direita
Número Fracionário: a vírgula fica naesquerda
A vírgula não é fisicamente representada namemória, é determinada na definição davariável no programa
O método do ponto fixo é utilizado emquase todas as linguagens de programaçãopara representar números inteiros
A magnitude (valor absoluto, que independe desinal) de um número é representada em binário
O sinal é representado por um bit (o bit maissignificativo, isto é, o bit mais à esquerda narepresentação)◦ O bit de sinal 0(zero) significa que o número é positivo
◦ O bit de sinal 1 significa que o número é negativo
Exemplo:
0011 = +3 1011 = -3(011 equivale ao valor absoluto 3)
Representando o número 3 em n = 8 bits temos:
Para representar -3
Para representar +3
1 0 0 0 0 0 1 1
0 0 0 0 0 0 1 1
Possui duas representações para o zero(matematicamente incorreto)
A representação de números é simétrica entrepositivos e negativos
Este tipo de representação possui alto custo ebaixa velocidade na execução
Soma◦ Se ambos os números têm o mesmo sinal, somam-se as
magnitudes e o sinal do resultado é o mesmo das parcelas
◦ Se os números têm sinais diferentes identifica-se a maiordas magnitudes e registra-se o seu sinal. Em seguidasubtrai-se a magnitude menor da maior
Subtração◦ Troca-se o sinal do subtraendo e procede-se como a soma
Soma de -17 e -9
1 0010001
1 0001001
1 0011010 (-26)
Soma de -21 e +10
1 0010101
1 0001010
1 0001011 (-11)
Subtração de -27 e +14
1 0011011
0 0001110
1 0001101 (-13)
Soma de -3 e +11
0 0001011
1 0000011
0 0000100 (+8)
Utiliza o bit mais à esquerda para o sinal◦ 0(zero) = positivo
◦ 1 = negativo
Para os números positivos, os N- 1 bits da direitarepresentam o módulo
O simétrico de um número positivo é obtido pelocomplemento de todos os seus dígitos (trocando 0 por1 e vice-versa) incluindo o bit de sinal
Exemplo, a representação de 10 e de -10
10 0 0001010
nº sinal módulo
-10 1 1110101
nº sinal módulo
Vantagem de possuir faixa simétrica◦ [ - (2 n-1 – 1) até + (2 n-1 -1)]
◦ Para 8bits a faixa é:
- 127 <= X <= +127
◦ Para 16 bits a faixa é:
- 32767 <= X <= + 32767
◦ Para 32 bits a faixa é:
- 2147483647 <= X <= + 2147483647
2 representações para o número 0.Para 8 bits o 0 tem as seguintes representações:
00000000 (+0)10000000 (-0)
Decimal Binário=C1 Decimal Binário=C1
0 0000 0 1111
1 0001 -1 1110
2 0010 -2 1101
3 0011 -3 1100
4 0100 -4 1011
5 0101 -5 1010
6 0110 -6 1001
7 0111 -7 1000
Subtração◦ A subtração entre dois números pode ser substituída
pela soma em complemento de um.
Soma◦ Basta somar os números, em que um número
negativo, se houver, estará representado por seucomplemento, C1 (não muda o sinal).
◦ Se números com mesmo sinal são somados e oresultado possui sinal contrário -> overflow.
Regras a) Somar os dois números, bit a bit, inclusive o bit de
sinal.b) Avaliação dos casos de "vai-um":b.1) Se não ocorreu vai-um para o bit de sinal nem para fora do número: --- este é o resultado correto;b.2) Se ocorrer "vai-um" só para o bit de sinal (e não para fora do número): --- incorreto - ocorreu overflow------- (isto significa que o resultado excede a faixa de representação para o número de bits adotado).
Regras b.3.1) Se ocorrer "vai-um" para fora do número:
--- para obter o resultado final, soma-se o "vai-um" externo (para fora do número) ao resultado da soma; o bit para fora do número (que excede o número de bits adotado na representação) é desprezado. b.3.2) Nesta soma final também pode ocorrer "vai-um" no último bit; --- se o número de "vai-um" ocorridos (para o bit de sinal, para fora do número ou na soma final) for par (o que equivale a inverter duas vezes o sinal), ------ o resultado está correto; --- se o número for ímpar (1 ou 3 "vai-um"): ------ o resultado está incorreto - ocorreu overflow.
Exemplo com n = 6 ◦ só pode representar valores entre -31 a +31
◦ [ - (2 n-1 – 1) até + (2 n-1 -1)]
1) +15+22 2) +9-4
1111 111 11
001111 001001
010110 111011
100101 (overflow) 000100
+ 1
000101
3) -15 -10
11
110000 (-)
110101 (-)
100101
1
100110 (-)
(ocorreu "vai-um" p/ bit de sinal e p/ fora do nº mas não na soma final - nº de "vai-um" é par)
4) -15 -22
1
110000 (-)
101001 (-)
011001
1
011010 (+) --> overflow
(ocorreu "vai-um" só p/ fora do nº mas não na soma final - nº de "vai-um" é ímpar)
obs.: soma de dois nº negativos não poderia dar positivo
Utiliza o bit mais à esquerda para osinal◦ 0(zero) = positivo◦ 1 = negativo
Para os números positivos, os N- 1 bitsda direita representam o módulo
O simétrico de um número é obtido emdois passos◦ Obtém-se o complemento de todos os bits do
número positivos (trocando 0 por 1 e vice-versa)incluindo o bit de sinal
◦ Ao resultado obtido do complemento, soma-se 1 (embinário), desprezando o último transporte se houver
Vantagem: uma única representação para o número 0
Para 8 bits teremos:Nº 0 00000000 (+0)
Faixas assimétricas
◦ [ - (2 n-1) até + (2 n-1 -1)]◦ Para 8 bits a faixa é:
◦ - 128 <= X <= +127◦ Para 16 bits a faixa é:
◦ - 32768 <= X <= + 32767◦ Para 32 bits a faixa é:
◦ - 2147483648 <= X <= + 2147483647
Para o número -5, 001012
Complemento de 1 (C1) é 110102
Complemento de 2 (C2) 110102 (C1) + 1 = 110112
Decimal Binário=C1 Decimal Binário=C1
0 0000 -1 1111
1 0001 -2 1110
2 0010 -3 1101
3 0011 -4 1100
4 0100 -5 1011
5 0101 -6 1010
6 0110 -7 1001
7 0111 -8 1000
Basta somar os números, sendo que umnúmero negativo estará representadopor seu complemento de 2, C2
Se ocorrer vai 1 além do número,despreza
Se números com o mesmo sinal sãosomados e o resultado possui sinalcontrário -> overflow
3) +5-2
000101 -2 -> 000010 em C1 = 111101
111110 em C2 = 111110
000011 (+3)
4) +10-3
001010 -3 -> 000011 em C1 = 111100
111101 em C2 = 111101
000111 (+7)
5) +15+17
001111
010001
100000 (overflow)
6) -15-27
110001 -27 -> 011011 em C1 = 100100
100101 em C2 = 100101
010110 (overflow)
Tipo de Representação
Dupla representação para o zero
Custo
Sinal e Magnitude Sim (desvantagem) Alto (componentes separados para soma e subtração)
Complemento de 1 Sim (desvantagem) Baixo (um componente único para soma e subtração)
Complemento de 2 Não (vantagem) Baixo (um componente único para soma e subtração)
É denominada representação em pontoflutuante, pois o “ponto” varia sua posição,modificando, em conseqüência, o valorrepresentado
É possível representar uma quantidademuito maior de números
Qualquer número, inteiro ou fracionário,pode ser expresso no formato
±N × B±E ,onde:
◦ N = número;
◦ B = base;
◦ ± E = valor do expoente, com seu sinal (expoente positivo representa valores acima de 1 e expoente negativo representa valores compreendidos entre 0 e 1).
Exemplos, normalizando:◦ + 0,22×10+5
◦ − 0,38×10+9
◦ + 2,4×10−12 -> 0,24 X 10-11
◦ + 8,03×10−6 -> 0,803 X 10-5
Forma normalizada:
◦ ± 0, M X B ±e
◦ Onde M é a mantissa, B é a base e “e” é o expoente.
◦ Exemplos:
57,683 10 => 0,57683 X 10 2
0,0004628 10 => 0,4628 X 10-3
0,00001011 2 => 0,1011 X 2 -4
SN= (1); SE = (1); Expoente = (6)
Mantissa = (24); Base = (2)
1) Converter o número em binário
407,375 10 = 110010111,011 2
2) Normalizar
0,110010111011 X 2 9
3) Representar (Sinal e Magnitude)
0 0 001001 110010111011000000000000
SN0
SE0
Expoente001001
Mantissa110010111011000000000000
Soma e subtração (Passo a Passo)◦ 1) Converte os números para formato em pronto
flutuante
◦ 2) Subtrai expoentes e registra a diferença
◦ 3) Mantissa do menor expoente sofre umdeslocamento à direita do valor encontrado(2)
◦ 4) Soma algebricamente as mantissas
◦ 5) Normaliza o resultado e informa
Ocorre overflow quando o valor absoluto do dado a ser representado excede a capacidade de representação
Tipo Lógico◦ Permite a utilização de variáveis que possuem
dois estados possíveis para representação dainformação, VERDADEIRO ou FALSO
◦ Operadores lógicos AND
OR
NOT
OU Exclusivo
Tipo Lógico◦ AND: se e somente se todas as entradas forem verdadeiras
(1)
A B A AND B (A.B)
0 0 0
0 1 0
1 0 0
1 1 1
Tipo Lógico◦ OR: se e somente se uma das entradas for verdadeira (1)
A B A OR B (A+B)
0 0 0
0 1 1
1 0 1
1 1 1
Tipo Lógico◦ NOT: tem como resultado negar a sua entrada, ou seja, ele
será verdadeiro se sua entrada for falsa (0) ou falsa (0) sesua entrada for verdadeira
A NOT A
0 1
1 0