BCC 720 – Sistemas de Computação para Automação Aula 02 Representação Ponto Flutuante (Floating Point) Conteúdo – Representação ponto flutuante – ASCII Representação Ponto-Flutuante N = f x 10e Onde: f = Fração ou mantissa e = Expoente inteiro positivo ou negativo Exemplo: 3,14 = 0,314 x 101 = 3,14 x 100 0,000001 = 0,1 x 105 = 1,0 x 10-6 Representação Ponto-Flutuante N = (− 1)S × F × 2E • S – sinal do número • F – mantissa, normalizada (double => tam = 52) • E – expoente (double=> tam = 11) campo Sinal expoente Mantissa tamanho 1 8 23 Representação Ponto-Flutuante Exemplo: convertendo 0,625 para ponto flutuante: Regra prática: multiplica-se por 2 cada sub parcela do número => o bit a ser colocado representa o valor inteiro obtido da multiplicação: a) 0,625 x 2 = 1,25 => primeiro bit = 1 b) 0,25 x 2 = 0,5 => segundo bit = 0. c) 0,5 x 2 = 1,0 => terceiro bit = 1. Consequentemente: 0.625(10) = 0,101(2) Representação Ponto-Flutuante Porém, 0,101(2) não está na forma normalizada... 0,101 = 1,01 * 2^(-1) → desloca-se para que apareça sempre um “1” antes da vírgula... o qual não precisa ser armazenado... Representação Ponto-Flutuante Overflow = estouro do expoente – não possível sua representação em n bits Underflow = estouro, porém na representação negativa do expoente Padrão IEEE 754 ASCII ASCII (American Standard Code for Information Interchange) - Caracteres de controle e “normais” Exemplos de caracteres de controle: Binário Decimal Hexa Controle Abreviação Descrição 0000 0000 00 00 ^@ NUL Null - Nulo 0000 0001 01 01 ^A SOH Start of Header 0000 0010 02 02 ^B STX Start of Text 0000 0011 03 03 ^C ETX End of Text 0000 0100 04 04 ^D EOT End of Tape 0000 0101 05 05 ^E ENQ Enquire 0000 0110 06 06 ^F ACK Acknowledge 0000 0111 07 07 ^G BEL Bell 0000 1000 08 08 ^H BS Back-space 0000 1001 09 09 ^I HT Horizontal Tabulation 0000 1010 10 0A ^J LF Line-Feed 0000 1011 11 0B ^K VT Vertical Tabulation 0000 1100 12 0C ^L FF Form-Feed 0000 1101 13 0D ^M CR Carriage-Return ASCII Exemplos de caracteres “normais”: Binário Dec. Hexa. Carac 0100 0000 64 40 @ 0100 0001 65 41 A 0100 0010 66 42 B 0100 0011 67 43 C 0100 0100 68 44 D 0100 0101 69 45 E 0100 0110 70 46 F 0100 0111 71 47 G 0100 1000 72 48 H 0100 1001 73 49 I 0100 1010 74 4A J Binário Dec. Hexa. Carac 0010 1111 47 2F / 0011 0000 48 30 0 0011 0001 49 31 1 0011 0010 50 32 2 0011 0011 51 33 3 0011 0100 52 34 4 0011 0101 53 35 5 0011 0110 54 36 6 0011 0111 55 37 7 0011 1000 56 38 8 0011 1001 57 39 9 0011 1010 58 3A : ASCII #include<stdio.h> #include<stdlib.h> int main() { int i=0; for(;i < 127;i++) printf("%c[%d]\n",i,i); } Slide 1 Slide 2 Slide 3 Slide 4 Slide 5 Slide 6 Slide 7 Slide 8 Slide 9 Slide 10 Slide 11