IC - Representação de dados

55
Duílio Andrade [email protected]

description

Sinal Magnitude; Complemento de Um; Complemento de Dois; Ponto Flutuante, Tipos Lógicos.

Transcript of IC - Representação de dados

Duílio Andrade

[email protected]

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

Principais tipos de dados◦ Caractere

◦ Numérico

◦ Lógico

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)

Detalhes , 8 bits

Sinal Magnitude

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

1) +10+3 2) +3+7

001010 000011

000011 000111

001101 001010

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:◦ + 0,22×10+5

◦ − 0,38×10+9

◦ + 2,4×10−12

◦ + 8,03×10−6

Exemplos:◦ 57,683

57,683 X 10 +6

57683 X 10-3

0,57683 X 10+2

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

Representação no Computador

A base é implícita

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

Tipo Lógico◦ XOR: também conhecido como “Ou exclusivo” , somente

será verdadeiro se uma das entradas for verdadeira (1), seambas forem verdadeiras ou falsas o resultado é falso (0)

A B A xor B (A.B)

0 0 0

0 1 1

1 0 1

1 1 0