S is temas numéricos e a R epres entação Interna dos Dados no C omputador Ricardo Azambuja Silveira INE-CTC-UFSC E-Mail: [email protected] URL: http://www.inf.ufsc.br~silveira Material elaborado pelo prof Roberto Willrich Conteúdo do Capítulo – Sistemas numéricos • Binário, octal, hexadecimal • Operações aritméticas binária e hexadecimal • Operações lógicas binárias e decimais – Tipos de dados tratados pelo computador - 03/05/06 • bit, nibble, byte, word, double word, quad word – Representação interna de caracteres – Representação interna de números – Representação digital de áudio, imagem e 2/32 vídeo Sistemas Numéricos • Sistemas numéricos – Sistemas de notação usados para representar quantidades abstratas denominadas números – São definido pela base que utiliza • base = número de símbolos diferentes (algarismos) necessários para representar um número qualquer INE5602 - 03/05/06 • Sistema Decimal – Dez símbolos diferentes ou dígitos para representar um número (0, 1, 2, 3, 4, 5, 6, 7, 8, 9) – Um sistema numérico de base 10 3/32 Sistemas Numéricos • Sistema de Número Posicional – Número é representado por uma seqüência de dígitos onde cada posição de dígito tem um peso associado – No sistema decimal • Valor de d3d2d1d0 - 03/05/06 – d3*103 + d2*102+ d1*101 + d0*100 – Cada dígito di tem um peso de 10i • Exemplo: 3.098.323 – representação de 3*106+0*105+9*104+8*103+3*102+2*101+3*100 4/32 Sistema Octal • Sistema Octal ou Base 8 – Apresenta oito dígitos: 0, 1, 2, 3, 4, 5, 6, 7 – Contagem é realizada como segue: 0, 1, 2, 3, 4, 5, 6, 7, 10, 11, 12, 13, 14, 15, 16, 17, 20,... • Conversão Octal para Decimal – Valor de um número octal de 4 dígitos o3o2o1o0 • o3*83 + o2*82+ o1*81 + o0*80 - 03/05/06 • Cada dígito oi tem um peso de 8i – Valor octal 175o • 5*1+7*8+1*64 = 125d 5/32 Sistema Octal • Exercício: Qual é a representação Decimal de 2154o? – Valor de um número octal de 3 dígitos o2o1o0 • o3*83+ o2*82+ o1*81 + o0*80 2154o - 03/05/06 = 2*521+1*82+5*81+4*80 = 1024+64+40+4=1132 6/32 Sistema Octal • Conversão Decimal para Octal – Sistema decimal: • 654 = 4 unidades, 5 dezenas e 6 centenas • Para verificar isto, divide-se o número pela sua base (que é 10): 654/10 = 65 Resto 4 (*1) /10 = 6 Resto 5 (*10) /10 = 0 Resto 6 (*100) – Para converter Decimal para Octal basta dividir por 8 - 03/05/06 • 200d 200/8= 25 25/8 = 3 3/8 = 0 Resto 0 Resto 1 Resto 3 200d=310o • Exercício: Qual é o valor na base 8 do número 1534d? 7/32 Sistema Binário • Sistema Binário (Base 2) – Apresenta unicamente dois dígitos: 0,1 – Contagem é realizada como segue: 0, 1, 10, 11, 100, 101, 110, 111, 1000, ... • Conversão Binário para Decimal – Valor de um número binário de 8 dígitos b7b6b5b4b3b2b1b0 • b7*27 + b6*26+ b5*25 + b4*24 + d3*23 + d2*22+ d1*21 + d0*20 • dígito bi tem um peso de 2i - 03/05/06 – Valor binário 10101010b • 10101010b = 0*1+1*2+0*4+1*8+0*16+1*32+0*64+1*128 = 170d – Exercício: Qual é o valor decimal de 10001b 8/32 Sistema Binário • Conversão Decimal para Binário – Mesmo processo para conversão de decimal para octal, mas dividindo por 2 • 200d 200/2=100 Resto 0 100/2= 50 Resto 0 50/2 = 25 Resto 0 - 03/05/06 25/2 = 12 Resto 1 12/2 = 6 Resto 0 6/2 = 3 Resto 0 3/2 = 1 Resto 1 1/2 = 0 Resto 1 = 1 1 0 0 1 0 0 0b 9/32 Sistema Hexadecimal • Sistema Hexadecimal – Na base hexadecimal tem-se 16 dígitos • 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, • A, B, C, D, E, F – Representam os números 10d a 15d – Contamos os dígitos hexadecimais - 03/05/06 • 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F, 10, 11, 12, ..., 19, 1A, 1B, 1C, 1D, 1E, 1F, 20, 21, ... 10/32 Sistema Hexadecimal • Conversão Binário para Hexadecimal – Exemplo: 101011b (1+2+8+32=43d) – Passo 1: dividir o número binário em grupos de 4 bits (da direita para a esquerda) • 0010; 1011 – Passo 2: tomar cada grupo como um número independente e converter em dígitos decimais - 03/05/06 • 0010;1011=2;11 – Passo 3: substituir todos os números decimais maiores que 9 pelas suas respectivas representações em hexadecimal • 00101011b = 2Bh • Conversão Hexadecimal para Binário – Inverter os passos 11/32 Sistema Hexadecimal • Conversão Hexadecimal em Decimal – Mesma fórmula utilizada na conversão binário para decimal • sendo que a base 2 é trocada por 16 – Converter B2Ah em decimal: B -> 11*162 = 2816d 2 -> 2*161 = 32d A -> 10*160 = 10d - 03/05/06 2858d 12/32 Sistema Hexadecimal • Conversão Decimal para Hexadecimal – Mesma fórmula utilizada na conversão de um número decimal para binário • dividindo por 16 em vez de 2 – Converter 1069d em hexadecimal 1069/16 = 66 Resto 13d = Dh 66/16 = 4 Resto 2d = 2h 4/16 = 0 Resto 4d = 4h = 42Dh - 03/05/06 1069d 13/32 Operações Aritméticas: Aritmética Binária • Adição binária – Fazem-se as contas coluna a coluna, da direita para a esquerda, fazendo o transporte de um (<e vai um>) quando for o caso – Observando-se as seguintes operações básicas: • 0+0=0 • 0+1=1 - 03/05/06 • 1 + 1 = 10 (1 mais 1 é igual a 0 e vai 1) • 1 + 1 + 1 = 11 (1 mais 1 mais 1 é igual a 1 e vai 1) – Exemplos 1 1 101 +1101 10 010 11 11001 +10011 101 100 14/32 Operações Aritméticas: Aritmética Binária • Subtração binária – Como o conjunto de símbolos contém apenas 2 dígitos • ao se efetuar a subtração parcial entre 2 dígitos • se o segundo (diminuidor) exceder o primeiro (diminuendo) – subtrai-se uma unidade ao dígito imediatamente à esquerda no diminuendo (se existir e o seu valor for 1), convertendo-o a 0 » substituímos o diminuendo por 10b (2d) – Se o dígito imediatamente à esquerda for 0 - 03/05/06 » procura-se nos dígitos consecutivos 15/32 Operações Aritméticas: Aritmética Binária • Subtração binária – Exemplos: 11101 – 111 - 03/05/06 2 0 02 11101 -111 10110 – Exercício: 100001-101 16/32 Operações Aritméticas: Aritmética Binária • Multiplicação – Semelhante à multiplicação decimal • exceto pelo fato da soma final dos produtos se fazer em binário – As seguintes igualdades devem ser respeitadas: • 0*0=0; 0*1=0; 1*0=0; 1*1=1 - 03/05/06 – Exemplos: multiplicar os números 1011 e 1101 – Exercício: multiplicar 10101 e 101 17/32 Operações Aritméticas: Aritmética Binária • Divisão – Pode ser feita de maneira idêntica à divisão decimal - 03/05/06 • exceto pelo fato das multiplicações e subtrações internas ao processo serem feitas em binário 18/32 Operações Aritméticas: Aritmética Binária - 03/05/06 • Divisão 19/32 Operações Aritméticas Hexadecimal • Adição – Exemplo: 8+5 • em decimal, o valor seria 13 • em hexadecimal, o valor 13 é representado por Dh – Sempre que o resultado ultrapassar a base • subtraímos a base do resultado e “vai-um” • Exemplo: 19+9 - 03/05/06 – em decimal, o resultado de 9+9 é 18 – como o valor ultrapassa a base, subtraímos esta do resultado: 1816=2 – fazendo o transporte para a coluna seguinte obtemos o resultado: 22h 20/32 Operações Aritméticas Hexadecimal • Subtração – A partir de um exemplo: 27h-1Eh – Efetuamos a operação de subtração coluna a coluna • primeira coluna o diminuidor (E) é superior ao diminuendo (7) - 03/05/06 – então adicionamos a base ao diminuendo, executamos a subtração, e há transporte de uma unidade que somamos ao diminuidor da coluna seguinte 11 27h -1Eh 0 9h 21/32 Operações Aritméticas Hexadecimal • Multiplicação - 03/05/06 – Esta operação pode fazer-se facilmente por meio da tabela de dupla entrada 22/32 Operações Aritméticas Hexadecimal • Divisão – Exemplos - 03/05/06 • 2Fh/12h 23/32 Operações Lógicas • Operações lógicas com bits – AND • operação que aceita dois operandos – operando são binários simples (base 2) • operação AND é – 0 and 0 = 0 - 03/05/06 – 0 and 1 = 0 – 1 and 0 = 0 – 1 and 1 = 1 • Em português: – “se o primeiro operando é 1 e o segundo operando é 1, o resultado é 1, senão o resultado é 0” 24/32 Operações Lógicas • Operações lógicas com bits – AND - 03/05/06 • tabela verdade Op1 Op2 Op1 AND Op2 0 0 0 0 1 0 1 0 0 1 1 1 25/32 Operações Lógicas • Operações lógicas com bits – OR • operação que aceita dois operandos – operando são binários simples (base 2) • operação OR é - 03/05/06 – – – – 0 or 0 = 0 0 or 1 = 1 1 or 0 = 1 1 or 1 = 1 • Em português: – “se o primeiro operando é 1 ou o segundo operando é 1 (ou os dois), o resultado é 1, senão o resultado é 0” • Conhecido com OR-INCLUSIVE 26/32 Operações Lógicas • Operações lógicas com bits – OR - 03/05/06 • tabela verdade Op1 Op2 Op1 OR Op2 0 0 0 0 1 1 1 0 1 1 1 1 27/32 Operações Lógicas • Operações lógicas com bits – XOR • operação que aceita dois operandos – operando são binários simples (base 2) • operação OR é – 0 xor 0 = 0 - 03/05/06 – 0 xor 1 = 1 – 1 xor 0 = 1 – 1 xor 1 = 0 • Em português: – “Se o primeiro operando ou o segundo operando, mas não os dois, for 1, o resultado é 1, senão o 28/32 Operações Lógicas • Operações lógicas com bits – XOR - 03/05/06 • tabela verdade Op1 Op2 Op1 XOR Op2 0 0 0 0 1 1 1 0 1 1 1 0 29/32 Operações Lógicas • Operações lógicas com bits – NOT • operação que aceita um operando • operando é binário simples (base 2) • operação NOT é – not 0 = 1 - 03/05/06 – not 1 = 0 • Em português: – “Se o operando for 1, o resultado é 0, senão o resultado é 1” 30/32 Operações Lógicas • Operações lógicas com bits – NOT • tabela verdade NOT Op1 0 1 1 0 - 03/05/06 Op1 31/32 Operações Lógicas • Operações Lógicas com números – As operações lógicas trabalham apenas com operandos com bit único • Para realizar estas operações sobre um número (8, 16, 32 bits) é necessário realizar a operação bit-a-bit – Exemplo: operação lógica AND com dois operandos de 8 bits - 03/05/06 AND 1011 0101 1110 1110 1010 0100 – Como as operações lógicas são definidos em termos de valores binários, deve-se converter os números decimais, hexadecimais, etc., para números binários antes de realizar as operações lógicas 32/32