Codificação Daniel Vieira. Codificação Conceitos. Sabe-se que na memória principal são...

50
Codificação Daniel Vieira

Transcript of Codificação Daniel Vieira. Codificação Conceitos. Sabe-se que na memória principal são...

Page 1: Codificação Daniel Vieira. Codificação Conceitos. Sabe-se que na memória principal são armazenados instruções e dados referentes ao programa executado.

Codificação

Daniel Vieira

Page 2: Codificação Daniel Vieira. Codificação Conceitos. Sabe-se que na memória principal são armazenados instruções e dados referentes ao programa executado.

Codificação

• Conceitos.

Sabe-se que na memória principal são armazenados instruções e dados referentes ao programa executado.Sabe-se também que isso só é possível pela capacidade que o equipamento tem de distinguir entre dois estados, 0 – 1.Por meio da variação desta combinação podemos chegar a várias combinações que compõem a informação .

Page 3: Codificação Daniel Vieira. Codificação Conceitos. Sabe-se que na memória principal são armazenados instruções e dados referentes ao programa executado.

Codificação

• Mas como o computador funciona?Um conjunto de bits – sempre com a mesma quantidade de bits – precisa ser tomado em cada circuito no computador; esse “pedaço” de tamanho fixo contém a informação.Se este conjunto for de 6 bits, esta será a unidade de processamento deste equipamento.Este conjunto de bits permitiria ao computador “reconhecer”:

Page 4: Codificação Daniel Vieira. Codificação Conceitos. Sabe-se que na memória principal são armazenados instruções e dados referentes ao programa executado.

Codificação

10 algorismos (de 0 – 9). = 1026 letras (incluindo K, W e Y) = 2628 símbolos especiais (*,$, @,...) = 28

64Isso por que existiriam 2^6, permitindo 64 configurações diferentes.

Page 5: Codificação Daniel Vieira. Codificação Conceitos. Sabe-se que na memória principal são armazenados instruções e dados referentes ao programa executado.

Codificação

• Com 4 grupos sucessivos de 6 bits em conjunto, o número 1946 estaria representado da seguinte forma:

0 0 0 0 0 1 0 0 1 0 0 1 0 0 0 1 0 0 0 0 0 1 1 0

0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1

Seguindo o mesmo critério, o número 9999 fica da seguinte forma.

1 9 4 6

Page 6: Codificação Daniel Vieira. Codificação Conceitos. Sabe-se que na memória principal são armazenados instruções e dados referentes ao programa executado.

Codificação

• Caso cada casa da memoria admitisse 24 bits e fosse utilizado um código binário para 9999 igual ao exemplo anterior teríamos esta situação.

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1

9

9

9

9

Page 7: Codificação Daniel Vieira. Codificação Conceitos. Sabe-se que na memória principal são armazenados instruções e dados referentes ao programa executado.

Codificação

• Nota-se uma grande perda quando se adota o código visto em relação ao binário puro que no caso de 9999 é.

9 9 9 90 0 0 0 0 0 0 0 0 0 1 0 0 1 1 1 0 0 0 0 1 1 1 1

Page 8: Codificação Daniel Vieira. Codificação Conceitos. Sabe-se que na memória principal são armazenados instruções e dados referentes ao programa executado.

Codificação• Lembrem-se, a contagem deve sempre iniciar da direita

para esquerda, cada bit nesta escala é resultado da equação 2^n iniciada em zero, que é igual a 1 por tanto.

16.777.215

2^0 = 1

12^1 =

22^2 = 48...

2^24 =1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1

24

Page 9: Codificação Daniel Vieira. Codificação Conceitos. Sabe-se que na memória principal são armazenados instruções e dados referentes ao programa executado.

Codificação

• Há uma série de razões para o computador utilizar um código definido.

• Lembre-se o computador precisa representar muito mais coisas do que apenas números.

Page 10: Codificação Daniel Vieira. Codificação Conceitos. Sabe-se que na memória principal são armazenados instruções e dados referentes ao programa executado.

Codificação

• Poderíamos organizar bytes em grupos de 4 bits, o que seria totalmente insuficiente pois somente 16 caracteres seriam possíveis, onde 10 configurações seriam números (0-9) e 6 seriam letras por exemplo (A-E).

