professora: tatiana renata garcia com adaptações do professor benjamin grando moreira introdução...

36
Professora: Tatiana Renata Garcia com adaptações do professor Benjamin Grando Moreira Introdução à Programação de Computadores Sistemas de Numeração

Upload: internet

Post on 16-Apr-2015

108 views

Category:

Documents


3 download

TRANSCRIPT

Page 1: Professora: Tatiana Renata Garcia com adaptações do professor Benjamin Grando Moreira Introdução à Programação de Computadores Sistemas de Numeração

Professora: Tatiana Renata Garcia com adaptações do professor Benjamin Grando Moreira

Introdução à Programação de Computadores

Sistemas de Numeração

Page 2: Professora: Tatiana Renata Garcia com adaptações do professor Benjamin Grando Moreira Introdução à Programação de Computadores Sistemas de Numeração

Professora: Tatiana Renata Garcia com adaptações do professor Benjamin Grando Moreira

Introdução à Programação de Computadores

Objetivos da aula:

- Motivação

- Apresentar os sistemas de numeração

- Conversão de base

- Representação dos números utilizados pelos computadores

- Aritmética binária

Page 3: Professora: Tatiana Renata Garcia com adaptações do professor Benjamin Grando Moreira Introdução à Programação de Computadores Sistemas de Numeração

Professora: Tatiana Renata Garcia com adaptações do professor Benjamin Grando Moreira

Introdução à Programação de Computadores

Armazenamento de dados na memória:

- A memória é a parte do computador onde programas e dados são armazenados

- A unidade básica de memória é o dígito binário => BIT

- Um bit pode conter um 0 ou um 1

- A informação digital pode ser armazenada através da distinção entre valores diferentes de alguma grandeza física contínua, tal como corrente ou tensão

- Quanto mais valores devem ser distinguidos, menor é a separação entre valores adjacentes e menor é a confiabilidade da memória => melhor opção é o sistema binário

Page 4: Professora: Tatiana Renata Garcia com adaptações do professor Benjamin Grando Moreira Introdução à Programação de Computadores Sistemas de Numeração

Professora: Tatiana Renata Garcia com adaptações do professor Benjamin Grando Moreira

Introdução à Programação de Computadores

Números de precisão finita:

- Quando realizamos operações aritméticas no papel não precisamos nos preocupar com a quantidade de dígitos ou casas decimais que vamos utilizar para representar os dados => nunca acontece do papel não ser suficientemente grande para armazenar o número

- Com computadores a situação é diferente

- A natureza finita do computador nos força a lidar apenas com números que podem ser representados com um número fixo de dígitos => números de precisão finita

Page 5: Professora: Tatiana Renata Garcia com adaptações do professor Benjamin Grando Moreira Introdução à Programação de Computadores Sistemas de Numeração

Professora: Tatiana Renata Garcia com adaptações do professor Benjamin Grando Moreira

Introdução à Programação de Computadores

Números de precisão finita:

- O conjunto dos inteiros positivos representáveis por 3 dígitos decimais, sem ponto decimal e sem sinal tem 1000 elementos: 000, 001, 002,...., 999 - Com esta restrição é impossível expressar vários conjuntos importantes de números: números negativos, frações, números complexos, números maiores que 999

- Números de precisão finita não são fechados em relação à nenhuma das quatro operações aritméticas básicas

- Mesmo que i e j sejam números do conjunto entre 000 e 999 não é possível garantir que i+j, i-j, i*j e i/j serão números do conjunto entre 000 e 999

Page 6: Professora: Tatiana Renata Garcia com adaptações do professor Benjamin Grando Moreira Introdução à Programação de Computadores Sistemas de Numeração

Professora: Tatiana Renata Garcia com adaptações do professor Benjamin Grando Moreira

Introdução à Programação de Computadores

Números de precisão finita:

- Exemplo:- 600 + 600 = 1200 (maior que 999)- 003 – 005 = -002 (menor que 000)- 050 * 050 = 2500 (maior que 999)- 007 / 002 = 3.5 (não é inteiro)

- Erros onde os números são maiores que o maior número do conjunto => erro de overflow- Erros onde os números são menores que o menor número do conjunto => erro de underflow

- Estes erros também acontecem nas operações realizadas pelo computador que utiliza o sistema binário

Page 7: Professora: Tatiana Renata Garcia com adaptações do professor Benjamin Grando Moreira Introdução à Programação de Computadores Sistemas de Numeração

