REPRESENTAÇÃO DE DADOS Prof. Maicon A. Sartin mapsartin@gmail.com
Representação de Dados Sumário Introdução a Representação de Dados Complemento a 1 Aritmética em C1 Complemento a 2 Aritmética em C2 Aritmética em C1 Base Binária Aritmética em C2 Base Binária Aritmética em Sinal e Magnitude Representação de Dados (Ponto Flutuante)
Representação de Dados Definições importantes para numeros binários bit 1 dígito binário Nibble 4 dígitos binários Byte 8 dígitos binários MSB (most significant bit) bit mais significativo LSB (least significant bit) bit menos significativo
Representação de Dados Tipos de Dados Numéricos Ponto Fixo (Inteiros) Ponto Flutuante (Reais ou Fracionários) BCD (Representação decimal codificada em binário) Alfanuméricos Letras, números e símbolos (Codificados em ASCII)
Representação de Dados Representação de números inteiros (Computacionalmente) Números inteiros positivos e negativos Representação por sinal e magnitude Representação em complemento Facilita e torna mais eficiente a manipulação de operações aritméticas em computadores
Representação de Dados Dados Numéricos Os números podem ser positivos ou negativos Em binário são representados bit 0 sinal positivo bit 1 sinal negativo Valor decimal Valor binário com 8 bits (7 + bit de sinal) +9 00001001 (bit inicial 0 significa positivo) -9 10001001 (bit inicial 1 significa negativo) +127 01111111 (bit inicial 0 significa positivo) -127 11111111 (bit inicial 1 significa negativo)
Representação em sinal e magnitude Representação binária com um bit (MSB) p/ o sinal Magnitude é o valor absoluto Ex. 0100 = +4 1100 = -4 Sinal Magnitude 100 é a magnitude ou valor absoluto
Representação de Dados Sinal-módulo (bit de sinal); (método mais simples) Reserva-se um bit à esquerda do número Posição do algarismo mais significativo
Representação de Números em Complemento de 1(base-1 ou C1) Complemento é a diferença entre cada algarismo do número e o maior algarismo possível na base Vantagem: subtração entre dois números pode ser substituída pela sua soma em complemento. A representação de números positivos em complemento não tem alteração A representação de números negativos é obtida por: (base - 1) menos cada algarismo do número Ex.1 Ex.2 Ex.3 (base -1) ---> 999 FFFF 1111-297 - 3A7E -0011 Complemento---> 702 C581 1100 (C1)
ARITMÉTICA EM COMPLEMENTO DE 1 (BASE - 1) Soma-se os números e o número negativo estará representado por seu complemento Sinal e Complemento de 1 Verificação Magnitude (base-1) -418 581 (C1) 999 +123 +123-295 -295 704 704 999-418 581 (C1) Base Hexadecimal : 3142-54A7
ARITMÉTICA EM COMPLEMENTO DE 1 (BASE - 1) Exercícios de Fixação Faça o C1 dos números: -0101011 2-765 10-1B8 16 Resolva a aritmética em C1 Decimal Hexadecimal - 234-167 - 3AB +132 +360 +18A
REPRESENTAÇÃO DE NÚMEROS NEGATIVOS EM COMPLEMENTO DE 2 (C2) Calcula-se o complemento a (base -1) e depois soma-se 1 ao resultado EX.1 Ex.2 Ex.3 999 FFFF 1111-297 - 3A7E -0011 702 C581 1100 (C1) +0001 +0001 +0001 703 C582 1101 (C2)
ARITMÉTICA EM COMPLEMENTO DE 2 (C2) Soma-se os números e o número negativo será representado pelo seu complemento a base (C2) Sinal e Cálculo C2 C2 Verificação magnitude - 418 999 582 999 +123-418 + 123-295 - 295 581 705 (C2) 704 +001 +001 582 705 e a base binária?
ARITMÉTICA EM COMPLEMENTO DE 2 (C2) Exercícios de Fixação em C2 Faça o C2 dos números: 0101011 765 1B8 Resolva a aritmética em C2-234 - 167-3AB +132 +360 +18A
Representação de Números Binários Binário Inteiro positivo Sinal-magnitude C 1 C 2 0000 0 +0 0 0 0001 1 1 1 1 0010 2 2 2 2 0011 3 3 3 3 0100 4 4 4 4 0101 5 5 5 5 0110 6 6 6 6 0111 7 7 7 7 1000 8-0 -7-8 1001 9-1 -6-7 1010 10-2 -5-6 1011 11-3 -4-5 1100 12-4 -3-4 1101 13-5 -2-3 1110 14-6 -1-2 1111 15-7 -0-1
Representação de Dados Representação do limite dos números binários de 5 bits em complemento de 2
Caso Particular na base 2 (binária) Para se obter o complemento tem que ser feito: Complemento a 1 Inverte o número binário Complemento a 2 Soma 1 no complemento a 1
Caso Particular na base 2 (binária) Complemento de 2 Números negativos devem estar representados em complemento de 2 Quando a soma de dois números de n algarismos resulta em um valor com n+1 algarismos Overflow (transbordo de capacidade)
Caso Particular na base 2 (binária)
Caso Particular na base 2 (binária) Algoritmo da operação de adição em Complemento a 2 1.Somar os dois números, bit a bit, inclusive o bit do sinal 2.Desprezar o último vai 1 (se houver) 3.Se, simultaneamente, ocorrer vai 1 p/ o bit de sinal e p/ fora do número, ou se ambos não ocorrerem, o resultado está correto 4.Se ocorrer apenas um dos dois vai 1 o resultado está incorreto e ocorreu um overflow O overflow somente ocorre se ambos os números tiverem o mesmo sinal (pos ou neg) e o resultado tiver sinal oposto ao dos números
Caso Particular na base 2 (binária) Algoritmo da operação de adição em Complemento a 2 1.Existem 4 possibilidades indicadas no algoritmo 1.Carry p/ o bit de sinal e para fora do resultado (correto) 2.Nenhuma ocorrência de carry (correto) 3.Carry p/ o bit de sinal (incorreto) 4.Carry p/ o bit de fora do resultado (incorreto)
Caso Particular na base 2 (binária) 1. Carry p/ o bit de sinal e para fora do número Somar 1100 e 1101 representados em C2 (N os Neg.)
Caso Particular na base 2 (binária) 2. Nenhuma ocorrência de carry Somar 0001 e 0101 representados em C2 (N os Pos.) Quando os números são positivos para descobrir o valor em decimal apenas converte-se as bases 0001 (+1) + 0101 (+5) Não há nenhum carry
Caso Particular na base 2 (binária) 3. Carry p/ o bit de sinal Somar 0101 e 0110 representados em C2 (N os Pos.) 1 0101 (+5) + 0110 (+6) Carry para o bit de sinal e sem carry para fora
Caso Particular na base 2 (binária) 4. Carry p/ o bit de fora do resultado Somar 1010 e 1101 representados em C2 (N os Neg.) 1 Carry para o bit de fora do número, este é desprezado 1011 (-5) + 1100 (-4)
Caso Particular na base 2 (binária) Exercícios Faça a aritmética em complemento de 2 e verifique em qual das 4 possibilidades estão os resultados. Os números negativos já estão em complemento de 2. 0001 1101 0101 1001 + 0101 +1100 + 0100 +1010 Exercícios Faça o complemento de 2 quando necessário e resolva a aritmética em complemento de 2 com a verificação dos resultados. +2-6 -10-3 +4-2
Representação de Dados E os outros números Números muito grandes? (segundos/século) 3.155.760.000 (3,155760000 x 10 9 ) Números muito pequenos? (diâmetro atômico) 0,0000000110 (1,010 x 10-8 ) cm Racionais (padrão repetitivo) 2/3 (0,666666666...) Irracionais 21/2 (1,414213562373...) Todos representados em notação científica
Representação de Dados Notação Científica - Forma Normalizada: sem zeros à frente - Alternativas para se representar 1/1.000.000.000 Normalizada: 1,0 x 10-9 Não normalizada: 0,1 x 10-8 ou 10,0 x 10-10
Representação de Dados Notação Científica para números binários 2-1 A aritmética do computador que suporta isto é chamada de ponto flutuante representa números onde o ponto binário não é fixo, como é o caso dos inteiros. Declaramos tais variáveis como float em C.
Representação de Dados Ponto Flutuante Formato Normal: Bit de Sinal ± M x B ±e dois 8 bits 23 bits Expoente Mantissa ou significando ou Fração Bit de Sinal = ± Expoente = e 1 bit p/ sinal e 6 bits p/ Magnitude Mantissa = M Normalizada Base de exponenciação = B Representa números tão pequenos quanto 2,0 x 10-38 até tão grande quanto 2,0 x 10 38
Representação de Dados Ponto Flutuante Se o resultado for muito grande? (> 2,0x10 38 ) Overflow! Overflow => Expoente maior do que pode ser representado com os 8 bits do campo Expoente Se for muito pequeno? (< 2,0x10-38 ) Underflow! Underflow => Expoente negativo maior do que pode ser representado com os 8 bits do campo Expoente Como reduzir as chances de overflow ou underflow?
Representação de Dados Ponto Flutuante de Precisão Dupla Bit de Sinal 11 bits 52 bits Expoente Mantissa ou significando ou Fração Precisão Dupla (vs. Precisão Simples) Padrão IEEE 754 Variável C declarada como double Representa números quase tão pequenos quanto 2,0 x 10-308 e quase tão grandes como 2,0 x 10 308 Mas a vantagem principal é a maior precisão devido a um significando maior.
Representação de Dados Ponto Flutuante Formatos de Representações em Ponto Flutuante SISTEMA Total de bits Sinal Expoente Fração IEEE 754 precisão simples 32 1 8 23 IEEE 754 precisão dupla 64 1 11 52 IEEE 754 precisão estendida 80 1 15 64
Representação de Ponto Flutuante IEEE-754 - Exemplos?
Representação de Dados Um exemplo de operação com Ponto Flutuante Multiplicar 1,110 10 10 e 9,200 10-5 Passo 1: Somar o expoente. 10+(-5)=5 Passo 2: Multiplicar as mantissas: 1,110 x 9,200=10,212000 Passo 3: Normalizar o valor, e arredondar para o número de dígitos da mantissa. 10,212 x 10 5 = 1,0212 x 10 6 Passo 5: Definir o sinal, com base nos sinais dos operandos: +1,021 x 10 6
Representação de Dados Exemplo de Ponto Flutuante - Binário Números com fração Passo 1: Somar o expoente. 10+(-5)=5 6,625 10 Parte inteira: 6 10 = 110 2 Parte fracionária: 0,625 10 =?
Representação de Dados Separar a parte inteira do resultado Multiplicar a parte fracionária por 2 até obter 0 ou até chegar a um limite de bits 0,625 x 2 = 1,25 0,25 x 2 = 0,5 0,5 x 2 = 1,0
Representação de Dados Separar a parte inteira do resultado Multiplicar a parte fracionária por 2 até obter 0 ou até chegar a um limite de bits 0,625 x 2 = 1,25 0,25 x 2 = 0,5 0,5 x 2 = 1,0 110,101 2
Representação de Dados Potências de 2 2-1 = 0,5 2-2 = 0,25 2-3 = 0,125 2-4 = 0,0625 2-5 = 0,03125 2-6 = 0,015625 2-7 = 0,0078125 2-8 = 0,00390625 2-9 = 0,00195312 2 0 = 1 2 1 = 2 2 2 = 4 2 3 = 8 2 4 = 16 2 5 = 32 2 6 = 64 2 7 = 128 2 8 = 256
Representação de Dados Converta os valores abaixo para a base 2: 2,125 10 Converta os valores abaixo para a base 10: 11,1101 2
Referências STALLINS, W. Arquitetura e Organização de Computadores Projeto para o desempenho. Prentice Hall, 2003. pp. 289-333. TANEMBAUM, A. S. Organização Estruturada de Computadores. LTC, 2001. pp. 381-391. MONTEIRO, M. A. Introdução à Organização de Computadores. LTC, 2002. pp. 39-57;272-315. WANDERLEY, Juliana F. C. Ponto Flutuante. Curso de OAC na Graduação da UNB, 2002. Adalberto. Ponto Flutuante. Curso de AC I na Graduação da UCB, 2011.