27
Representação de Dados Representação de Dados Universidade Federal do Pará Universidade Federal do Pará Faculdade de Computação Faculdade de Computação Bacharelado em Ciência da Bacharelado em Ciência da Computação Computação Fundamentos de Comunicação Digital Fundamentos de Comunicação Digital

Representação de Dados Universidade Federal do Pará Faculdade de Computação Bacharelado em Ciência da Computação Fundamentos de Comunicação Digital

Embed Size (px)

Citation preview

Page 1: Representação de Dados Universidade Federal do Pará Faculdade de Computação Bacharelado em Ciência da Computação Fundamentos de Comunicação Digital

Representação de DadosRepresentação de Dados

Universidade Federal do ParáUniversidade Federal do ParáFaculdade de ComputaçãoFaculdade de Computação

Bacharelado em Ciência da ComputaçãoBacharelado em Ciência da ComputaçãoFundamentos de Comunicação DigitalFundamentos de Comunicação Digital

Page 2: Representação de Dados Universidade Federal do Pará Faculdade de Computação Bacharelado em Ciência da Computação Fundamentos de Comunicação Digital

Representação de DadosRepresentação de Dados

• Em um computador são Em um computador são armazenados e processados apenas armazenados e processados apenas dados e instruçõesdados e instruções..