Professora: Tatiana Renata Garcia com adaptações do professor Benjamin Grando Moreira

Introdução à Programação de Computadores

Objetivos da aula:

- Motivação

- Apresentar os sistemas de numeração

- Conversão de base

- Representação dos números utilizados pelos computadores

Page 8: Professora: Tatiana Renata Garcia com adaptações do professor Benjamin Grando Moreira Introdução à Programação de Computadores Sistemas de Numeração

Professora: Tatiana Renata Garcia com adaptações do professor Benjamin Grando Moreira

Introdução à Programação de Computadores

Sistemas de numeração:

- Um sistema de numeração na base k requer k símbolos diferentes para representar os dígitos de 0 até k-1

- Sistema decimal => 10 dígitos diferentes => base 10

- 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 - Sistema octal => 8 dígitos diferentes => base 8

- 0, 1, 2, 3, 4, 5, 6, 7- Sistema binário => 2 dígitos diferentes => base 2

- 0, 1-Sistema hexadecimal => 16 dígitos diferentes => base 16

- 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F- A = 10, B = 11, C = 12, D = 13, E = 14, F = 15

Page 9: Professora: Tatiana Renata Garcia com adaptações do professor Benjamin Grando Moreira Introdução à Programação de Computadores Sistemas de Numeração

Professora: Tatiana Renata Garcia com adaptações do professor Benjamin Grando Moreira

Introdução à Programação de Computadores

Sistemas de numeração:

- É possível afirmar que número 7B9 está na base hexadecimal pois aparece o dígito B que não é possível nas outras bases apresentadas

- Mas e o número 111?

- O número pode estar em qualquer base, e para evitar ambigüidades utiliza-se um subscrito indicando a base

- 1112, 1118, 11116, 11110

Page 10: Professora: Tatiana Renata Garcia com adaptações do professor Benjamin Grando Moreira Introdução à Programação de Computadores Sistemas de Numeração

Professora: Tatiana Renata Garcia com adaptações do professor Benjamin Grando Moreira

Introdução à Programação de Computadores

Objetivos da aula:

- Motivação

- Apresentar os sistemas de numeração

- Conversão de base

- Representação dos números utilizados pelos computadores

Page 11: Professora: Tatiana Renata Garcia com adaptações do professor Benjamin Grando Moreira Introdução à Programação de Computadores Sistemas de Numeração

Professora: Tatiana Renata Garcia com adaptações do professor Benjamin Grando Moreira

Introdução à Programação de Computadores

Conversão de base:

Decimal para binário

- A conversão do sistema Decimal para o binário é realizada por sucessivas divisões por 2, ou seja, o número em decimal é dividido sucessivamente por 2 até que o quociente seja igual a 0

- O resto da última divisão representa o dígito mais à esquerda do número binário, o resto da próxima divisão o próximo dígito, e assim por diante

Page 12: Professora: Tatiana Renata Garcia com adaptações do professor Benjamin Grando Moreira Introdução à Programação de Computadores Sistemas de Numeração

Professora: Tatiana Renata Garcia com adaptações do professor Benjamin Grando Moreira

Introdução à Programação de Computadores

Conversão de base:

Decimal para binário

13 2 1 6 2 0 3 2 1 1 2 1 0 => 1310 = 11012

Page 13: Professora: Tatiana Renata Garcia com adaptações do professor Benjamin Grando Moreira Introdução à Programação de Computadores Sistemas de Numeração

Professora: Tatiana Renata Garcia com adaptações do professor Benjamin Grando Moreira

Introdução à Programação de ComputadoresConversão de base:

Decimal para binário

1492 2 0 746 2 0 373 2

1 186 2 0 93 2 1 46 2 0 23 2 1 11 2 1 5 2 1 2 2 0 1 2 149210 = 101110101002 1 0

Page 14: Professora: Tatiana Renata Garcia com adaptações do professor Benjamin Grando Moreira Introdução à Programação de Computadores Sistemas de Numeração

Professora: Tatiana Renata Garcia com adaptações do professor Benjamin Grando Moreira

Introdução à Programação de Computadores

Conversão de base:

Binário para decimal

- A conversão do sistema binário para o decimal é realizado através da forma polinomial:

Aj-1 * 2j-1 + Aj-2 * 2j-2 + ... + A2 * 22 + A1 * 21 + A0 * 20

