A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Representação de Dados

Apresentações semelhantes


Apresentação em tema: "Representação de Dados"— Transcrição da apresentação:

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 1

2 Representação de Dados
Em um computador são armazenados e processados apenas dados e instruções. Um programa de computador é formado por uma seqüência de instruções que operam sobre um conjunto de dados (os dados são os operandos das instruções. Um computador executa operações sobre dados numéricos (os números) ou alfabéticos (letras e símbolos). 2

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

4 Representação de Dados
Tipos de dados numéricos ponto fixo (números inteiros) ponto flutuante (números reais ou fracionários) BCD (representação decimal codificada em binário) alfabéticos letras, números e símbolos (codificados em ASCII e EBCDIC) 4

5 Representação de Dados
Números inteiros bit 0 ==> sinal positivo bit 1 ==> sinal negativo. Essa representação tem o nome de representação em sinal e magnitude. Valor decimal Valor binário com 8 bits (7 + bit de sinal) +9 (bit inicial 0 significa positivo) -9 (bit inicial 1 significa negativo) +127 -127 5

6 Representação de dados
Números negativos Operações de subtração são efetuadas com operações de soma Complemento a 1 Inverte todos os bits do número => Complemento a 2 Mantém todos os 0´s e o primeiro 1, depois inverte todos os bits do número => 6

7 Representação de dados
Complemento a 1 27-32 ? 32-27 ? Complemento a 2 26-13 ? 7-14 ? 7

8 Representação de números reais
É impossível a representação de números reais em computadores binários digitais porque a representação binária é discreta. Em qualquer linguagem de programação utilizamos representações que preveem algum grau de arredondamento. 8

9 Representação de números reais
Ponto Fixo Denotamos um número de ponto fixo quando especificamos o número de casas para a parte inteira e fracionária (Notação Q.n). 4 bits para parte inteira e 6 bits para parte fracionária: Notação Q.6 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 23 22 21 20 2-1 2-2 2-3 2-4 2-5 2-6 9

10 Representação de números reais
Soma em ponto Fixo A = 5,375 = 101,011 (Notação Q.3) B = 1,875 = 1, (Notação Q.4) Calcular A + B 101,0110 (A com notação Q.4) + 001,1110 (B com notação Q.4) 111,0100 10

11 Representação de números reais
Subtração em ponto Fixo A = 3,125 = 011,00100b (Notação Q.5) B = 0,5 = 0,10b (Notação Q.2) Calcular A – B Complemento a 2 de B = 111,10000 011, (A com Q.5) + 111,10000 (B com Q.5 e complemento a 2) 1 010,10100 11

12 Representação de números reais
IEEE Padrão para aritmética de ponto flutuantePonto flutuante Formato IEEE 754 precisão simples V = S . 2(expoent-127) . M V = (-1)sign . 2(expoent-127) . (1 + fraction) Formato IEEE precisão dupla V = (-1)sign . 2(expoent-1023) . (1 + fraction) 12

13 Representação de números reais
Exemplo V = ? Verificação 13

14 Outros exemplos Type Sign Exp Exp+Bias Exponent Significand (Mantissa)
Value Zero -127 0.0 Zero Negativo 1 −0.0 Um 127 1.0 Menos Um −1.0 Menor denormalized number * ±2−23 × 2−126 = ±2−149 ≈ ±1.4 × 10−45 Médio denormalized number ±2−1 × 2−126 = ±2−127 ≈ ±5.88 × 10−39 Maior denormalized number ±(1−2−23) × 2−126 ≈ ±1.18 × 10−38 Menor normalized number -126 ±2−126 ≈ ±1.18 × 10−38 Maior normalized number 254 ±(2−2−23) × 2127 ≈ ±3.4 × 1038 Ininito positivo 128 255 +∞ Infinito negativo −∞ Not a number non zero NaN * Sign bit can be either 0 or 1 . 14

15 Ponto Fixo x Ponto Flutuante
Ponto fixo possui um baixo custo de implementação em circuitos lógicos. Ponto flutuante possui: Maior precisão Circuitos mais complexos e maior dimensão Maior custo Menor tempo de desenvolvimento 15

16 Representação de dados
Linguagem C short: inteiros curtos int: inteiros long: inteiros longos float: ponto flutuante precisão simples double: ponto flutuante precisão dupla Cada tipo é representado por um conjunto de bytes 16

17 Representação de dados
Função sizeof É usado para verificar a quantidade de bytes que um tipo de dados ocupa no sistema operacional Exemplos printf(“%d”, sizeof( int ) ); 17

18 Representação de dados
printf( "Número de bytes de short: %d\n", sizeof( short ) ); printf( "Número de bytes de int: %d\n", sizeof( int ) ); printf( "Número de bytes de long: %d\n", sizeof( long ) ); printf( "Número de bytes de float: %d\n", sizeof( float ) ); printf( "Número de bytes de double: %d\n", sizeof( double ) ); Numero de bytes de short: 2 Numero de bytes de int: 4 Numero de bytes de long: 4 Numero de bytes de float: 4 Numero de bytes de double: 8 18

19 Representação de dados
Bytes de um tipo de dado union Representa uma mesma localização de dados ocupada por duas variáveis com nomes distintos union tipo1 { char ch[2]; short temp; }; 19

20 Representação de dados
union tipo1 SHORT; cout << "\n\nDigite um caracter: "; cin >> SHORT.ch[0]; cout << "Digite outro caracter: "; cin >> SHORT.ch[1]; cout << "O numero " << SHORT.temp << " eh representado pelos caracteres " << SHORT.ch[1] << " e " << SHORT.ch[0] << "\n"; Digite um caracter: a Digite outro caracter: b O numero eh representado pelos caracteres b e a 20

21 Representação de dados
union tipo2 { char ch[8]; double x; }; union tipo2 real; cout << "\n\nDigite um numero real: "; cin >> real.x; cout << "Caracteres que representam " << real.x << ": "; for( int i=0; i<sizeof(double); i++ ) cout << real.ch[i] << " "; } cout << "\n\n"; 21

22 Ordenação de bytes Palavra de 4 bytes Big Endian Litlle Endian
Computadores Sun, Mac Byte menos significativo com maior endereço Litlle Endian Computadores Alpha e PC´s Byte menos significativo no menor endereço 22

23 Ordenação de bytes Exemplo x = 0x01234567 x inicia no endereço 0x100

24 Ordenação de bytes Transparente para o programador C.
Importante para a transmissão de dados entre máquinas big endian e litlle endian. 24

25 Big ou Litlle Endian? #include "stdafx.h" #include <stdio.h>
#include <stdlib.h> typedef unsigned char *byte_ptr; void mostra (byte_ptr inicio, int tam) { int i; for (i=0;i<tam;i++) printf("%.2x", inicio[i]); printf("\n"); } void mostra_int (int num) { mostra((byte_ptr) &num, sizeof(int)); } int _tmain(int argc, _TCHAR* argv[]) int x=1; mostra_int( x ); system("pause"); return 0; 25

26 Operações bit-a-bit AND & OR | NOT ~ XOR ^ Deslocamento para esquerda
<< Deslocamento para direita >> 26

27 Operações bit-a-bit Exemplos x = x & 3; y = y | 255; z = ~127;
w = 32 ^ 64; a = 24 << 2; b = 24 >> 1; 27


Carregar ppt "Representação de Dados"

Apresentações semelhantes


Anúncios Google