ARQUITETURA DE COMPUTADORES Sistema de Numeração Prof Daves Martins Msc Computação de Alto Desempenho Email: [email protected] Sistemas Numéricos • Principais sistemas numéricos: • Decimal • 0, 1, ..., 9 • Binário • 0, 1 • Octal • 0, 1, ..., 7 • Hexadecimal • 0, 1, ..., 9, A, B, C, D, E, F •É importante atentar que no sistema hexadecimal, as letras de A até F equivalem, em decimal, a 10, 11, 12, 13, 14 e 15, respectivamente Conversão Base X – Base 10 • Processo: soma de multiplicações • numd = anxn + an-1xn-1 + ... + a0x0 • Exemplos, converter para a base 10: • 10112 • 4A3B16 •72718 Conversão Base X – Base 10 • numd = anxn + an-1xn-1 + ... + a0x0 • Binário – Decimal: 10112 • 1 * 23 + 0 * 2 2 + 1 * 2 1 + 1 * 2 0 • 1 * 8 + 0 * 4 + 1 * 2 + 1 * 1 = 1110 • Octal– Decimal: 72718 • 7 * 8 3 + 2 * 82 + 7 * 8 1 + 1 * 8 0 • 7 * 512 + 2 * 64 + 7 * 8 + 1 * 1 = 376910 • Hexadecimal – Decimal: 4A3B16 • 4 * 163 + A * 162 + 3 * 161 + B * 160 • 4 * 163 + 10 * 162 + 3 * 161 + 11 * 160 • 4 * 4096 + 10 * 256 + 3 * 16 + 11 * 1 = 1900310 Conversão Base X – Base 10 • Exercícios, converter para a base 10: • 11002 • 01112 • ABCD16 •A8B216 Respostas •Respostas ao exercício anterior: • 11002 = 12 10 • 01112 = 7 10 • ABCD16 = 43981 10 •A8B216 = 43186 10 Conversão Base 10 – Base X • num1d r1 x num2d r2 x num3d numn-1d rn-1 numix = rnx...r2xr1x x rn Conversão Base 10 – Base X • Exemplo, converter 5310 para binário: 53 2 Momento de Parar: quando 1 26 2 o quociente é menor do que 0 13 2 o valor da base 1 6 2 Neste caso, o valor da base 0 3 2 é “2” 1 1 1101012 Conversão Base 10 – Base X • Exemplo, converter 101610 para hexadecimal: 1016 16 8 63 16 15 3 3F816 •Exemplo, converter 5310 para hexadecimal: 53 16 5 3 3516 Conversão Base 10 – Base X • Exercícios, converter da base 10: • para binário, 25 • para hexadecimal, 156 Conversão Base 10 – Base X • Respostas • 25 10 = 11001 • 156 10 = 9C 16 2 Adição e subtração em binár – Somamos por colunas à partir da direita, temos 8+5=13, como a soma excedeu o maior dígito disponível, usamos a regra do transporte para a próxima coluna. – Assim, dizemos que dá 3 e “vai um”. – Este transporte “vai um” é computado na soma da próxima coluna, que passa a ser 8+1+1=10, novamente usamos o transporte e dizemos que dá 0 e “vai um” abrindo uma nova coluna que é 0+0+1=1. – Obtemos desta forma o resultado 103. Adição e subtração em binár • Vamos agora para o sistema base 2, como temos apenas dois dígitos, vamos verificar quais os possíveis casos que ocorrerão na soma por colunas: 0 +0 0 a) b) 0 +1 1 1 +0 1 c) 1 +1 10 d) e) 1 1 +1 11 • Nos casos “a”,”b” e “c” não houve transporte. Adição e subtração em binár • No caso “d” houve transporte, o resultado é 0 e “vai um” e no caso “e” realizamos a soma de três parcelas incluindo um transporte, o resultado é 1 e “vai um”. • Vamos agora efetuar 11012+10112, temos: 1 1 1 1101 +1011 11000 Adição e subtração em binár • Outro exemplo, efetuar 111012 + 10012 1 1 11101 + 1001 100110 • Ainda outro exemplo, efetuar 1012+1112+102 1 1 101 111 + 10 1110 Adição e subtração em binár • Subtração no sistema binário • Como o método também é análogo ao da subtração no sistema decimal, vamos ver quais os possíveis casos que ocorrerão na subtração por colunas. a) 0 -0 0 b) 0 -1 1 c) 1 -0 1 d) 1 -1 0 Adição e subtração em binár • No caso “b”, o resultado será 1, mas ocorrerá um transporte para a coluna seguinte, que deve ser acumulado no subtraendo. • Exemplificando, vamos efetuar 11102 – 10012 1110 1 -1001 0101 Adição e subtração em binár • Outro exemplo, vamos efetuar 11000- 101 11000 1 1 1 - 101 10011 • Multiplicação no sistema binário • Novamente análoga ao caso decimal. Agora os casos possíveis são: a) 0x0 = 0 b) 0x1 = 0 c) 1x0 = 0 e d) 1x1 = 1 Adição e subtração em binár • Exemplificando, efetuar 111102 x 112 11110 x 11 1 1 1 11110 11110+ 1011010 Adição e subtração em binár • Outro exemplo, efetuar 11012 x 102 1101 x 10 0000 1101+ 11010 Tipos de dados tratados pelo computador • Dados e as instruções armazenados em memória – são codificados sob a forma de sinais elétricos do tipo ligado e desligado • representado pelos números 1 e 0 • sistema binário – cada unidade de informação é chamada de bit • abreviação de Binary digit Tipos de dados tratados pelo computador • Unindo dois ou mais bits – Um bit pode representar dois valores: 1 ou 0, ou então verdadeiro ou falso – Pode-se unir dois ou mais bits para representar mais de dois valores • quantidade de valores representáveis por uma sequência de n bits é de 2n – Algumas strings de bits têm nomes próprio: • • • • • uma sequência de 8 bits são chamados de byte uma sequência de 4 bits é chamada de nibble um grupo de 16 bits é chamado de word um grupo de 32 bits é chamado de double word um grupo de 64 bits é chamado de quad word Tipos de dados tratados pelo computador • K = 1024 – Na vida cotidiana e na física, o "k" vale 1000 • 1 km = 1000 metros • 1 kg = 1000 gramas • 1 kV = 1000 volts – Número 1024 foi o escolhido para representar o "k" da computação • por razões de simplificação de hardware • M = 1024 K – "M" normalmente vale 1.000.000, na computação vale: • 1 M = 1024 k = 1024x1024 = 1.048.576 • G = 1024 M – "G" que normalmente vale 1 bilhão, na computação vale • 1 G = 1024 M = 1024x1024x1024 = 1.073.741.824 Representação de Caracteres • Um caractere normalmente é representado por um byte – maioria dos códigos alfanuméricos representam caractere através de um byte – código ASCII a letra 'A' é representada pelo byte “0100 0001“ – uma sequência de caracteres é expressa por uma cadeia de bytes sucessivos – Nem todos os tipos de códigos utilizam os 8 bits de um byte para a representação de caracteres • Representação de Caracteres Código de 7 bits (ASCII) – apareceu com as linguagens de alto nível Representação de Caracteres • ASCII Estendido – caracteres extras representam caracteres de línguas mortas e caracteres especiais para desenhas figures Representação Interna de Números • Representação de Números Inteiros – Representação de números não sinalizados • utiliza-se normalmente o valor do próprio número binário – número 6 é representado por 0101 – número 12 é representado por 1100 – Representação de números sinalizados • • • • módulo e sinal (MS) complemento de 1 (C-1) complemento de 2 (C-2) excesso de 2 elevado a (N-1) Representação Interna de Números • Módulo e Sinal (MS) – Bit que está situado mais à esquerda representa o sinal • valor será 0 para o sinal + e 1 para o sinal - – Bits restantes (N-1) representam o módulo do número – Exemplo • supondo que exista a limitação de 8 bits (N=8) – valor 00101010 representa o número +42 – valor 10101010 representa o número -42 – Amplitude (faixa) de representação para N bits • • • • -2N-1+1 ≤ X ≤ 2N-1-1 Para 8 bits (byte): -127 ≤ X ≤ 127 Para 16 bits (word): -32767 ≤ X ≤ 32767 Para 32 bits (double word): -2147483647 ≤ X ≤ 2147483647 Representação Interna de Números • Módulo e Sinal (MS) – Vantagem deste sistema • possuir faixa simétrica – Deficiências • possui duas representações para o número 0 – para 8 bits: 00000000 (+0) e 1000000 (-0) – Problema da Soma Representação Interna de Números • Vamos ver alguns exemplos: – Representar em binários sinal-módulo os números 2310 , -1510 , 1110 e -910 usando palavras de 8 bits. 2310 = 101112 usando 8 bits temos: 000101112 1510 = 11112 usando 8 bits temos: 000011112 como o sinal é negativo vem –1510 = 100011112. 1110 = 10112 usando 8 bits temos: 000010112 910 = 10012 usando 8 bits temos: 000010012 , como o sinal é negativo vem –910 = 100010012 Representação Interna de Números • Complemento de 1 (C-1) – Utiliza o bit mais à esquerda para o sinal • 0 ao sinal + e o 1 ao sinal - – Números positivos • N-1 bits da direita representam o módulo (como no MS) – Números negativos • obtidos pelo complemento de todos os seus dígitos (trocando 0 por 1 e vice-versa) incluindo o bit de sinal – Exemplo • supondo que exista a limitação de 8 bits (N=8) • valor 00101010 representa o número +42 • valor 11010101 representa o número -42 Representação Interna de Números • Complemento de 1 (C-1) – Mesma faixa de representação para N dígitos do método MC • -2N-1+1 ≤ X ≤ 2N-1-1 – Desvantagem • tem duas representações para o número 0 – 00000000 (+0) e 11111111 (-0) Representação Interna de Números Ocorre porque há duas representações para o zero: -0 e +0 Representação Interna de Números Representação Interna de Números • 1 + 255 = 0 • Significa que... • 0 – 1 = 255 ( 11111111b) • E que... • 0 – 2 = 254 (11111110b) • 0 – 3 = 253 (11111101b) • 0 – 4 = 252 (11111100b) • ... • 0 – 127 = 129 (10000001b) • 0 – 128 = 128 (10000000b) Representação Interna de Números • Complemento de 2 (C-2) – Utiliza o bit mais à esquerda para o sinal • 0 ao sinal + e o 1 ao sinal - – Números positivos • N-1 dígitos da direita representam o módulo – Números negativos • executa-se o Complemento de 1: obtém-se o complemento de todos os bits do número positivo (trocando 0 por 1 e vice-versa) incluindo o bit do sinal • Ao resultado obtido soma-se 1 (em binário), desprezando-se o último transporte (se existir) – O mais utilizado para representar números negativos Representação Interna de Números • Por questões de convenção e eficiência, utiliza-se a notação de complemento a 2 para se trabalhar com números binários no computador • Utilizando esta notação, a subtração é uma soma. Por exemplo: 7 – 5 seria 7 + (-5) • Embora seja uma alteração sutil, faz uma enorme diferença para o computador • Números que tenham o bit mais à esquerda 1 são negativos. Os que tiverem 0 neste bit, serão positivos • Para trabalhar com complemento a 2, é necessário saber a quantidade de bits que os números devem ter. Isto varia de acordo com o processador. Caso o resultado exceda esta quantidade de bits, o bit mais à esquerda é desprezado • Deve-se proceder da seguinte maneira: – Os números negativos devem ter seus bits invertidos – Soma-se 1 ao valor obtido Representação Interna de Números • Complemento de 2 (C-2) – Faixa de representação é assimétrica (inconveniente) • -2N-1 ≤ X ≤ 2N-1-1 • Para 8 bits (byte): -128 ≤ X ≤ 127 • Para 16 bits (word): -32768 ≤ X ≤ 32767 • Para 32 bits (double word): -2147483648 ≤ X ≤ 2147483647 – Vantagem • uma única representação para o número 0 • Para 8 bits, teremos: 00000000 Representação Interna de Números • Complemento de 2 (C-2) 39 Representação Interna de Números 40 Representação Interna de Números Exemplo • Faça 10 – 5 utilizando complemento a 2. Suponha que seu processador trabalhe com números de 5 bits • Na verdade, deve-se fazer 10 + (-5) • 10, em binário é: 01010 • 5 em binário é: 00101 • Aplicando o complemento a 2, obteremos -5: – 00101. Invertendo seus bits, temos: 11010 – Fazendo 11010 + 1, temos 11011 • Agora, basta somar: 01010 + 11011. Assim, obtemos 100101. Como o processador é de 5 bits, o bit mais à esquerda a mais será desprezado. Assim, o número que obtive como resultado foi 00101. De fato, o resultado é 5. Representação Interna de Números • Vamos exemplificar obtendo os complementos de 2 dos números binários abaixo: binário 10001001 00111100 10011111 11000101 01101011 compl de 1 01110110 11000011 01100000 00111010 10010100 compl de 2 01110111 11000100 01100001 00111011 10010101 • Exercícios • Efetue as operações binárias a) d) f) i) • 10001+1111 b) 1110+1001011 110101+1011001+1111110 10101-1110 g) 100000-11100 11001x101 j) 11110x110 c) 1011+ 11100 e) 1100+1001011+11101 h) 1011001-11011 k) 11110x111 Represente os números em notação sinal-módulo 8bits a) 97 b) -121 c) 79 d) -101 • Represente os números do exercício anterior em complemento de 2. • Efetue as operações utilizando complemento de 2. a) 111100-11101011 b) 101101-100111 c) 758-308 Overflow e underflow • Os números manipulados – grande demais para ser representados provocam um overflow. – pequeno demais para ser representados provocam um underflow. • Os sistemas têm feedback diferentes em caso de over ou underflow. Certos param a execução, certos dão uma mensagem e outros representam o número de uma forma especifica. Notação em Ponto Flutuante • • • • • • • Como guardar esse número? 65340000000000000000000000000000 Pode ser reescrito assim: 6,534 * 10+31 O que significa * 10+31 ? Significa que tenho que mudar a vírgula de lugar para obter o número real No caso, preciso andar 31 casas à direita Notação científica ou Notação em Ponto Flutuante Notação em Ponto Flutuante • • • • • • É comum especificar esses números assim: 6,534 * 10+31 → 6,534E31 6,534 * 10-31 → 6,534E-31 Repare que essa representação tem 3 partes 6,534E-31 Quais são os nomes destas partes? 6,534E-31 • Característica • Mantissa • Expoente Notação em Ponto Flutuant Intervalo normalizado aproximado: 2–126 a 2127. também chamado de short real. Irvine, Kip R. Assembly Language for Intel-Based Computers 5/e, 2007. Notação em Ponto Flutuant • • • Sinal – 1 = negativo, 0 = positivo Significando – Dígitos decimais à esquerda e à direita do ponto decimal – Notação posicional ponderada – Exemplo: 123.154 = (1 x 102) + (2 x 101) + (3 x 100) + (1 x 10–1) + (5 x 10–2) + (4 x 10–3) Expoente – Inteiros sem sinal – bias inteiro (127 para precisão simples) Irvine, Kip R. Assembly Language for Intel-Based Computers 5/e, 2007. Notação em Ponto Flutuant Irvine, Kip R. Assembly Language for Intel-Based Computers 5/e, 2007. Notação em Ponto Flutuant • A mantissa é normalizada quando um 1 aparece à esquerda do ponto binário • Não-normalizado: o ponto binário pode variar até que o expoente seja zero • Exemplos Irvine, Kip R. Assembly Language for Intel-Based Computers 5/e, 2007. 50 Notação em Ponto Flutuante • • • • Será que isso funciona com binários? 10110000000000000000000000000000b Pode ser reescrito assim: 1,011b * 2+31 Assumimos que a característica é sempre 1b Notação em Ponto Flutuante Notação em Ponto Flutuante Conversão números fracionários/binário e binários/fracionários Notação em Ponto Flutuante Conversão números fracionários/binário e binários/fracionários Notação em Ponto Flutuante • Vamos representar o número 2,25 nessa notação • Primeiro vamos converter para binário • Parte inteira: • 2 = 10b • Parte fracionária: • 0,25 = 0,01b • Logo... 2,25 = 10,01b • Em notação científica: • 10,01b = 1,001b * 21 Notação em Ponto Flutuante • • Usar 8 bits é didático, mas muito limitado para a prática • Até meados dos anos 1980, cada fabricante de computador tinha seu próprio formato para representar números em ponto flutuante. Solução: criação do Padrão 754 (IEEE 1985). O Padrão IEEE 754 procurou uniformizar a maneira como as diferentes máquinas representam os números em ponto flutuante, bem como devem operá-los. O padrão IEEE 754 para ponto (vírgula) flutuante é a representação mais comum para números reais em computadores de hoje, incluindo PC's compatíveis com Intel, Macintosh, e a maioria das plataformas Unix/Linux. • • • • Notação em Ponto Flutuante O padrão IEEE 754 define três formatos: – Precisão simples (32 bits) – Precisão dupla (64 bits) – Precisão estendida (80 bits) Notação em Ponto Flutuante • Por que aumentar mais os bits de mantissa que os de expoente? Notação em Ponto Flutuante Exercícios Exercícios Exercícios • 1. Represente o número 273,5234 segundo padrão IEEE de 32 bits • 2. Converta o número obtido acima para decimal. • 3. Escreva a palavra Abacaxi como o computador a vê, isto é, usando os códigos ASCII dos caracteres. Use a notação hexadecimal Exercícios • 1. Efetue a soma computacional binaria 123 + (418). – A) utilizando a representação MS – B) utilizando a representação C1 – C) utilizando a representação C2 • Ao final converta os resultado para decimal. Exercícios (Questão 1 – Petrobrás – Analista de Sistemas Júnior – Engenharia de Software – ano 2010) Ao converter o número (1011100)2 da base binária para as bases decimal, hexadecimal e octal, obtêm-se, respectivamente, os valores: a) 2910, B416 e 5608 b) 2910, 5C16 e 1348 c) 9210, B416 e 5608 d) 9210, 5C16 e 1348 e) 9210, 5C16 e 2708 Exercícios (Questão 22 – BADESC – Análise de Sistemas – ano 2010) O sistema binário representa a base para o funcionamento dos computadores. Assim, um odômetro binário mostra no display o número 10101111. A representação desse número em decimal e em hexadecimal e o próximo número binário mostrado no display, serão, respectivamente: a) 175, AE e 10101110 b) 175, EF e 10110000 c) 175, AF e 10110000 d) 191, EA e 10110000 e) 191, FA e 10101110 Exercícios (Questão 34 – TRT – Analista Judiciário – Tecnologia da Informação – ano 2011) Considere o quadro abaixo: Exercícios (Questão 22 – Petrobrás – Analista de Sistemas Júnior – Suporte de Infraestrutura – ano 2005) Um computador utiliza representação de inteiros em complemento a dois (C2) com valores armazenados em 8 bits. Indique qual é a representação em C2 do valor decimal -123. a) 10000101 b) 10000100 c) 01111011 1111011 Binário d) 11111011 0000100 C1 e) 10000111 + 1 ---------------------0000101 acrescentar o sinal 10000101 Exercícios (Questão 31 – CESGRANRIO - 2013 - BNDES - Profissional Básico - Análise d – Desenvolvimento) Muitas vezes é necessário converter a representação de um número inteiro com n bits para sua representação com m bits, onde m > n. Se a representação em complemento de dois com 8 bits do número inteiro positivo +19 é 00010011, a representação em complemento de dois com 16 bits do número inteiro negativo -19 é a) 1000000000010011 b) 1000000011101101 c) 1000000010010011 d) 1111111111101101 e) 1111111100010011 Exercícios (CESPE - 2009 - ANAC - Analista Administrativo - Tecnologia da Inform ) Considere que os números, em decimal, A = -345 e B = +239 sejam convertidos para a representação em complemento a 2, usando-se registradores de 16 bits. Qual o resultado da operação A – B, demonstre os cálculos. 1111110110111000. OBRIGADO!