Binário e Hexadecimal
Bit
• Unidade básica de medida dos computadores
é o bit (binary digit), intoduzida por Claude
Shannon, na sua obra Teoria Matemática da
Computação, de 1948.
• Base de toda a linguagem usada pelos
computadores, o sistema binário, ou de base
dois
(Ex.: Arquitetutas 32/64 bits)• Graficamente é representado por duas
Byte
• Designação introduzida pela IBM, em 1956.
• Representado por 8 bits, uma unidade completa de informação.
• O bit é geralmente usado como medida de velocidade na transmissão de dados.
– Ex: ligação à Internet a 100 Mbit/s (bps) corresponde a
dizer que esta ligação consegue tx até 100 milhões de b/s.
• O byte é associado à capacidade de armazenamento de dados.
– Ex: disco rígido de 1 Terabyte tem 1x1012 bytes de
Word
• Agrupa um conjunto de bits, variável de
acordo com a arquitetura de processamento
– Arquitetura 16 bit: word = 16 bit (2 Bytes) – Arquitetura 32 bit: word = 32 bit (4 Bytes) – Arquitetura 64 bit: word = 64 bit (8 bytes)
• Doubleword = 2* word
• Halfword = ½ word
Prefixos dos números binários
• A norma IEC 80000-13: Quantities and units – Part 13:
Information science and technology, publicada em
2008, define os seguintes prefixos binários:
Fator Nome Símbolo Origem Derivação
210 kibi Ki kilobinary: (210)1 kilo: (103)1
220 mebi Mi megabinary: (210)2 mega: (103)2
230 gibi Gi gigabinary: (210)3 giga: (103)3
240 tebi Ti terabinary: (210)4 tera: (103)4
250 pebi Pi petabinary: (210)5 peta: (103)5
260 exbi Ei exabinary: (210)6 exa: (103)6
270 zebi Zi exabinary: (210)7 exa: (103)7
Exemplos e comparação com SI
1 kibibit 1 Kibit = 210 bit = 1024 bit
1 kilobit 1 kbit = 103 bit = 1000 bit
1 mebibyte 1 MiB = 220 B = 1 048 576 B
1 megabyte 1 MB = 106 B = 1 000 000 B
1 gibibyte 1 GiB = 230 B = 1 073 741 824 B
Porquê utilizar binário?
• Representação do número 4096
– Notação binária, 1000000000000 - 13 algarismos – Notação decimal, 4096 – 4 algarismos
• Qual é a vantagem de utilizar binário?
– Simplicidade:
• Mais facilmente implementável em Hw: cartões perfurados (furo=1; sem furo=0, meios magnéticos: magnetizado
Norte=1, magnetizado Sul=0, transístores: on=1, off=0.
– Eficiência:
• Só tem dois valores possíveis, 0 e 1, contra os 10 decimais
– Associado aos valores lógicos:
Utilizações do binário
• A combinação de bits pode ser utilizada para:
– Representação de caracteres: 1 byte = 1 caracter
• ISO-8859-1 (extensão do ASCII): 1 byte = 1 caracter
– 00101110 representa ‘.’ – 01000001 representa ‘A’
• UTF-8: utiliza entre 1 a 4 bytes
– Representação de números – Representação de cores
ASCII
• Versão inicial utilizava 7 bits, capaz de
endereçar 128 caracteres
– Não suporta caracteres acentuados
• Na versão estendida, para representar um
caracter precisamos de um byte que equivale
ao conjunto de 8 bit, endereçando 256
caracteres
– Padrão ISO-8859-1 (latin-1), suporta caracteres acentuados: ç, à, é, …
Unicode
• Padrão que permite aos computadores
representar e manipular, de forma consistente,
texto de qualquer sistema de escrita existente
• ASCII estendido é insuficiente para utilização
internacional
• Objetivo: substituir os esquemas de codificação
de caracteres existentes pelo Unicode e pelos
esquemas Unicode Transformation Formats
– UTF-7, UTF-8, UTF-16, UTF-32.
• Implementado em várias tecnologias recentes,
nomeadamente XML, Java e SO modernos.
8-bit Unicode Transformation Format
• Codificação Unicode de comprimento variável.
• Representa qualquer caracter universal
padrão do Unicode, sendo também
compatível com o ASCII
– primeiros 256 caracteres = ao ASCII estendido.
• Adoção gradual como tipo de codificação
padrão para email e páginas web, entre
outros. Em janeiro de 2015 adotado por
82.4% de páginas web
8-bit Unicode Transformation Format
• Utiliza de um a quatro bytes por carácter:
– 1 byte para codificar os caracteres ASCII.
– 2 bytes para caracteres Latinos com diacríticos e dos alfabetos Grego/Cirílico/Armênio/Hebraico/Sírio/Thaana.
– 3 bytes para o resto do Plano Multilingual Básico. – Existem outros caracteres que necessitam de 4 bytes.
Números decimais e binários
• Numeração decimal
– cada dígito tem um peso que é 10x superior ao do dígito à sua direita:
• 2015 =
(((2x10 + 0)x10 + 1)x10) + 5 ou 2*103 + 0*102 + 1*101+ 5*100
• Numeração binária
– cada dígito tem um peso que é 2x superior ao do dígito à sua direita:
• 10112 =
(((1x2 + 0)x2 + 1)x2 + 1 ou 1*23 + 0*22 + 1*21 + 1*20
Numeros binários
• Primeiros 16 números binários e os equivalentes decimais
0000 = 0 1000 = 8 0001 = 1 1001 = 9 0010 = 2 1010 = 10 0011 = 3 1011 = 11 0100 = 4 1100 = 12 0101 = 5 1101 = 13 0110 = 6 1110 = 14 0111 = 7 1111 = 15
Numeros binários
• Nº de telefone da ESTG
– 1110100101111010100101001100
• O que é que há de “errado” com este número?
– Difícil de tomar nota num guardanapo – Sujeito a erros de transcrição
– Certamente não irão receber muitos telefonemas • Apesar de os computadores processarem binário,
este não é o melhor sistema para os humanos
Binário e hexadecimal
• Programadores preferem métodos de
representação mais compactos:
– Historicamente, octal (base 8) e hexadecimal (base 16).
– Octal já não é muito utilizado. – Hexadecimal é o adotado
– Necessita de 6 novos digitos.
• Conversão entre binário e décimal é lenta e deve
ser evitada se não for necessária.
Relação binário/hexadecimal
• Cada digito hexadecimal permite endereçar 4
bits
• Os dígitos hexa são os 10 decimais mais as 6
primeiras letras do alfabeto, A = 10 … F = 15
– 1100 1010 1101 10102 = C A D A16
0000 = 0 0100 = 4 1000 = 8 1100 = C 0001 = 1 0101 = 5 1001 = 9 1101 = D 0010 = 2 0110 = 6 1010 = A 1110 = E 0011 = 3 0111 = 7 1011 = B 1111 = F
Codificação da cor
• Muitos programadores web utilizam valores “RGB” para definir cores.
• HTML5 e CSS3 define 140 nomes, 17 HTML/ 123 CSS • Valores RGB baseados no Red, Green, Blue.
• Para definir cores numericamente, é atribuído a cada cor primária um valor numérico que carateriza a sua intensidade;
• O somatório destes parâmetros definem a cor.
• Valor numérico pode ser representado em decimal, ou hexadecimal mas é interpretado pelo PC em binário
Expressar cor em hexadecimal
• Intensidade varia entre o e 255.
• Exemplos de cores, expressa em hexadecimal:
0x000000 – Preto (R, G e B = 0) 0xFFFFFF – Branco (R,G e B = 255) 0xFF0000 – Vermelho (R = 255, G e B = 0) 0x00FF00 – Verde 0x0000FF – Azul 0xFFFF00 – Amarelo (R e G = 255) 0xAEEEEE – Turquesa 0x808080 – Cinzento (R,G e B = 127)
Exemplo de aplicação
• Descobrir a cor do logotipo do IPL
– 1º passo: Analisar o código HTML da página do IPLeiria
• Background-color: #B30033
• 2ª passo: Decompor o número hexadecimal nas 3
cores RGB
• R=0xB3; G=0x00; B=0x33
• 3º passo: converter dehexadecimal para decimal
– 0xB3 = 16*11+1*3=179 – 0x00 = 0
– 0x33 = 16*3+1*3 = 51
• 4º passo: introduzir os números decimais numa
ferramenta de criação de cores (ex: paint)
Hexadecimal para Decimal
Hexadecimal
Hexadecimal para Decimal
• Técnica
– Multiplicar cada digito hexadecimal por 16n,
onde n é o peso do digíto
– O peso corresponde à posição de cada digito, começando em 0 a partir da direita
Exemplo
ABC16 => 274810 A B C 16 0 16 1 16 2 Pesos A x 162 161x B 160x C 2560 + 176 + 12 = 2748 11 x 161 10 x 162 160x 12Hexadecimal para Binário
Hexadecimal
Hexadecimal para Binário
• Técnica
– Converter cada digito hexadecimal para a representação binária de 4-bits equivalente
Exemplo
10AF16 = ?2 1 0 A F 10AF16 => 00010000101011112 0001 0000 1010 1111Binário para Hexadecimal
Binário
Binário para Hexadecimal
• Técnica
– Agrupar os bits 4 a 4, da direita para a esquerda – Converter cada grupo de 4 bits pelo dígito
Exemplo
10101110112 = ?16
0010 1011 1011
10101110112 => 2BB16 2 B B
Binário para Decimal
Binário
Binário para Decimal
• Técnica
– Multiplicar cada bit por 2n, onde n é o peso do
bit
– O peso corresponde à posição de cada bit, começando em 0 a partir da direita
Exemplo
10102 => 1010 1 0 1 0 2 0 2 1 2 2 2 3 Pesos 1 x 23 22x 0 21x 1 20x 0 8 + 0 + 2 + 0 = 10Decimal para Hexadecimal
Decimal
Decimal para Hexadecimal
• Técnica
– Dividir o n.º decimal sucessivas vezes por 16
– O resto de cada divisão é um dígito hexadecimal – O último resto é o bit mais significativo ( + à
Exemplo
123410 = ?16 123410 => 1234 16 7 1 1 7 16 16 4 0 4 13 02 04 D 4 216Decimal para Binário
Decimal
Decimal para Binário
• Técnica
– Dividir o n.º decimal sucessivas vezes por 2 – O resto de cada divisão é um dígito binário – O último resto é o bit mais significativo ( + à