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

Post on 07-Apr-2016

214 views 0 download

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

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.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 .

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”:

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.

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

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

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

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

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.

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).

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.

Codificação

ZONA

PARTE NUMÉRICA

BCD

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

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.

Codificação

ZONA

PARTE NUMÉRICA

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

Codificação

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.

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.

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

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;

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.

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.

Codificação

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.

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:

Codificação

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

548512565

16x16

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.

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

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

Codificação

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

Sistema Octal

CodificaçãoZONA

PARTE NUMÉRICA

CodificaçãoZONA

PARTE NUMÉRICA

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

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

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

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.

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

Codificação• Números Naturais

Se fosse representar em apenas 1byte?

ou

2 -1 neste caso 2 -1 n 8

11111111 = 255

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.

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.

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

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,

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

Codificação• Complemento a dois

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

Inverte os dígitos

Adiciona 1 aoResultado

Codificação• Complemento a dois

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

Inverte os dígitos

Adiciona 1 aoResultado

Codificação• Complemento a dois

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

Inverte os dígitos

Adiciona 1 aoResultado

Codificação• Complemento a dois

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

Inverte os dígitos

Adiciona 1 aoResultado

Codificação• Complemento a dois

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

Inverte os dígitos

Adiciona 1 aoResultado

Codificação

Obrigado.