Onde A = 0 ou 1 e j é o número de dígitos do número - Exemplo:

101102 = 1*24 + 0*23 + 1*22 + 1*21 + 0*20 = 16+4+2 = 2210

Page 15: Professora: Tatiana Renata Garcia com adaptações do professor Benjamin Grando Moreira Introdução à Programação de Computadores Sistemas de Numeração

Professora: Tatiana Renata Garcia com adaptações do professor Benjamin Grando Moreira

Introdução à Programação de Computadores

Conversão de base:

Número em Decimal: 20012x103 + 0x102 + 0x101 + 1x100

Octal: 37213x83 + 7x82 + 2x81 + 1x80 = 200110

Binário: 111110100011x210 + 1x29 + 1x28 + 1x27 + 1x26 + 0x25 + 1x24 + 0x23+ 0x22 + 0x21 + 1x20 = 200110

Hexadecimal: 7D17x162 + 13x161 + 1x160 = 200110

Page 16: Professora: Tatiana Renata Garcia com adaptações do professor Benjamin Grando Moreira Introdução à Programação de Computadores Sistemas de Numeração

Professora: Tatiana Renata Garcia com adaptações do professor Benjamin Grando Moreira

Introdução à Programação de Computadores

Conversão de base:

Binário – Octal – Hexadecimal

- Como os números representados em base 2 são muito extensos (dificultando a manipulação visual) costuma-se representar os valores binários em bases de valor mais elevado octal ou hexadecimal

- Isso permite maior compactação de algarismos e melhor visualização dos valores

Page 17: Professora: Tatiana Renata Garcia com adaptações do professor Benjamin Grando Moreira Introdução à Programação de Computadores Sistemas de Numeração

Professora: Tatiana Renata Garcia com adaptações do professor Benjamin Grando Moreira

Introdução à Programação de Computadores

Conversão de base:

Binário para octal

- Para converter um número binário para octal divide-se o número em grupos de 3 bits (começando da direita para esquerda) e converte-se para decimal

1 1 1 0 1 0 0 1

3 5 1

111010012 = 3518

- Pode se necessário adicionar um ou dois zeros à esquerda para completar um grupo de 3 dígitos => 011 101 0012

Page 18: Professora: Tatiana Renata Garcia com adaptações do professor Benjamin Grando Moreira Introdução à Programação de Computadores Sistemas de Numeração

Professora: Tatiana Renata Garcia com adaptações do professor Benjamin Grando Moreira

Introdução à Programação de Computadores

Conversão de base:

Binário para octal

Maior número representado em 3 bits = 7

Binário Octal

000 0

001 1

010 2

011 3

100 4

101 5

110 6

111 7

Page 19: Professora: Tatiana Renata Garcia com adaptações do professor Benjamin Grando Moreira Introdução à Programação de Computadores Sistemas de Numeração

Professora: Tatiana Renata Garcia com adaptações do professor Benjamin Grando Moreira

Introdução à Programação de Computadores

Conversão de base:

Octal para binário

- Cada dígito octal é substituído pelo número binário de três dígitos

- Converte-se o grupo de 3 bits da mesma forma que a conversão de decimal para binário

4678 = 1 0 0 1 1 0 1 1 1 2

4 6 7

Page 20: Professora: Tatiana Renata Garcia com adaptações do professor Benjamin Grando Moreira Introdução à Programação de Computadores Sistemas de Numeração

Professora: Tatiana Renata Garcia com adaptações do professor Benjamin Grando Moreira

Introdução à Programação de Computadores

Conversão de base:

Binário para hexadecimal

- Para converter um número binário para hexadecimal o processo é semelhante ao octal, entretanto divide-se o número em grupos de 4 bits (começando da direita para esquerda)

11 1110 1001

3 E 9

11111010012 = 3E916

- Pode se necessário adicionar um ou dois zeros à esquerda para completar um grupo de 4 dígitos => 0011 1110 10012

Page 21: Professora: Tatiana Renata Garcia com adaptações do professor Benjamin Grando Moreira Introdução à Programação de Computadores Sistemas de Numeração

Professora: Tatiana Renata Garcia com adaptações do professor Benjamin Grando Moreira

Introdução à Programação de Computadores

Conversão de base:

Binário para hexadecimal

Binário Octal

0000 0

0001 1

0010 2

0011 3

0100 4

0101 5

0110 6

0111 7

1000 8

1001 9

1010 A

1011 B

1100 C

