Representação de Dados Inteiros com sinal



Documentos relacionados
Representação de Dados (inteiros com sinal)

Representação de Inteiros

Aritmética Binária e. Bernardo Nunes Gonçalves

Operações aritméticas

CAPÍTULO 6 ARITMÉTICA DIGITAL

Arquitetura de Computadores

ORGANIZAÇÃO BÁSICA DE COMPUTADORES E LINGUAGEM DE MONTAGEM. Conceitos Básicos ORGANIZAÇÃO BÁSICA DE COMPUTADORES E LINGUAGEM DE MONTAGEM

Aula 6 Aritmética Computacional

Codificação 1. Introdução. C 2 R r {! + codificação

Representação de Dados

Exemplo de Subtração Binária

Eletrônica Digital 1 Módulo1 Capítulo 1 Sistemas Numéricos. Prof. Nilton Costa Junior

Organização e Arquitetura de Computadores. Aula 10 Ponto Flutuante Parte I Juliana F. Camapum Wanderley

Sistema de Numeração e Conversão entre Sistemas. Prof. Rômulo Calado Pantaleão Camara. Carga Horária: 60h

Trabalho compilado da Internet Prof. Claudio Passos. Sistemas Numéricos

Introdução. A Informação e sua Representação (Parte III) Universidade Federal de Campina Grande Departamento de Sistemas e Computação

Sistemas de Numeração

Organização e Arquitetura de Computadores I

Sistemas de numeração

3 Sistemas de Numeração:

Representação de Dados

Escola Secundária c/3º CEB José Macedo Fragateiro. Curso Profissional de Nível Secundário. Componente Técnica. Disciplina de

Representação de Dados (inteiros não negativos)

Circuitos Digitais Cap. 5

Álgebra de Boole. Sistema de Numeração e Códigos. Prof. Ubiratan Ramos

Introdução. Introdução. Introdução. Organização Estruturada de Computadores. Introdução. Máquinas Multiníveis

2. Sistemas de Numeração, Operações e Códigos. 2. Sistemas de Numeração, Operações e Códigos 1. Números Decimais. Objetivos.

Sistemas de Computação. Representação de Inteiros

ARQUITETURA DE COMPUTADORES. Sistemas de Numeração. 1 Arquitetura de Computadores

Capítulo 3 Aula 8. Representação Numérica. Aritmética Computacional Representação Numérica

ULA- Unidade Lógica Aritmética. Prof. Rômulo Calado Pantaleão Camara. Carga Horária: 60h

Conversão de Bases e Aritmética Binária

PRONATEC FUNDAMENTOS DE HARDWARE. Prof. Kilmer Pereira

Em um sistema de numeração de base b qualquer, um número positivo é representado pelo polinômio:

PC Fundamentos Revisão 4

Lógica Combinacional Aula 01 Sistema de Numeração. Felipe S. L. G. Duarte

Capítulo 1. Introdução. 1.1 Sistemas numéricos

2. Representação Numérica

Sistemas de Numeração

Principais códigos utilizados. Codificação. Código binário puro. Codificação binária. Codificação Binária. Código Binário puro e suas variantes

Aritmética de Ponto Flutuante e Noções de Erro. Ana Paula

Componentes da linguagem C++

Números base 2, 8, 10, 16. Sistemas da Computação Prof. Rossano Pablo Pinto, Msc. rossano at gmail com 2 semestre 2007

ARQUITETURA DE COMPUTADORES

Hardware de Computadores

A declaração de uma variável vel define o seu tipo. O tipo do dado define como ele será: Armazenado na memória. Manipulado pela ULA.

SISTEMAS DIGITAIS CIRCUITOS COMBINATÓRIOS TÍPICOS

Introdução. A Informação e sua Representação (Parte II) Universidade Federal de Campina Grande. Unidade Acadêmica de Sistemas e Computação

Introdução à Lógica de Programação

ARQUITETURA DE COMPUTADORES

Cálculo Numérico Aula 1: Computação numérica. Tipos de Erros. Aritmética de ponto flutuante

Programação ao nível da máquina. Operações lógicas e aritméticas

REPRESENTAÇÃO DE DADOS E SISTEMAS DE NUMERAÇÃO

REPRESENTAÇÃO DE DADOS EM SISTEMAS DE COMPUTAÇÃO AULA 03 Arquitetura de Computadores Gil Eduardo de Andrade

Deste modo, por razões tecnológicas e conceituais, os números binários e a álgebra boole-ana formam a base de operação dos computadores atuais.

Unidade 5: Sistemas de Representação

Sistemas Numéricos e a Representação Interna dos Dados no Computador

Lista de Exercícios Sistemas de Numeração

Aritmética e Álgebra COM10615-Tópicos Especiais em Programação I edmar.kampke@ufes.br

Disciplina: : ELETRÔNICA DIGITAL

Introdução à Engenharia de

Representação Binária de Números

Representação de Dados e Sistemas de Numeração

Organização de Computadores. Cálculos Binários e Conversão entre Bases Aritmética Binária

LÓGICA DE PROGRAMAÇÃO PARA ENGENHARIA INTRODUÇÃO À ORGANIZAÇÃO DE COMPUTADORES

SISTEMAS DE NUMERAÇÃO

Sistemas de Numerações.

Sistemas de Numeração. Engenharia da Computação 3 Período Alex Vidigal Bastos

SISTEMAS DIGITAIS Prof. Ricardo Rodrigues Barcelar

Aula 9. Introdução à Computação. ADS IFBA

Sistemas de Numeração. Bases Numéricas e Conversão entre bases

Introdução à Informática Aulas 9 e 10

Fabio Bento

Ano letivo: 2012/2013. Sistemas de numeração. Pág.: 1/11. Escola profissional de Fafe SDAC. Trabalho elaborado por: Ana Isabel, nº905 TURMA 7.

Figura 1 - Diagrama de um sistema de controle de temperatura que requer conversão analógico-digital para permitir o uso de técnicas de processamento

Capítulo 2: Introdução à Linguagem C

5º Experimento: Somador Binário de números com sinal

A TI-89 / TI-92 Plus permite também comparar ou manipular números binários bit a bit.

ULA Sinais de Controle enviados pela UC

MC102 Algoritmos e Programação de Computadores 1ª Aula Introdução à Programação de Computadores

Componentes do Computador e. aula 3. Profa. Débora Matos

A lógica de programação ajuda a facilitar o desenvolvimento dos futuros programas que você desenvolverá.

Sistemas numéricos. Prof. Leandro Tonietto Introdução a computação e suas aplicações Curso de Segurança da Informação UNISINOS ago-09

Organização e Arquitetura de Computadores I

Aritmética de Ponto Fixo

Conversores D/A e A/D

2. OPERADORES ALGORITMOS, FLUXOGRAMAS E PROGRAMAS FUNÇÕES... 10

Pontifícia Universidade Católica do Rio Grande do Sul Faculdade de Engenharia Disciplina de Lógica Computacional Aplicada. Prof. Dr.

Sistemas de Numeração. Introdução ao Computador 2010/1 Renan Manola

Programação Básica em Arduino Aula 2

Computadores de Programação (MAB353)

Prof. Luís Caldas Sistemas de Numeração e Transformação de Base NUMERAÇÃO, BASE NUMÉRICA E TRANSFORMAÇÃO DE UMA BASE

Sistemas de Numeração

Introdução à Programação

Transcrição:

Representação de Dados Inteiros com sinal 1

Representação de Inteiros Com n bits, podemos ter 2 n valores distintos Considerando só inteiros não-negativos (unsigned) a faixa de valores é [0, 2 n -1] Considerando inteiros quaisquer (i <0, i >=0), em n bits também teremos apenas 2 n possíveis valores 0, valores negativos e valores positivos Como representar esses valores? Há diferentes formas de representação 2

Sinal e Magnitude A idéia é usar o bit mais significativo como sinal 1 valor negativo Com 4 bits (1 + 3) sinal + 8 valores possíveis (0..7) 0000... 0111 0 a 7 decimal 1001... 1111-1 a -7 decimal 1000 zero negativo? 3

Complemento a 2 Representação mais usual para inteiros com sinal O bit mais significativo também distingue valores negativos e não negativos X n-1 X n-2,...x 3 X 2 X 1 X 0 0 valor não negativo 1 valor negativo Representação baseada em aritmética módulo 2 n 4

Motivação Complemento a 2 Com n bits precisamos representar alguns números não negativos e alguns números positivos continuamos tendo 2 n padrões diferentes alguns desses padrões para representam negativos quais padrões? x < 0 representado por y = x módulo 2 n Representação baseada em aritmética módulo 2 n x Ξ y (mod k) se x-y = m*k para algum m Exemplos: 5 Ξ -3 modulo 8 5 (-3) = 1 x 8 5 Ξ -11 modulo 8 5 (-11) = 2 x 8 255 Ξ -1 modulo 256 255 (-1) = 1 x 256 5

Equivalência mod 2 n A relação de equivalência mod 2 n define uma partição dos inteiros em classes de equivalência exemplo com n=3 {..., -16, -8, 0, 8, 16,...} {..., -15, -7, 1, 9, 17,...} {..., -14, -6, 2, 10, 18,...} {..., -13, -5, 3, 11, 19,...} {..., -12, -4, 4, 12, 20,...} {..., -11, -3, 5, 13, 21,...} {..., -10, -2, 6, 14, 22,...} {..., -9, -1, 7, 15, 23,...} 000 001 010 011 100 101 110 111 Em complemento a 2, cada padrão representa um número de sua classe de equivalência 0 alguns números > 0 alguns números < 0 6

Intervalo de Valores Com n bits: X n-1 X n-2...x 3 X 2 X 1 X 0 o menor valor representado é 2 n-1 (1 bit setado) o maior valor representado é 2 n-1 1 (n-1 bits setados) uma única representação para 0! Intervalo de valores: [-2 n-1, 2 n-1-1] com 8 bits: [-2 7, 2 7-1] [-128, 127] com 16 bits: [-2 15, 2 15-1] [-32768, 32767] intervalo é assimétrico! ½ para os negativos ½ para positivos + 0 uma vantagem da escolha de mais um valor negativo é que o bit mais significativo indica o sinal do número! 7

Faixa de Valores com e sem sinal Sem sinal : UMin = 0 00 00 UMax = 2 n 1 11 11 Complemento a 2 : TMin = 2 n-1 100 0 TMax = 2 n-1 1 011 1 Exemplos para n = 16 Decimal Hex Binary UMax 65535 FF FF 11111111 11111111 TMax 32767 7F FF 01111111 11111111 TMin -32768 80 00 10000000 00000000-1 -1 FF FF 11111111 11111111 0 0 00 00 00000000 00000000 8

Representação complemento a 2 Idéia central: é uma representação mod 2 n Se x>= 0 rep 2 (x) = x Se x<0 então rep 2 (x) = 2 n + x menor positivo na classe de equivalência de x binário Compl-2 binário Compl-2 0000 0 1111-1 0001 1 1110-2 0010 2 1101-3..... 1001-7 0111 7 1000-8 Exemplos para n = 4: rep 2 (-2) = 2 4 + (-2) = 14 = [1110] rep 2 (-8) = 2 4 + (-8) = 8 = [1000] rep 2 (-1) = 2 4 + (-1) = 15 = [1111] É um mecanismo trabalhoso se o número de bits é muito grande... 9

Representação binária de um inteiro negativo Se x<0 então rep 2 (x) = 2 n + x 5 2 n + x = (2 n -1) (-x) + 1 5 Complemento bit-a-bit de (-x) 1111 1111-0000 0101 1 1 = 0 1 0 = 1 1111 1010 10

Uma outra forma... Para encontrar a representação de (-x) 1. inverter "x bit a bit 2. somar 1-5 5 0000 0101 1111 1010 + 1 1111 1011 para achar a representação em comp2 para achar o valor de uma representação 1111 1011 0000 0100 + 1 0000 0101 5-5 11

Soma e Subtração Uma vantagem da representação complemento a 2 é que somas e subtrações usam o algoritmo de adição subtração = soma do complemento! o algoritmo para achar o complemento é trivial A aritmética módulo 2 n garante que o resultado da soma é correto mesmo com sinais diferentes (a menos de overflow) Exemplo para n=3 (1-2) (mod 8) = (1+(-2)) mod 8) = (1 mod 8) + (-2 mod 8) = 1 + 6 = 7 = rep[-1 mod 8] [001] - [010] = [001] + [110] = [111] 12