• Um programa de computador é Um programa de computador é formado por uma formado por uma seqüência de seqüência de instruçõesinstruções que operam sobre um que operam sobre um conjunto de dados (os dados conjunto de dados (os dados são são os os operandos operandos das instruções.das instruções.

• Um computador executa operações Um computador executa operações sobre dados numéricos (os números) sobre dados numéricos (os números) ou alfabéticos (letras e símbolos).ou alfabéticos (letras e símbolos).

Page 3: Representação de Dados Universidade Federal do Pará Faculdade de Computação Bacharelado em Ciência da Computação Fundamentos de Comunicação Digital

Representação de DadosRepresentação de Dados

• Assim, os dados precisam ser Assim, os dados precisam ser representados no computador (na representados no computador (na memória e no processador) sempre memória e no processador) sempre através de bits, de uma forma que o através de bits, de uma forma que o computador possa interpretar computador possa interpretar corretamente o seu significado e corretamente o seu significado e executar as operações adequadas.executar as operações adequadas.

Page 4: Representação de Dados Universidade Federal do Pará Faculdade de Computação Bacharelado em Ciência da Computação Fundamentos de Comunicação Digital

Representação de DadosRepresentação de Dados

• Tipos de dadosTipos de dados– numéricosnuméricos

• ponto fixo (números inteiros)ponto fixo (números inteiros)• ponto flutuante (números reais ou ponto flutuante (números reais ou

fracionários)fracionários)• BCD (representação decimal codificada em BCD (representação decimal codificada em

binário)binário)

– alfabéticosalfabéticos• letras, números e símbolos (codificados em letras, números e símbolos (codificados em

ASCII e EBCDIC)ASCII e EBCDIC)

Page 5: Representação de Dados Universidade Federal do Pará Faculdade de Computação Bacharelado em Ciência da Computação Fundamentos de Comunicação Digital

Representação de DadosRepresentação de Dados• Números inteirosNúmeros inteiros

– bit 0 ==> sinal positivobit 0 ==> sinal positivo– bit 1 ==> sinal negativo.bit 1 ==> sinal negativo.– Essa representação tem o Essa representação tem o

nome de nome de representação em representação em sinal e magnitudesinal e magnitude..

ValorValordecimaldecimal

Valor binário com 8 bits (7 + bitValor binário com 8 bits (7 + bitde sinal)de sinal)

+9+9 0000100100001001(bit inicial 0 significa positivo)(bit inicial 0 significa positivo)

-9-9 1000100110001001(bit inicial 1 significa negativo)(bit inicial 1 significa negativo)

+127+127 0111111101111111(bit inicial 0 significa positivo)(bit inicial 0 significa positivo)

-127-127 1111111111111111(bit inicial 1 significa negativo)(bit inicial 1 significa negativo)

Page 6: Representação de Dados Universidade Federal do Pará Faculdade de Computação Bacharelado em Ciência da Computação Fundamentos de Comunicação Digital

Representação de dadosRepresentação de dados

• Números negativosNúmeros negativos– Operações de subtração são efetuadas Operações de subtração são efetuadas

com operações de somacom operações de soma– Complemento a 1Complemento a 1

• Inverte todos os bits do númeroInverte todos os bits do número• 100101010 => 011010101100101010 => 011010101

– Complemento a 2Complemento a 2• Mantém todos os 0´s e o primeiro 1, depois Mantém todos os 0´s e o primeiro 1, depois

inverte todos os bits do númeroinverte todos os bits do número• 100101010 => 011010110100101010 => 011010110

Page 7: Representação de Dados Universidade Federal do Pará Faculdade de Computação Bacharelado em Ciência da Computação Fundamentos de Comunicação Digital

Representação de dadosRepresentação de dados

• Complemento a 1Complemento a 1– 10011101011001110101– 27-32 ?27-32 ?– 32-27 ?32-27 ?

• Complemento a 2Complemento a 2– 001101110001101110– 26-13 ?26-13 ?– 7-14 ?7-14 ?

Page 8: Representação de Dados Universidade Federal do Pará Faculdade de Computação Bacharelado em Ciência da Computação Fundamentos de Comunicação Digital

Representação de números Representação de números reaisreais• É impossível a representação de É impossível a representação de

números reais em computadores números reais em computadores binários digitais porque a binários digitais porque a representação binária é discreta.representação binária é discreta.

• Em qualquer linguagem de Em qualquer linguagem de programação utilizamos programação utilizamos representações que preveem algum representações que preveem algum grau de arredondamento.grau de arredondamento.

Page 9: Representação de Dados Universidade Federal do Pará Faculdade de Computação Bacharelado em Ciência da Computação Fundamentos de Comunicação Digital

Representação de números Representação de números reaisreais• Ponto FixoPonto Fixo

– Denotamos um número de ponto fixo Denotamos um número de ponto fixo quando especificamos o número de quando especificamos o número de casas para a parte inteira e fracionária casas para a parte inteira e fracionária (Notação Q.n).(Notação Q.n).

– 4 bits para parte inteira e 6 bits para 4 bits para parte inteira e 6 bits para parte fracionária: Notação Q.6parte fracionária: Notação Q.6• Qual precisão deste número?Qual precisão deste número?

Bit 9 Bit 8 Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0

1 1 0 1 1 1 0 0 1 0

23 22 21 20 2-1 2-2 2-3 2-4 2-5 2-6

Page 10: Representação de Dados Universidade Federal do Pará Faculdade de Computação Bacharelado em Ciência da Computação Fundamentos de Comunicação Digital

Representação de números Representação de números reaisreais• Soma em ponto FixoSoma em ponto Fixo

– A = 5,375 = 101,011 (Notação Q.3)A = 5,375 = 101,011 (Notação Q.3)– B = 1,875 = 1,1110 (Notação Q.4)B = 1,875 = 1,1110 (Notação Q.4)– Calcular A + BCalcular A + B

101,0110 (A com notação Q.4)101,0110 (A com notação Q.4)

+ 001,1110+ 001,1110 (B com notação Q.4) (B com notação Q.4)

111,0100111,0100

Page 11: Representação de Dados Universidade Federal do Pará Faculdade de Computação Bacharelado em Ciência da Computação Fundamentos de Comunicação Digital

Representação de números Representação de números reaisreais• Subtração em ponto FixoSubtração em ponto Fixo

– A = 3,125 = 011,00100A = 3,125 = 011,00100bb (Notação Q.5) (Notação Q.5)

– B = 0,5 = 0,10B = 0,5 = 0,10bb (Notação Q.2) (Notação Q.2)

– Calcular A – BCalcular A – B• Complemento a 2 de B = 111,10000Complemento a 2 de B = 111,10000

011,00100 (A com Q.5)011,00100 (A com Q.5)

++ 111,10000111,10000 (B com Q.5 e complemento a 2) (B com Q.5 e complemento a 2)

11 010,10100010,10100

Page 12: Representação de Dados Universidade Federal do Pará Faculdade de Computação Bacharelado em Ciência da Computação Fundamentos de Comunicação Digital

Representação de números Representação de números reaisreais• IEEE 754-2008IEEE 754-2008

– Padrão para aritmética de ponto Padrão para aritmética de ponto flutuanteflutuantePonto flutuantePonto flutuante

– Formato IEEE 754 precisão simplesFormato IEEE 754 precisão simples

• V = S . 2V = S . 2(expoent-127) (expoent-127) . M. M• V = (-1)V = (-1)signsign . 2 . 2(expoent-127)(expoent-127) . (1 + fraction) . (1 + fraction)

– Formato IEEE precisão duplaFormato IEEE precisão dupla• V = (-1)V = (-1)signsign . 2 . 2(expoent-1023)(expoent-1023) . (1 + fraction) . (1 + fraction)

Page 13: Representação de Dados Universidade Federal do Pará Faculdade de Computação Bacharelado em Ciência da Computação Fundamentos de Comunicação Digital

Representação de números Representação de números reaisreais• ExemploExemplo

– 1 10000001 1 10000001 011000000000000000000000110000000000000000000022

– V = ?V = ?

• VerificaçãoVerificação– http://babbage.cs.qc.edu/IEEE-754/Decimal.ht

ml

Page 14: Representação de Dados Universidade Federal do Pará Faculdade de Computação Bacharelado em Ciência da Computação Fundamentos de Comunicação Digital

Outros exemplosOutros exemplosType Sign Exp

Exp+Bias

Exponent

Significand (Mantissa) Value

Zero 0 -127 00000 0000

000 0000 0000 0000 0000 0000

0.0

Zero Negativo 1 -127 00000 0000

000 0000 0000 0000 0000 0000

−0.0

Um 0 0 1270111 1111

000 0000 0000 0000 0000 0000

1.0

Menos Um 1 0 1270111 1111

000 0000 0000 0000 0000 0000

−1.0

Menor denormalized number

* -127 00000 0000

000 0000 0000 0000 0000 0001

±2−23 × 2−126 = ±2−149 ≈ ±1.4 × 10−45

Médio denormalized number

* -127 00000 0000

100 0000 0000 0000 0000 0000

±2−1 × 2−126 = ±2−127 ≈ ±5.88 × 10−39

Maior denormalized number

* -127 00000 0000

111 1111 1111 1111 1111 1111

±(1−2−23) × 2−126 ≈ ±1.18 × 10−38

Menor normalized number

* -126 10000 0001

000 0000 0000 0000 0000 0000

±2−126 ≈ ±1.18 × 10−38

Maior normalized number

* 127 2541111 1110

111 1111 1111 1111 1111 1111

±(2−2−23) × 2127 ≈ ±3.4 × 1038

Ininito positivo 0 128 2551111 1111

000 0000 0000 0000 0000 0000

+∞

Infinito negativo 1 128 2551111 1111

000 0000 0000 0000 0000 0000

−∞

Not a number * 128 2551111 1111

non zero NaN* Sign bit can be either 0 or 1 .

Page 15: Representação de Dados Universidade Federal do Pará Faculdade de Computação Bacharelado em Ciência da Computação Fundamentos de Comunicação Digital

Ponto Fixo x Ponto Ponto Fixo x Ponto FlutuanteFlutuante• Ponto fixo possui um baixo custo de Ponto fixo possui um baixo custo de

implementação em circuitos lógicos.implementação em circuitos lógicos.• Ponto flutuante possui:Ponto flutuante possui:

– Maior precisãoMaior precisão– Circuitos mais complexos e maior Circuitos mais complexos e maior

dimensãodimensão– Maior custoMaior custo– Menor tempo de desenvolvimentoMenor tempo de desenvolvimento

Page 16: Representação de Dados Universidade Federal do Pará Faculdade de Computação Bacharelado em Ciência da Computação Fundamentos de Comunicação Digital

Representação de dadosRepresentação de dados

• Linguagem CLinguagem C– short: inteiros curtosshort: inteiros curtos– int: inteirosint: inteiros– long: inteiros longoslong: inteiros longos– float: ponto flutuante precisão simplesfloat: ponto flutuante precisão simples– double: ponto flutuante precisão dupladouble: ponto flutuante precisão dupla

• Cada tipo é representado por um Cada tipo é representado por um conjunto de bytesconjunto de bytes

Page 17: Representação de Dados Universidade Federal do Pará Faculdade de Computação Bacharelado em Ciência da Computação Fundamentos de Comunicação Digital

Representação de dadosRepresentação de dados

• Função sizeofFunção sizeof– É usado para verificar a quantidade de É usado para verificar a quantidade de

bytes que um tipo de dados ocupa no bytes que um tipo de dados ocupa no sistema operacionalsistema operacional

• ExemplosExemplos– printf(“%d”, sizeof( int ) );printf(“%d”, sizeof( int ) );

Page 18: Representação de Dados Universidade Federal do Pará Faculdade de Computação Bacharelado em Ciência da Computação Fundamentos de Comunicação Digital

Representação de dadosRepresentação de dadosprintf( "Número de bytes de short: %d\n", printf( "Número de bytes de short: %d\n",

sizeof( short ) );sizeof( short ) );printf( "Número de bytes de int: %d\n", sizeof( int ) );printf( "Número de bytes de int: %d\n", sizeof( int ) );printf( "Número de bytes de long: %d\n", printf( "Número de bytes de long: %d\n",

sizeof( long ) );sizeof( long ) );printf( "Número de bytes de float: %d\n", sizeof( float printf( "Número de bytes de float: %d\n", sizeof( float

) );) );printf( "Número de bytes de double: %d\n", printf( "Número de bytes de double: %d\n",

sizeof( double ) );sizeof( double ) );

• Numero de bytes de short: 2Numero de bytes de short: 2• Numero de bytes de int: 4Numero de bytes de int: 4• Numero de bytes de long: 4Numero de bytes de long: 4• Numero de bytes de float: 4Numero de bytes de float: 4• Numero de bytes de double: 8Numero de bytes de double: 8

Page 19: Representação de Dados Universidade Federal do Pará Faculdade de Computação Bacharelado em Ciência da Computação Fundamentos de Comunicação Digital

Representação de dadosRepresentação de dados

• Bytes de um tipo de dadoBytes de um tipo de dado• unionunion

– Representa uma mesma localização de dados Representa uma mesma localização de dados ocupada por duas variáveis com nomes ocupada por duas variáveis com nomes distintosdistintos

union tipo1union tipo1{{ char ch[2];char ch[2]; short temp;short temp;};};

Page 20: Representação de Dados Universidade Federal do Pará Faculdade de Computação Bacharelado em Ciência da Computação Fundamentos de Comunicação Digital

Representação de dadosRepresentação de dadosunion tipo1 SHORT;union tipo1 SHORT;

cout << "\n\nDigite um caracter: ";cout << "\n\nDigite um caracter: ";cin >> SHORT.ch[0];cin >> SHORT.ch[0];cout << "Digite outro caracter: ";cout << "Digite outro caracter: ";cin >> SHORT.ch[1];cin >> SHORT.ch[1];

cout << "O numero " << SHORT.temp << " eh cout << "O numero " << SHORT.temp << " eh representado pelosrepresentado pelos caracteres " << caracteres " << SHORT.ch[1] << " e " << SHORT.ch[0] << "\n";SHORT.ch[1] << " e " << SHORT.ch[0] << "\n";

Digite um caracter: aDigite um caracter: aDigite outro caracter: bDigite outro caracter: bO numero 25185 eh representado pelos caracteres O numero 25185 eh representado pelos caracteres bb e e aa

Page 21: Representação de Dados Universidade Federal do Pará Faculdade de Computação Bacharelado em Ciência da Computação Fundamentos de Comunicação Digital

Representação de dadosRepresentação de dadosunion tipo2union tipo2{{

char ch[8];char ch[8];double x;double x;

};};

union tipo2 real;union tipo2 real;

cout << "\n\nDigite um numero real: ";cout << "\n\nDigite um numero real: ";cin >> real.x;cin >> real.x;

cout << "Caracteres que representam " << real.x << ": ";cout << "Caracteres que representam " << real.x << ": ";for( int i=0; i<sizeof(double); i++ )for( int i=0; i<sizeof(double); i++ ){{

cout << real.ch[i] << " ";cout << real.ch[i] << " ";}}cout << "\n\n";cout << "\n\n";

Page 22: Representação de Dados Universidade Federal do Pará Faculdade de Computação Bacharelado em Ciência da Computação Fundamentos de Comunicação Digital

Ordenação de bytesOrdenação de bytes

• Palavra de 4 bytesPalavra de 4 bytes• Big EndianBig Endian

– Computadores Sun, MacComputadores Sun, Mac– Byte menos significativo com maior Byte menos significativo com maior

endereçoendereço

• Litlle EndianLitlle Endian– Computadores Alpha e PC´sComputadores Alpha e PC´s– Byte menos significativo no menor Byte menos significativo no menor

endereçoendereço

Page 23: Representação de Dados Universidade Federal do Pará Faculdade de Computação Bacharelado em Ciência da Computação Fundamentos de Comunicação Digital

Ordenação de bytesOrdenação de bytes

• ExemploExemplo– x = 0x01234567x = 0x01234567– x inicia no endereço 0x100x inicia no endereço 0x100

Page 24: Representação de Dados Universidade Federal do Pará Faculdade de Computação Bacharelado em Ciência da Computação Fundamentos de Comunicação Digital

Ordenação de bytesOrdenação de bytes

• Transparente para o programador C.Transparente para o programador C.• Importante para a transmissão de Importante para a transmissão de

dados entre máquinas big endian e dados entre máquinas big endian e litlle endian.litlle endian.

Page 25: Representação de Dados Universidade Federal do Pará Faculdade de Computação Bacharelado em Ciência da Computação Fundamentos de Comunicação Digital

Big ou Litlle Endian?Big ou Litlle Endian?

#include "stdafx.h"#include "stdafx.h"#include <stdio.h> #include <stdio.h> #include <stdlib.h>#include <stdlib.h>

typedef unsigned char *byte_ptr;typedef unsigned char *byte_ptr;

void mostra (byte_ptr inicio, int void mostra (byte_ptr inicio, int tam)tam)

{ { int i; int i; for (i=0;i<tam;i++) for (i=0;i<tam;i++)

printf("%.2x", printf("%.2x", inicio[i]); inicio[i]); printf("\n"); printf("\n");

} }

void mostra_int (int num)void mostra_int (int num){ {

mostra((byte_ptr) &num, mostra((byte_ptr) &num, sizeof(int)); sizeof(int));

}}

int _tmain(int argc, _TCHAR* int _tmain(int argc, _TCHAR* argv[])argv[])

{{int x=1;int x=1;mostra_int( x );mostra_int( x );

system("pause");system("pause");

return 0;return 0;}}

Page 26: Representação de Dados Universidade Federal do Pará Faculdade de Computação Bacharelado em Ciência da Computação Fundamentos de Comunicação Digital

Operações bit-a-bitOperações bit-a-bit

• ANDAND– &&

• OROR– ||

• NOTNOT– ~~

• XORXOR– ^̂

• Deslocamento para esquerdaDeslocamento para esquerda– <<<<

• Deslocamento para direitaDeslocamento para direita– >>>>

Page 27: Representação de Dados Universidade Federal do Pará Faculdade de Computação Bacharelado em Ciência da Computação Fundamentos de Comunicação Digital

Operações bit-a-bitOperações bit-a-bit

• ExemplosExemplos– x = x & 3;x = x & 3;– y = y | 255;y = y | 255;– z = ~127;z = ~127;– w = 32 ^ 64;w = 32 ^ 64;– a = 24 << 2;a = 24 << 2;– b = 24 >> 1;b = 24 >> 1;