1101 D

1110 E

1111 F

Page 22: Professora: Tatiana Renata Garcia com adaptações do professor Benjamin Grando Moreira Introdução à Programação de Computadores Sistemas de Numeração

Professora: Tatiana Renata Garcia com adaptações do professor Benjamin Grando Moreira

Introdução à Programação de Computadores

Conversão de base:

Hexadecimal para binário

- Na conversão de hexadecimal para binário cada dígito hexadecimal é substituído pelo número binário de quatro dígitos (semelhante ao octal)

46716 = 0100 0110 0111 2

4 6 7

Page 23: Professora: Tatiana Renata Garcia com adaptações do professor Benjamin Grando Moreira Introdução à Programação de Computadores Sistemas de Numeração

Professora: Tatiana Renata Garcia com adaptações do professor Benjamin Grando Moreira

Introdução à Programação de Computadores

Conversão de base:

Resumo

- Procedimentos para conversão entre sistemas de numeração:

- Polinômio

- Divisão

- Agrupamento de bits

Page 24: Professora: Tatiana Renata Garcia com adaptações do professor Benjamin Grando Moreira Introdução à Programação de Computadores Sistemas de Numeração

Professora: Tatiana Renata Garcia com adaptações do professor Benjamin Grando Moreira

Introdução à Programação de Computadores

Conversão de base:

Resumo

Page 25: Professora: Tatiana Renata Garcia com adaptações do professor Benjamin Grando Moreira Introdução à Programação de Computadores Sistemas de Numeração

Professora: Tatiana Renata Garcia com adaptações do professor Benjamin Grando Moreira

Introdução à Programação de Computadores

Conversão de base:

Conversão octal hexadecimal

- Não é realizada diretamente => não há relação entre os dígitos

- A conversão é realizada com uma base intermediária => binária

- Conversão em duas etapas: 1) número original: base octal (hexadecimal) => binária. 2) resultado intermediário: binária => hexadecimal (octal)

A 3 016 1010 0011 0 0002 5 0 6 08

Page 26: Professora: Tatiana Renata Garcia com adaptações do professor Benjamin Grando Moreira Introdução à Programação de Computadores Sistemas de Numeração

Professora: Tatiana Renata Garcia com adaptações do professor Benjamin Grando Moreira

Introdução à Programação de Computadores

Conversão de base:

Conversão da base B para decimal

- Utiliza-se a regra do polinômio com a base B

- Exemplo: 4435 = 12310

4*52 + 4*51 + 3*50 = 120 + 20 + 3 = 123

- Podemos utilizar a base decimal como a base intermediária para fazer a conversão de uma base A qualquer para outra base B qualquer

Page 27: Professora: Tatiana Renata Garcia com adaptações do professor Benjamin Grando Moreira Introdução à Programação de Computadores Sistemas de Numeração

Professora: Tatiana Renata Garcia com adaptações do professor Benjamin Grando Moreira

Introdução à Programação de Computadores

Conversão de base:

Conversão decimal para base B

- Divide-se o número decimal pela base B para obter o quociente e o resto

- Divide-se o quociente obtido pela base B para obter um novo quociente e um novo resto

- Repete-se o processo até que o quociente seja 0 (zero)

Exemplo: 12310 = 4435 (base 5) 123 5

3 24 5

4 4 5

4 0

Page 28: Professora: Tatiana Renata Garcia com adaptações do professor Benjamin Grando Moreira Introdução à Programação de Computadores Sistemas de Numeração

Professora: Tatiana Renata Garcia com adaptações do professor Benjamin Grando Moreira

Introdução à Programação de Computadores

Conversão de base:

Conversão base A base B

- Podemos utilizar a base decimal como a base intermediária para fazer a conversão de uma base A qualquer para outra base B qualquer

- Conversão em duas etapas:

1 – Base A para decimal

2 – Número decimal para base B

- Como podemos converter 2214 para um número na base 7?

Page 29: Professora: Tatiana Renata Garcia com adaptações do professor Benjamin Grando Moreira Introdução à Programação de Computadores Sistemas de Numeração

Professora: Tatiana Renata Garcia com adaptações do professor Benjamin Grando Moreira

Introdução à Programação de Computadores

Conversão de base:

Conversão base A base B

- Base 4 – dígitos 0, 1, 2, 3

- Base 7 – dígitos 0, 1, 2, 3, 4, 5, 6

