Conversões Numéricas – II
Conversão de binário para decimal
• Para converter um número binário para o número decimal equivalente basta multiplicar cada dígito pela potência de 2, relativa à posição por ele ocupada e somar os resultados.
Conversão de binário para decimal
Exemplo: 10102 = 1x2³ + 0x2² + 1x2¹ + 0x20 = 10 10 10012 = 1x23 + 0x22 + 0x21 + 1x20 = 9 10BIT 8º bit 7º bit 6º bit 5º bit 4º bit 3º bit 2º bit 1º bit
Calculo 27 26 25 24 23 22 21 20
Valor Decimal
Exercícios de fixação
• Converta os números binários em decimais. • a)100110012
• b)111000112 • c)100100112 • d)101010102 • e)100100012
Hexadecimal para Binário
• Para realização da conversão de valores de Hexadecimal para binário, a técnica apresentada no item anterior, conversão de binário para hexadecimal é facilmente aplicável.
• Tendo como exemplo o numero 4AF0 em hexadecimal, é necessário encontrar o valor correspondente de cada algarismo em binário.
Hexadecimal para Binário
• Conforme exemplificado na tabela abaixo:
• Com isso é possível afirmar que o numero 4A16 em hexadecimal é 010010102 em binário.
Hexadecimal Binário
4 0100
Exercícios de Fixação
• Converta os números hexadecimais em binários. • a)1A16 • b)AE16 • c)C016 • d)7D16 • e)9F16
Octal para Binário
• Para realização da conversão de valores de Octal para binário, a técnica apresentada no item anterior, conversão de binário para octal é facilmente aplicável.
• Tendo como exemplo o numero 176 em octal, é necessário encontrar o valor correspondente de cada algarismo em binário.
Octal para Binário
• Conforme exemplificado na tabela abaixo:
• Com isso é possível afirmar que o numero 1768 em hexadecimal é 011111102 em binário.
Octal Binário
1 01
7 111
Exercícios de Fixação
• Converta os números Octais em binários. • a)2348
• b)758 • c)238 • d)1368 • e)3248
Hexadecimal para Octal
• Primeiro deve-se converter para binário e depois para octal; agrupando de 3 em 3 da direita para a esquerda e convertendo seu valor respectivamente em octal.
Exemplo:
F516 = 111101012 = 3658 6C16 = 011011002 = 1548
Exercícios de fixação
• Converta os números hexadecimais em octais. • a) 2F16
• b)A116 • c)FA16 • d)6716 • e)4D16
Octal para hexadecimal
• Primeiro deve-se converter para binário e depois para hexadecimal; agrupando de 4 em 4 da direita para a esquerda e convertendo seu valor respectivamente em hexadecimal.
Exemplo:
3658 = 111101012 = F516 1548 = 011011002 = 6C16
Exercícios de fixação
• Converta os números octais em hexadecimais. • a) 268
• b)3218 • c)1258 • d)2378 • e)1758
Código Binário
• Como visto anteriormente a base numérica utiliza a base 2 para representar valores, e basicamente é composta por dois algarismos, 0 e 1.
• O código binário utiliza a base binária para representar as informações, e basicamente toda informação que é trafegada utilizando tal código é convertida de forma a ser representada através de zeros e uns.
Código Binário
• Analisando o conceito visto anteriormente, a respeito das unidades de medidas, podemos concluir que um bit é um algarismo em código binário, e que um byte, que anteriormente foi definido como conjunto de 8 bits, é um conjunto de 8 algarismos em código binário.
Código Binário
• E se continuarmos e cruzarmos essas informações com as apresentadas em bases numéricas, veremos que, com byte é possível representar números e 0 a 255, ou seja 256 posições.
• Na sequência será apresentada uma forma que define como é possível converter a maioria das informações em código binário.
Tabela ASCII
• American Standard Code For Information Intercharce (ASCII), em tradução literal, significa Código Padrão Americano para Intercambio de Informações, mais conhecida como tabela ASCII.
• Como o nome já sugere é um código padrão para troca de informações entre computadores.
Tabela ASCII
• Possibilitando que seja realizada comunicação entre computadores de modelos e fabricantes distintos.
• A necessidade da criação deste formato foi identificada quando foi necessário realizar comunicação entre computadores, pois sabia-se que computador, até mesmo modelos distintos do mesmo fabricante, utilizavam cada um uma forma de representar os caracteres.
Tabela ASCII
• Isso tornava a comunicação entre eles uma tarefa verdadeiramente trabalhosa.
• Inicialmente foi criada uma tabela que continha todos os caracteres utilizados pela língua inglesa, e para isso verificou-se que 7 bits eram suficientes, ou seja 128 posições bastavam, com isso criou-se a tabela conhecida como ASCII normal que vai da posição 0 até a 127:
Tabela ASCII
• Caracteres ASCII estendidos imprimíveis
• Com a demanda de outros idiomas, foi necessário a inclusão de 1 bit a mais, um total de 8 bits.
• Os caracteres ASCII estendidos atendem à demanda de mais caracteres.
• Eles incluem 128 caracteres encontrados no ASCII e adicionam mais 128 caracteres, o que perfaz um total de 256 da posição 128 até 255.
Tabela ASCII
• Mesmo com esses caracteres adicionais, muitos idiomas contêm símbolos que não podem ser condensados em 256 caracteres. • Por causa disso, há variações do ASCII para
englobar caracteres e símbolos regionais.
• Por exemplo, a tabela ASCII, também conhecida como ISO 8859-1, é usada por muitos softwares para os idiomas da América do Norte, Europa Ocidental, Austrália e África.
Tabela Unicode
• Unicode é uma tabela de símbolos mapeados com propósito universal.
• O objetivo da tabela Unicode é mapear todos os tipos de símbolos, especialmente aqueles usados nos sistemas de escrita no mundo atualmente.
• Além deles, também existem símbolos
matemáticos, formas geométricas, etc.
• Unicode possui mais de 100 mil símbolos mapeados e são gerenciados pelo Unicode Consortium.
Tabela Unicode
• Além da tabela de símbolos, o Unicode prevê algumas regras como, por exemplo, collation, que especifica como dois símbolos devem ser comparados (para ordenação alfabética, por exemplo).
• A especificação da ISO 10646 prevê a mesma relação de códigos com símbolos que a Unicode, porém, não especifica as regras adicionais, descritas na Unicode apenas.
Tabela Unicode
• Você deve estar se perguntando agora: se um byte consegue armazenar apenas 256 valores diferentes, como é que a tabela Unicode consegue mapear cada símbolo em um código binário próprio?
• A resposta é simples: uma codificação não precisa necessariamente usar um byte para representar um símbolo e vise-versa.
• É aí que entra o algoritmo de codificação e decodificação, como o UTF-8 (UCS), UTF-16 (UCS-2), UTF-32 (UCS-4), etc.
Tabela Unicode
• Vamos deixar claro as partes tomando como exemplo a tabela ASCII.
• A tabela ASCII define símbolos e códigos correspondentes.
• A codificação ASCII define que a forma como o símbolo será convertido em código é através da utilização de 8 bits, sendo o primeiro sempre zero.
Tabela Unicode
• Poderíamos, portanto, criar uma codificação alternativa chamada ASCII-2 onde a forma de converter um símbolo em código seria através da utilização de 8 bits, mas sendo o último bit sendo sempre 1 e utilizando os demais bits para armazenar o valor binário do código numérico do símbolo.
• Então, a tabela Unicode é uma tabela que associa um número (ou codepoint) a um símbolo correspondente. Por exemplo:
Codificação UTF-32
• Bom, sabendo o que é Unicode e o que é codificação, vamos falar sobre o tipo de codificação mais simples baseado em Unicode: o UTF-32.
• UTF significa "Unicode Transformation Formats" e possui diferentes formas de codificar/decodificar os símbolos da tabela Unicode em formato computacional.
• A codificação UTF-32 é simples pois cada símbolo é sempre representado com 4 bytes.
Codificação UTF-32
• Com 4 bytes, é possível representar 4.294.967.296 valores diferentes, que é o valor de 2 elevado a 32.
• Esta codificação, embora simples, é pouco usada, já que gasta muitos bytes para representar um único símbolo.
• Por outro lado, o tamanho é fixo, então é mais fácil obter o N-ésimo símbolo de uma sequência de símbolos (basta saltar para o 4 x N byte da sequência).
Codificação UTF-32
• Para escrever "AB" em ASCII, seriam necessários 2 bytes assim:
• 01000001 01000010
• Em UTF-32, para escrever "AB", seriam necessários 8 bytes assim:
• 00000000 00000000 00000000 01000001 00000000 00000000 00000000 01000010
• Note que o desperdício é alto, mas a forma de codificar/decodificar é muito simples.
Codificação UTF-8
• Finalmente chegamos à codificação UTF-8. Esta codificação utiliza um número variável de bytes para representar símbolos.
• Dependendo do símbolo, ele pode gastar 1, 2, 3 ou 4 bytes.
• Os símbolos com 1 byte são idênticos aos da tabela ASCII.
• Isso possibilita compatibilidade entre as duas codificações.
Codificação UTF-8
• Em outras palavras, os símbolos cujos códigos estão entre 0 e 127 são representados da mesma forma que os símbolos ASCII.
• Logo, se um byte é capturado e ele começa com zero, então o byte representa um símbolo da tabela ASCII.
• Se o byte começa com "um", então os N bytes seguintes representam um símbolo da tabela Unicode.