Page 11: Codificação Daniel Vieira. Codificação Conceitos. Sabe-se que na memória principal são armazenados instruções e dados referentes ao programa executado.

Codificação

BCD• Para poder representar os 64 bits foi criado o

codigo BCD (Binary Coded Decimal).• E assim denominou-se que os 4 primeiros bits

seriam parte numérica e os 2 últimos Zona, que será sempre 0 para números.

Page 12: Codificação Daniel Vieira. Codificação Conceitos. Sabe-se que na memória principal são armazenados instruções e dados referentes ao programa executado.

Codificação

ZONA

PARTE NUMÉRICA

BCD

Page 13: Codificação Daniel Vieira. Codificação Conceitos. Sabe-se que na memória principal são armazenados instruções e dados referentes ao programa executado.

Codificação• Tabela BCD (Binary-Coded-Decimal).

Page 14: Codificação Daniel Vieira. Codificação Conceitos. Sabe-se que na memória principal são armazenados instruções e dados referentes ao programa executado.

Codificação

• Como medida de melhor aproveitamento da memória, os computadores da 3ª geração passaram a utilizar bytes de 8 bits, permitindo que sob notação compactada cada algarismo ocupe apenas meio byte, em outras palavras, um byte dois algarismos.

• Isso aumenta sensivelmente o aproveitamento de espaço e a melhoria da organização interna.

Page 15: Codificação Daniel Vieira. Codificação Conceitos. Sabe-se que na memória principal são armazenados instruções e dados referentes ao programa executado.

Codificação

ZONA

PARTE NUMÉRICA

Page 16: Codificação Daniel Vieira. Codificação Conceitos. Sabe-se que na memória principal são armazenados instruções e dados referentes ao programa executado.

Codificação

• Com isso vieram novos códigos que aproveitam ainda mais as configurações possíveis, agora num total de 2^8, ou seja 256 configurações diferentes.

• Exemplo deles o EBCDIC (Expanded Binary- Coded Decimal Interchange Code) e o ASCII (American Standard Code for Information Interchange).

EBCDIC - ASCII

Page 17: Codificação Daniel Vieira. Codificação Conceitos. Sabe-se que na memória principal são armazenados instruções e dados referentes ao programa executado.

Codificação

Page 18: Codificação Daniel Vieira. Codificação Conceitos. Sabe-se que na memória principal são armazenados instruções e dados referentes ao programa executado.

Codificação

• O EBCDIC (Expanded Binary- Coded Decimal Interchange Code) É usado em grandes Mainframes enquanto o ASCII (American Standard Code for Information Interchange), em sua versão de 7 posições são usados em microcomputadores. Fato que faz com que algumas redes de comunicação que interligam equipamentos de vários portes utilizem dispositivos de tradução.

Page 19: Codificação Daniel Vieira. Codificação Conceitos. Sabe-se que na memória principal são armazenados instruções e dados referentes ao programa executado.

Codificação• Codificação Estendida

O conjunto ASCII de 7 posições abriga representações para 96 caracteres voltados a leitura/impressão e mais 32 caracteres de controle sem representação gráfica. Por ser um padrão americano, não atende a todos os idiomas e aplicações gráficas. Por isso os computadores modernos utilizam caracteres estendidos, a exemplo dos IBMPCs onde em seu conjunto estendido (extanted charter set), residente em ROM, conta com 126 representações a mais das existentes em ASCII.

Page 20: Codificação Daniel Vieira. Codificação Conceitos. Sabe-se que na memória principal são armazenados instruções e dados referentes ao programa executado.

Codificação

Pode-se aumentar a gama de números a representar em posições de tamanho fixo usando um sistema de base superior a 10. é justamente isso que os computadores modernos fazem, eles operam em um sistema de base 16 (hexadecimal).

Sistema Hexadecimal

Page 21: Codificação Daniel Vieira. Codificação Conceitos. Sabe-se que na memória principal são armazenados instruções e dados referentes ao programa executado.

Codificação• Sistema Hexadecimal