- Passo 1: converter 2214 para base decimal (polinômio)

2*42 + 2*41 + 1*40 = 2*16 + 2*4 + 1*1 = 32+8+1 = 41

- Passo 2: converter 4110 para base 7 (divisão)

41 7

6 5 7 2214 = 567

5 0

Page 30: Professora: Tatiana Renata Garcia com adaptações do professor Benjamin Grando Moreira Introdução à Programação de Computadores Sistemas de Numeração

Professora: Tatiana Renata Garcia com adaptações do professor Benjamin Grando Moreira

Introdução à Programação de ComputadoresExercícios:

Converta os seguintes números para base decimal:

a)1010112

b)100001102

Converta os seguintes números para base binária:

a)1FF016

b)128710

c)7538

Converta os seguintes números de uma base A para base B:

a)25713 => X6 b) 14325 => X7

Page 31: Professora: Tatiana Renata Garcia com adaptações do professor Benjamin Grando Moreira Introdução à Programação de Computadores Sistemas de Numeração

Professora: Tatiana Renata Garcia com adaptações do professor Benjamin Grando Moreira

Introdução à Programação de ComputadoresConverta os seguintes números para base decimal:

a)1010112 43

b)100001102 134

Converta os seguintes números para base binária:

a)1FF016 0001 1111 1111 0000

b)128710 10100000111

c)7538 111 101 011

Converta os seguintes números de uma base A para base B:

a)25713 => X6 25713 = 41010 = 15226

b)14325 => X7 14325 = 24210 = 4647

Page 32: Professora: Tatiana Renata Garcia com adaptações do professor Benjamin Grando Moreira Introdução à Programação de Computadores Sistemas de Numeração

Professora: Tatiana Renata Garcia com adaptações do professor Benjamin Grando Moreira

Introdução à Programação de Computadores

Objetivos da aula:

- Motivação

- Apresentar os sistemas de numeração

- Conversão de base

- Representação dos números utilizados pelos computadores

Page 33: Professora: Tatiana Renata Garcia com adaptações do professor Benjamin Grando Moreira Introdução à Programação de Computadores Sistemas de Numeração

Professora: Tatiana Renata Garcia com adaptações do professor Benjamin Grando Moreira

Introdução à Programação de Computadores

Representação dos números:

- As informações manipuladas pelos computadores estão na base binária (representados na forma hexadecimal)

- Como o computador realiza as operações aritméticas?

- Como os números negativos são armazenados?

Page 34: Professora: Tatiana Renata Garcia com adaptações do professor Benjamin Grando Moreira Introdução à Programação de Computadores Sistemas de Numeração

Professora: Tatiana Renata Garcia com adaptações do professor Benjamin Grando Moreira

Introdução à Programação de Computadores

Representação dos números inteiros:

- Os números inteiros sem sinal são armazenados conforme apresentado nos slides anteriores

- A quantidade de números representável depende da quantidade de bits disponíveis

- 8 bits 1 byte

- Existem diferentes convenções para representar os números com sinal (positivos e negativos)

- A mais utilizada é a representação em complemento a dois

Page 35: Professora: Tatiana Renata Garcia com adaptações do professor Benjamin Grando Moreira Introdução à Programação de Computadores Sistemas de Numeração

Professora: Tatiana Renata Garcia com adaptações do professor Benjamin Grando Moreira

Introdução à Programação de Computadores

Representação em complemento a dois:

- Utilizada para representar números inteiros positivos e negativos

- O bit mais significativo (mais à esquerda) é o bit de sinal

- Bit = 0 o número é positivo

- Bit = 1 o número é negativo

- O número 0 (zero) possui apenas uma representação todos os bits em zero – considerado um número positivo

Page 36: Professora: Tatiana Renata Garcia com adaptações do professor Benjamin Grando Moreira Introdução à Programação de Computadores Sistemas de Numeração

Professora: Tatiana Renata Garcia com adaptações do professor Benjamin Grando Moreira

Introdução à Programação de Computadores

Referências:

GUIMARÃES, A. M.; LAGES, N. A. C. Introdução à Ciência da Computação. LTC: Rio de Janeiro, 2009 [reimpressão]

TANENBAUM, A. S. Organização Estruturada de Computadores, 3ª Edição, São Paulo, Prentice Hall do Brasil, 1992

STALLINGS, W. Arquitetura e Organização de Computadores. 8ª Edição, São Paulo, Pearson, 2010.