Representação de Dados e Sistemas de Numeração • Sistema de numeração decimal e números decimais (base 10) • Sistema de numeração binário e números binários (base 2) • • Conversão entre binário e decimal Sistema de numeração hexadecimal e números hexadecimais (base 16) • Conversão entre hexadecimal e outras bases • Números octais (base 8) • Representação de números reais em binário • Operações aritméticas com números binários: • Soma, subtração, multiplicação e divisão • Complemento a 1 e complemento a 2 de números binários • Números binários com sinal • • Operações aritméticas com números binários com sinal Representação de dados alfanuméricos: códigos ASCII e Unicode 1 Sistema de Numeração Decimal • Forma de representação de números usada no dia-a-dia • 10 algarismos: 0 a 9 • Números decimais: números na base 10 • • Notação: 64710 Sistema posicional: • Posição de cada dígito em um número é associada a um peso • Valor do número: somatório dos dígitos multiplicados pelos pesos • Pesos dos dígitos de números inteiros, da direita para esquerda: • Base 10 ⇒ Potências de 10: ... 104 103 102 101 100 ... 10000 1000 100 10 1 2 Exemplos: Sistema de Numeração Decimal • 64710 = (6 × 102 ) + (4 × 101 ) + (7 × 100 ) = (6 × 100) + (4 × 10) + (7 × 1) = 600 + 40 + 7 • 1903910 = 3 Sistema de Numeração Binário • Forma de representação de nos usada em computadores e sistemas digitais • 2 algarismos: 0 e 1 • Números binários: números na base 2 • • Notação: 10012 Sistema posicional: • Posição de cada bit em um número é associada a um peso • Valor do número: somatório dos bits multiplicados pelos pesos • Pesos dos bits de números inteiros, da direita para esquerda: • Base 2 ⇒ Potências de 2: ... 210 29 28 27 26 25 24 23 22 21 20 ... 1024 512 256 128 64 32 16 8 4 2 1 4 Exemplos: Sistema de Numeração Binário • 10012 = (1 × 23 ) + (0 × 22 ) + (0 × 21 ) + (1 × 20 ) = (1 × 8) + (0 × 4) + (0 × 2) + (1 × 1) = 8 + 1 = 910 • 01001012 = 5 Contagem em Binário Contagem de 0 a 3 • Número Número Número Número decimal binário decimal binário 0 0 0 1 0 1 2 1 0 3 1 1 0 0 0 0 1 0 0 1 2 0 1 0 3 0 1 1 4 1 0 0 5 1 0 1 6 1 1 0 7 1 1 1 Com 2 bits: • • Contagem de 0 a 7 Representa 4 (22 ) valores diferentes: de 0 a 3 (22 − 1) Com 3 bits: • Representa valores diferentes: de 0 a 6 Contagem em Binário: de 0 a 15 Número decimal • Número binário 0 0 0 0 0 1 0 0 0 1 2 0 0 1 0 3 0 0 1 1 4 0 1 0 0 5 0 1 0 1 6 0 1 1 0 7 0 1 1 1 8 1 0 0 0 9 1 0 0 1 10 1 0 1 0 11 1 0 1 1 12 1 1 0 0 13 1 1 0 1 14 1 1 1 0 15 1 1 1 1 Com 4 bits: • Representa valores diferentes: de 0 a 7 Contagem em Binário: de 0 a 15 Número decimal Número binário 0 0 0 0 0 1 0 0 0 1 2 0 0 1 0 3 0 0 1 1 4 0 1 0 0 5 0 1 0 1 6 0 1 1 0 7 0 1 1 1 8 1 0 0 0 9 1 0 0 1 10 1 0 1 0 11 1 0 1 1 12 1 1 0 0 13 1 1 0 1 14 1 1 1 0 15 1 1 1 1 8 Sistema de Numeração Binário • • • • Com n bits: • Representa 2n valores diferentes • Conta de 0 a 2n − 1 Com n = 5 bits: • Representa 25 = 32 valores diferentes • Conta de 0 a 25 − 1 = 31 Com n = 6 bits: • Representa • Conta de valores diferentes a Com n = 10 bits: • Representa • Conta de valores diferentes a 9 Exemplos: Conversão de Binário para Decimal • 11011012 = (1 × 26 ) + (1 × 25 ) + (0 × 24 ) + (1 × 23 ) + (1 × 22 ) + (0 × 21 ) + (1 × 20 ) = (1 × 64) + (1 × 32) + (0 × 16) + (1 × 8) + (1 × 4) + (0 × 2) + (1 × 1) = 64 + 32 + 0 + 8 + 4 + 0 + 1 = 10910 1 1 0 1 1 0 12 bit mais significativo • bit menos significativo 1 0 0 1 0 0 0 12 10 Conversão de Decimal para Binário • • Método de sucessivas divisões por 2: • Divide número decimal por 2 • Continuamente, divide quociente por 2, até chegar no quociente 0 • Restos da divisão formam número binário • 1o resto: bit menos significativo • Último resto: bit mais significativo Exemplo: 1210 12 / 2 = 6 resto 0 6 / 2 = 3 resto 0 3 / 2 = 1 resto 1 1 / 2 = 0 resto 1 ⇐ bit menos significativo ⇐ bit mais significativo 1210 = 11002 11 Exemplos: Conversão de Decimal para Binário 4310 1910 12 Sistema de Numeração Hexadecimal • Forma compacta de representar números binários • 16 símbolos: • Números hexadecimais: números na base 16 • • 0a9 e A a F (valendo de 10 a 15) Notação: 1C16 ou 1Ch Sistema posicional: • Posição de cada dígito em um número é associada a um peso • Valor do número: somatório dos dígitos multiplicados pelos pesos • Pesos dos dígitos de números inteiros, da direita para esquerda: • Base 16 ⇒ Potências de 16: ... 165 164 163 162 161 160 ... ... ... 4096 256 16 1 13 Sistema de Numeração Hexadecimal • Exemplo: 1C16 = (1 × 161 ) + (C × 160 ) = (1 × 16) + (C × 1) = (1 × 16) + (12 × 1) = 16 + 12 = 2810 14 Contagem em Hexadecimal: de 0 a 15 Número Número Número decimal binário hexadecimal 0 0 0 0 0 0 1 0 0 0 1 1 2 0 0 1 0 2 3 0 0 1 1 3 4 0 1 0 0 4 5 0 1 0 1 5 6 0 1 1 0 6 7 0 1 1 1 7 8 1 0 0 0 8 9 1 0 0 1 9 10 1 0 1 0 A 11 1 0 1 1 B 12 1 1 0 0 C 13 1 1 0 1 D 14 1 1 1 0 E 15 1 1 1 1 F 15 Contagem em Hexadecimal Base Base Base Base Base 10 16 10 16 10 16 10 16 10 16 0 0 16 10 32 20 160 A0 240 F0 1 1 17 11 33 21 161 A1 241 F1 2 2 18 12 34 22 162 A2 242 F2 3 3 19 13 35 23 163 A3 243 F3 4 4 20 14 36 24 164 A4 244 F4 5 5 21 15 37 25 165 A5 245 F5 6 6 22 16 38 26 166 A6 246 F6 7 7 23 17 39 27 167 A7 247 F7 8 8 24 18 40 28 168 A8 248 F8 9 9 25 19 41 29 169 A9 249 F9 10 A 26 1A 42 2A 170 AA 250 FA 11 B 27 1B 43 2B 171 AB 251 FB 12 C 28 1C 44 2C 172 AC 252 FC 13 D 29 1D 45 2D 173 AD 253 FD 14 E 30 1E 46 2E 174 AE 254 FE 15 F 31 1F 47 2F 175 AF 255 FF ... ... 16 Conversão de Binário para Hexadecimal • Cada dígito hexadecimal corresponde a 4 bits • • 16 = 24 Método: • Quebra número binário em grupos de 4 bits, começando no bit menos significativo • • Substitui cada grupo de 4 bits pelo símbolo hexadecimal correspondente Exemplos: 1100 1010 0101 01112 11 1111 0001 0110 10012 C A 5 716 17 Conversão de Hexadecimal para Binário • Método inverso: • • Substitui cada dígito hexadecimal pelo grupo de 4 bits correspondente Exemplo: 1 0 A 416 1 0000 1010 01002 • Exemplos: C F 8 E16 9 7 4 A16 18 Conversão de Hexadecimal para Decimal • • 1o método: • Converter de hexadecimal para binário • Depois, converter de binário para decimal Exemplos: 1C16 = 0001 11002 A 8 516 = = 2 4 + 23 + 22 = 16 + 8 + 4 = 2810 19 Conversão de Hexadecimal para Decimal • 2o método: • • Usar potências de 16 Exemplo: B2F816 = (B × 163 ) + (2 × 162 ) + (F × 161 ) + (8 × 160 ) = (B × 4096) + (2 × 256) + (F × 16) + (8 × 1) = (11 × 4096) + (2 × 256) + (15 × 16) + (8 × 1) = 45056 + 512 + 240 + 8 = 4581610 20 Exemplo: Conversão de Hexadecimal para Decimal • E516 = 21 Conversão de Decimal para Hexadecimal • • 1o método: • Converter de decimal para binário • Depois, converter de binário para hexadecimal Exemplo: 65010 650 325 162 81 40 20 10 5 2 1 / / / / / / / / / / 2 2 2 2 2 2 2 2 2 2 = = = = = = = = = = 325 162 81 40 20 10 5 2 1 0 resto resto resto resto resto resto resto resto resto resto 0 1 0 1 0 0 0 1 0 1 10 1000 10102 2 8 A16 22 Conversão de Decimal para Hexadecimal • • 2o método: • Repetidas divisões por 16 até obter quociente 0 • Restos formam número hexadecimal Exemplo: 65010 650 / 16 = 40 resto 10 ⇒ A 40 / 16 = 2 resto 8 ⇒ 8 / 16 = 0 resto 2 ⇒ 2 2 ⇐ menos significativo ⇐ mais significativo 65010 = 28A16 23 Sistema de Numeração Octal • 8 símbolos: 0 a 7 • Números octais: números na base 8 • • Notação: 23748 Sistema posicional: • Posição de cada dígito em um número é associada a um peso • Valor do número: somatório dos dígitos multiplicados pelos pesos • Pesos dos dígitos de números inteiros, da direita para esquerda: • • Base 8 ⇒ Potências de 8: ... 84 83 82 81 80 ... ... 512 64 8 1 Exemplo: 23748 = (2 × 83 ) + (3 × 82 ) + (7 × 81 ) + (4 × 80 ) = (2 × 512) + (3 × 64) + (7 × 8) + (4 × 1) = 1024 + 192 + 56 + 4 = 127610 24 Representação de Números Reais na Base 10 • Sistema de numeração decimal: • Digitos à esquerda do ponto decimal: potências de 10 positivas • Digitos à direita do ponto decimal: potências de 10 negativas , ... ... 101 100 10−1 10−2 10−3 ... 1000 100 10 1 1 10 1 100 1 1000 ... 1000 100 10 1 0, 1 0, 01 0, 001 ... ... 103 ... ... 102 25 Exemplo: Representação de Números Reais na Base 10 • 243, 7510 = (2 × 102 ) + (4 × 101 ) + (3 × 100 ) + (7 × 10−1 ) + (5 × 10−2 ) = (2 × 100) + (4 × 10) + (3 × 1) + (7 × 0, 1) + (5 × 0, 01) = 200 + 40 + 3 + 0, 7 + 0, 05 = 243, 75 26 Representação de Números Reais na Base 2 • Sistema de numeração binário: • Bits à esquerda do ponto binário: potências de 2 positivas • Bits à direita do ponto binário: por potências de 2 negativas , ... ... ... 23 22 21 20 2−1 2−2 2−3 ... ... 8 4 2 1 1 2 1 4 1 8 ... ... 8 4 2 1 0, 5 0, 25 0, 125 ... 27 Exemplos: Representação de Números Reais na Base 2 • 1010, 112 = (1 × 23 ) + (1 × 21 ) + (1 × 2−1 ) + (1 × 2−2 ) = (1 × 8) + (1 × 2) + (1 × 0, 5) + (1 × 0, 25) = 8 + 2 + 0, 5 + 0, 25 = 10, 7510 • • Conversão de números reais de binário para decimal 11, 0112 = 28 Conversão de Números Reais de Decimal para Binário • Método de sucessivas multiplicações por 2: • Multiplica parte fracionária do número por 2 • Continuamente, multiplica parte fracionária do resultado por 2, até chegar no resultado 1 (parte fracionária com zeros) ou quando o número desejado de casas decimais for alcançado • • Parte inteira dos resultados formam número binário • 1o resultado: bit mais significativo • Último resultado: bit menos significativo Exemplo: 4, 312510 = 100.01012 • Parte inteira: 410 = 1002 • Parte fracionária: 0, 312510 = 0.01012 0, 3125 0, 625 0, 25 0, 5 × × × × 2 2 2 2 = = = = 0, 625 1, 25 0, 5 1 parte inteira parte inteira parte inteira parte inteira 0 ⇐ bit mais significativo 1 0 1 ⇐ bit menos significativo 29 Exemplo: Conversão de Números Reais de Decimal para Binário • 3, 687510 = 30