O sistema que usamos no cotidiano é o decimal, onde cada posição em número vale 10 vezes o algarismo que está a direita.Exemplo:496.O algarismo 6 vale 6x1; O algarismo 9 vale 9x10; O algarismo 4 vale 4x10x10;

Page 22: Codificação Daniel Vieira. Codificação Conceitos. Sabe-se que na memória principal são armazenados instruções e dados referentes ao programa executado.

CodificaçãoUma característica de qualquer sistema de numeração é o número de algarismos diferentes que utiliza. O sistema decimal, por ser de base 10, tem dez algarismos diferentes: 0-1-2-3-4-5-6-7-8 e 9. O sistema binário tem dois algarismos diferentes: 0 e 1.Necessitamos de tantos símbolos diferentes quantos forem os algarismos de base do sistema.No sistema hexadecimal (16 símbolos), por conveniência, usamos os mesmos dez símbolos utilizados pelo sistema decimal (0 a 9) e as letras de A até F. Formando a seguinte sequencia.0-1-2-3-4-5-6-7-8-9-A-B-C-D-E-F.

Page 23: Codificação Daniel Vieira. Codificação Conceitos. Sabe-se que na memória principal são armazenados instruções e dados referentes ao programa executado.

CodificaçãoNo sistema hexadecimal (16 símbolos), por conveniência, usamos os mesmos dez símbolos utilizados pelo sistema decimal (0 a 9) e as letras de A até F. Formando a seguinte sequencia.0-1-2-3-4-5-6-7-8-9-A-B-C-D-E-F.

O computador usa o sistema hexadecimal para armazenar informações, mas todos os cálculos são realizados no sistema binário.

Page 24: Codificação Daniel Vieira. Codificação Conceitos. Sabe-se que na memória principal são armazenados instruções e dados referentes ao programa executado.

Codificação

Page 25: Codificação Daniel Vieira. Codificação Conceitos. Sabe-se que na memória principal são armazenados instruções e dados referentes ao programa executado.

CodificaçãoNo sistema hexadecimal, a primeira posição (à direita) de um número indica o número de uns (ou 16^0). A posição seguinte indica o número 16. A terceira posição indica o número de 16 x 16 = 256 ...Assim o equivalente hexadecimal do número 235 é 565.

Page 26: Codificação Daniel Vieira. Codificação Conceitos. Sabe-se que na memória principal são armazenados instruções e dados referentes ao programa executado.

Codificação

No sistema hexadecimal, a primeira posição (à direita) de um número indica o número de uns (ou 16^0). A posição seguinte indica o número 16. A terceira posição indica o número de 16 x 16 = 256 ...Assim o equivalente hexadecimal do número 235 é 565.Vejamos:

Page 27: Codificação Daniel Vieira. Codificação Conceitos. Sabe-se que na memória principal são armazenados instruções e dados referentes ao programa executado.

Codificação

5 x 16^0 =3 x 16 =2 x 256 =

548512565

16x16

Page 28: Codificação Daniel Vieira. Codificação Conceitos. Sabe-se que na memória principal são armazenados instruções e dados referentes ao programa executado.

CodificaçãoO equivalente de A5 é (5 x 1 + 10 x 16) = 165.O equivalente a BA é (10 x 1 + 11 x 16) = 186.

• A utilização do sistema hexadecimal permite que a notação seja compactada, visto que (FF)16 = (255)10, ao utilizar apenas 2 dígitos no sistema decimal conseguiríamos representar apenas (99)10. E teríamos que adicionar mais um byte para representar (255) 10.

Page 29: Codificação Daniel Vieira. Codificação Conceitos. Sabe-se que na memória principal são armazenados instruções e dados referentes ao programa executado.

Codificação• Supondo que definimos uma tabela de base 5

e ela tenha ficado da seguinte forma.

0 = 301 = 312 = 323 = 334 = 34...

A = 41B = 42C = 43D = 44E = 45...

M = 4DN = 4EO = 4FP = 50Q = 51...

20 = barra de espaço (0)n = byte vazio

Page 30: Codificação Daniel Vieira. Codificação Conceitos. Sabe-se que na memória principal são armazenados instruções e dados referentes ao programa executado.