Soma complemento a 2 (exemplos para 4 bits) 2 + 3 = 0010 + 0011= 0101 = 5 7 1 = 7 + (-1) = 0111 + 1111 = 0110 = 6 (-3) + 6 = 1101 + 0110 = 0011 = 3 (-1) + (-1) = 1111 + 1111 = 1110 = (-2) 13

Faixa de Valores em C W 8 16 32 64 UMax 255 65,535 4,294,967,295 18,446,744,073,709,551,615 TMax 127 32,767 2,147,483,647 9,223,372,036,854,775,807 TMin -128-32,768-2,147,483,648-9,223,372,036,854,775,808 O padrão de C não requer representação em complemento a 2, mas a maioria das máquinas o faz Não é boa prática assumir qual a faixa de valores <limits.h> define constantes para os tipos de dados inteiros INT_MAX, INT_MIN, UINT_MAX SHRT_MIN, SHRT_MAX, USHRT_MAX UCHAR_MAX, SCHAR_MIN, SCHAR_MAX 14

Signed e Unsigned em C Na conversão entre tipos signed/unsigned de mesmo tamanho, o padrão de bits não é afetado: apenas a interpretação desse padrão muda int x = -1; /* na memória: 1111...1111 */ unsigned u = (unsigned) x; /* na memória: 1111...1111 */ short int x = -12345; /* 1100 1111 1100 0111 */ /* como unsigned = 53191 */ unsigned short ux = (unsigned short) x; /* 53191 */ x = (short int) ux; /* -12345 */ Compilador usa as instruções adequadas conforme o tipo da variável 15

