Representação de Dados

Slides:



Advertisements
Apresentações semelhantes
Contadores e Registradores
Advertisements

Parte 1: Organização de Computadores
Organização de Computadores I
Representação de Ponto Flutuante
Sistemas de Numeração.
Representação de Números
Arquitetura de Computadores
Aritmética Computacional
Versão – Prof.: Mauro César Lopes
Arquitetura de Computadores
INTRODUÇÃO À LÓGICA DIGITAL
Sistemas de Numeração.
Representação de números
VISÃO GERAL Profa. Fernanda Denardin Walker
Representação de Dados e Sistemas de Numeração Aula 4
Eletrônica Digital Operações Aritméticas Binárias
William Stallings Arquitetura e Organização de Computadores 8a Edição
Algoritmos e Programação Linguagens de Programação Teoria Aula 5 (05/05) Universidade Federal do Vale do São.
MC542 Organização de Computadores Teoria e Prática
ORGANIZAÇÃO BÁSICA DE COMPUTADORES E LINGUAGEM DE MONTAGEM
MC542 Organização de Computadores Teoria e Prática
LINGUAGEM C.
Introdução à Informática
Arquitetura de Computadores I
Universidade do Estado de Santa Catarina – CCT/UDESC
Versão – Prof.: Mauro César Lopes
Versão – Prof.: Mauro César Lopes
Unidades de Armazenamento
Ling. C - Variáveis Uma variável não é mais do que o nome que nós damos a uma determinada posição de memória para conter um valor de um determinado tipo.
As aulas não cobrem toda a matéria! Há que ler as folhas teóricas!
Sistemas de Numeração Sistemas Numéricos de Interesse
Sistemas Numéricos Sistemas Numéricos de Interesse
INTRODUÇÃO À ENGENHARIA
Introdução a Computação e Cálculo Numérico
Arrays em Java Revisão Assuntos Aulas Anteriores
PROGRAMAÇÃO I UNIDADE 1.
Circuitos combinatórios típicos: circuitos aritméticos
Conceitos de Lógica Digital
Operações Aritméticas em Binário
ORGANIZAÇÃO E ARQUITETURA DE COMPUTADORES I prof. Dr. César Augusto M. Marcon prof. Dr. Edson Ifarraguirre Moreno Qualificadores.
Sistemas de Numeração.
Introdução a Linguagem de Programação C
Representação Digital da Informação
Seminário 1: Revisão de C
PROGRAMAÇÃO I UNIDADE 2.
ICC – 4.2. Aritmética Binária
Tipos de Dados Paradigmas de Programação
Numeração.
Tópicos em Arquitetura de Computadores João Angelo Martini Universidade Estadual de Maringá Departamento de Informática Mestrado em Ciência.
Campus de Caraguatatuba Aula 8: Noções Básicas sobre Erros (2)
Representação de dados
Aritmética Computacional Operações Complexas
Sistemas de Numeração.
Representação de Números Inteiros
Introdução a Sistemas de Informação
Subtrator e Somador BCD
Campus de Caraguatatuba Aula 9: Noções Básicas sobre Erros (3)
Tipos de dados inteiro caracter real logico
REPRESENTAÇÃO BINÁRIA E CONVERSÃO
FUNDAMENTOS DE COMPUTAÇÃO
Codificação de Sinais Universidade Federal do Pará
Universidade Federal de Uberlândia
Algoritmos e Programação MC102 Prof. Paulo Miranda IC-UNICAMP Aula 2 Variáveis e Atribuições.
Métodos Numéricos Computacionais
ORGANIZAÇÃO DE COMPUTADORES
Tipos de Dados Todo o trabalho realizado por um computador é baseado na manipulação das informações contidas em sua memória. Estas informações podem.
SISTEMAS DE NUMERAÇÃO 1. SISTEMAS DE NUMERAÇÃO 2. ARITMÉTICA BINÁRIA
Profa. Maria Augusta Constante Puget
Codificação Daniel Vieira.
Introdução à Computação
Transcrição da apresentação:

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

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

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

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

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 00001001 (bit inicial 0 significa positivo) -9 10001001 (bit inicial 1 significa negativo) +127 01111111 -127 11111111 5

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 100101010 => 011010101 Complemento a 2 Mantém todos os 0´s e o primeiro 1, depois inverte todos os bits do número 100101010 => 011010110 6

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

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

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

Representação de números reais Soma em ponto Fixo A = 5,375 = 101,011 (Notação Q.3) B = 1,875 = 1,1110 (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

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,00100 (A com Q.5) + 111,10000 (B com Q.5 e complemento a 2) 1 010,10100 11

Representação de números reais IEEE 754-2008 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

Representação de números reais Exemplo 1 10000001 011000000000000000000002 V = ? Verificação http://babbage.cs.qc.edu/IEEE-754/Decimal.html 13

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

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

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

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

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

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

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 25185 eh representado pelos caracteres b e a 20

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

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

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

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

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

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

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