professora: tatiana renata garcia com adaptações do professor benjamin grando moreira introdução...
TRANSCRIPT
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
Professora: Tatiana Renata Garcia com adaptações do professor Benjamin Grando Moreira
Introdução à Programação de Computadores
Conversão de base:
Resumo
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
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
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
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?
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
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
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
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
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?
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
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
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.