Operadores relacionais Operadores de comparação (<, <=, >, etc.) levam em conta se operandos são unsigned ou signed. Existem instruções de máquina para cada caso o compilador C gera o código com as instruções corretas, dependendo do tipo dos operandos Mas em expressões que envolvem o tipo inteiro (int) signed e unsigned, os valores são tratados como unsigned! Exemplo: int a[2] = {-1, 0}; if (a[0] < a[1]) true unsigned int z=0; if (a[0] < z) false!!!!! 16

Extensão de Representação Ocorre quando aumentamos o número de bits usados na representação conversão que altera o tamanho: char para short/int, short para int Como converter um número em w bits para w+k bits mantendo o mesmo valor? unsigned : adicionar zeros à esquerda (zero extension) signed: k cópias do bit de sinal (sign extension) ` X w X k w 17

Extensão de Representação Exemplo: extensão de 8 para 16 bits rep 2 (-3) em 8 bits = 2 8 + (-3) = 253 = 1111 1101 rep 2 (-3) em 16 bits = 2 16 + (-3) = 65533 = 1111 1111 1111 1101 2 8 + (-3) + x = 2 16 + (-3) x = 2 16 + (-3) - 2 8 - (-3) 1 0000 0000 0000 0000-1 0000 0000 1111 1111 0000 0000 18

Truncamento de Inteiros Ocorre quando reduzimos o número de bits usados na representação int para short/char, short para char Quando truncamos um inteiro simplesmente removemos os bits mais significativos, o que pode alterar o valor do inteiro! Quando x é unsigned, (short) x = x mod 16 Quando x é signed (Compl-2), os bits menos significativos são simplesmente interpretados como um valor em complemento a dois (o que pode alterar o sinal!) Exemplo (truncamento 8 bits para 4 bits): [00011001] = 25 [1001] = -7 19

Overflow em Comp-2 Quando o resultado (x+y) não é representável em n bits Operandos: w bits Soma real: w+1 bits Descarta bit w+1 u + v u + v TAdd w (u, v) hardware indica situações de overflow signed unsigned mas em geral essa indicação é ignorada... compilador C não gera testes 20