Codificação.• A conversão desta tabela seria interpretada da

seguinte forma pelo computador:End01C001D0

Conteúdo30 30 32 37 35 47 52 41 4D 50 45 41 44 4F 52 2020 20 20 20 20 30 30 30 31 30 30 30 20 20 0D 0A

TRADUÇÃO 0 0 2 7 5 G R A M P E A D O R0 0 0 1 0 0 0

0 = 301 = 312 = 323 = 334 = 34...

A = 41B = 42C = 43D = 44E = 45...

M = 4DN = 4EO = 4FP = 50Q = 51...

20 = barra de espaço (0)n = byte vazio

Este procedimento é denominado DUMP

Page 31: Codificação Daniel Vieira. Codificação Conceitos. Sabe-se que na memória principal são armazenados instruções e dados referentes ao programa executado.

Codificação

Para maior aproveitamento é possível adotar o sistema octal com subdivisão do string de 3 em 3 bits.

Sistema Octal

Page 32: Codificação Daniel Vieira. Codificação Conceitos. Sabe-se que na memória principal são armazenados instruções e dados referentes ao programa executado.

CodificaçãoZONA

PARTE NUMÉRICA

Page 33: Codificação Daniel Vieira. Codificação Conceitos. Sabe-se que na memória principal são armazenados instruções e dados referentes ao programa executado.

CodificaçãoZONA

PARTE NUMÉRICA

Page 34: Codificação Daniel Vieira. Codificação Conceitos. Sabe-se que na memória principal são armazenados instruções e dados referentes ao programa executado.

Codificação

Quando o computador trata constantes ou variáveis, reserva para elas posições de memória adequadas ao respectivo acondicionamento, para que possam estar disponíveis nas operações designadas e atendendo ao software dependendo de sua tipificação e formatação.

Numerais

Page 35: Codificação Daniel Vieira. Codificação Conceitos. Sabe-se que na memória principal são armazenados instruções e dados referentes ao programa executado.

Codificação• Tratando Numerais

Exemplo:Se o número 1946 estiver configurado para variável numérica, sua representação jamais será:

1 9 4 61 1 0 0 0 1 0 1 1 0 0 1 0 1 1 0 1 0 0 1 1 0 1 10 1 0 0

Page 36: Codificação Daniel Vieira. Codificação Conceitos. Sabe-se que na memória principal são armazenados instruções e dados referentes ao programa executado.

CodificaçãoTratando NumeraisExemplo:Sendo numérica inteiro, utilizará apenas 2 bytes e ficará da seguinte forma:

0 0 0 0 0 1 0 1 1 0 0 0110 1

1946

1 9 4 60 0 0 0 0 1 0 1 1 0 0 1 0 1 1 0 1 0 0 1 1 0 1 10 1 0 0

Diferente do tipo string onde cada digito representa um algarismo e neste caso ficaria

Page 37: Codificação Daniel Vieira. Codificação Conceitos. Sabe-se que na memória principal são armazenados instruções e dados referentes ao programa executado.

Codificação• Números Naturais

Repare que se uma linguagem faz com que o computador reserve para cada inteiro a acomodação de 2 bytes, e só fosse representar os números naturais, poderia fazê-lo do 0 (zero) ao 65535.

Page 38: Codificação Daniel Vieira. Codificação Conceitos. Sabe-se que na memória principal são armazenados instruções e dados referentes ao programa executado.

Codificação• Números Naturais

00000000 00000000(zero)

11111111 11111111(65535)

1 + 2 + 4 + 8 + 16 + 32 + 64 + 128 + 256 + 512 + 1024+ 2048 + 4096 + 8192 + 16384 + 32786

Page 39: Codificação Daniel Vieira. Codificação Conceitos. Sabe-se que na memória principal são armazenados instruções e dados referentes ao programa executado.

Codificação• Números Naturais

Se fosse representar em apenas 1byte?

ou

2 -1 neste caso 2 -1 n 8

11111111 = 255

Page 40: Codificação Daniel Vieira. Codificação Conceitos. Sabe-se que na memória principal são armazenados instruções e dados referentes ao programa executado.

CodificaçãoHistoria

O intel 8088 possuía endereçamento de 20 bits; logo era capaz de endereçar memórias até 1 megabyte. O AT-286 possuía endereçamento de 24 bits; portanto era capaz de endereçar 16MB. As maquinas mais recentes de 32 bits ou mais, endereçam memoria de alguns gigas.

Page 41: Codificação Daniel Vieira. Codificação Conceitos. Sabe-se que na memória principal são armazenados instruções e dados referentes ao programa executado.

CodificaçãoMas, e os números negativos?

Já foi utilizado mais um bit onde 0 (zero) representava número positivo e 1 negativo a esta solução deu-se o nome de magnitude/sinal ou sinal/magnitude.A solução utilizada atualmente denominada complemento a 2, não requer a inclusão de novo bit.

Page 42: Codificação Daniel Vieira. Codificação Conceitos. Sabe-se que na memória principal são armazenados instruções e dados referentes ao programa executado.

Codificação

Nele, representa-se (em vez de 2n “números naturais”), n números negativos , o zero (0) e n-1 números positivos.Para facilitar o entendimento, iniciaremos a analise mostrando números naturais de 4 bits.

Complemento a 2

Page 43: Codificação Daniel Vieira. Codificação Conceitos. Sabe-se que na memória principal são armazenados instruções e dados referentes ao programa executado.

Codificação• Complemento a dois

0000 = 00001 = 10010 = 20011 = 30100 = 40101 = 50110 = 60111 = 71000 = 81001 = 91010 = 101011 = 111100 = 121101 = 131110 = 141111 = 15

Com 4 bits poderíamos ter 15 valores

Com o complemento a 2,podemos representar:

+7,+6,+5,+4,+3,+2,+1, 0 -8,-7,-6,-5,-4,-3,-2,-1,

Page 44: Codificação Daniel Vieira. Codificação Conceitos. Sabe-se que na memória principal são armazenados instruções e dados referentes ao programa executado.

Codificação

Mas como proceder para fazê-lo?1. Considerar que todas as configurações

iniciadas por 0 são positivas (exceto zero, obviamente).

2. Trocar todos os zeros por uns e todos os uns por zero (Complemento a 1).

3. Adicionar 1 ao resultado (Complemento a 2).

• Complemento a dois

Page 45: Codificação Daniel Vieira. Codificação Conceitos. Sabe-se que na memória principal são armazenados instruções e dados referentes ao programa executado.

Codificação• Complemento a dois

1 = 0001Complemento a 1 = 1110 Complemento a 2 = 1111 = -1

Inverte os dígitos

Adiciona 1 aoResultado

Page 46: Codificação Daniel Vieira. Codificação Conceitos. Sabe-se que na memória principal são armazenados instruções e dados referentes ao programa executado.

Codificação• Complemento a dois

2 = 0010Complemento a 1 = 1101 Complemento a 2 = 1110 = -2

Inverte os dígitos

Adiciona 1 aoResultado

Page 47: Codificação Daniel Vieira. Codificação Conceitos. Sabe-se que na memória principal são armazenados instruções e dados referentes ao programa executado.

Codificação• Complemento a dois

3 = 0011Complemento a 1 = 1100 Complemento a 2 = 1101 = -3

Inverte os dígitos

Adiciona 1 aoResultado

Page 48: Codificação Daniel Vieira. Codificação Conceitos. Sabe-se que na memória principal são armazenados instruções e dados referentes ao programa executado.

Codificação• Complemento a dois

4 = 0100Complemento a 1 = 1011 Complemento a 2 = 1100 = -4

Inverte os dígitos

Adiciona 1 aoResultado

Page 49: Codificação Daniel Vieira. Codificação Conceitos. Sabe-se que na memória principal são armazenados instruções e dados referentes ao programa executado.

Codificação• Complemento a dois

5 = 0101Complemento a 1 = 1010 Complemento a 2 = 1011 = -5

Inverte os dígitos

Adiciona 1 aoResultado

Page 50: Codificação Daniel Vieira. Codificação Conceitos. Sabe-se que na memória principal são armazenados instruções e dados referentes ao programa executado.

Codificação

Obrigado.