capítulo 1 bases numéricas Os números são representados no sistema decimal, mas os computadores utilizam o sistema binário. Embora empreguem símbolos distintos, os dois sistemas formam números a partir das mesmas regras e podem ser facilmente convertidos entre si. De fato, os números podem ser representados em qualquer base maior ou igual a dois, e essas representações podem ser facilmente convertidas de uma frase para outra. Os principais métodos de conversão, baseados em aritmética decimal, são apresentados neste capítulo.
2 Fundamentos de Arquitetura de Computadores 1.1 introdução Quando o homem aprendeu a contar, ele foi obrigado a desenvolver símbolos que representassem as quantidades e grandezas que ele queria utilizar. Esses símbolos, os algarismos, constituem a base dos sistemas de numeração. Nos tempos pré-históricos o homem utilizou uma correspondência um para um entre os objetos a serem contados e os seus dedos, ou então para pedrinhas ou mesmo para riscos. Um sistema deste tipo seria um sistema unário (com um único símbolo): Os primeiros algarismos encontrados consistiam em marcas horizontais ou verticais (como as mostradas) com traços de ligação entre elas para definir as quantidades superiores a um. Os símbolos romanos básicos podem ser considerados como uma evolução desse sistema. Os algarismos romanos são basicamente aditivos: assim, por exemplo, III = I + I + I. Para facilitar a representação de grandes quantidades, foram introduzidos símbolos especiais para grupos: I = 1 V = 5 X = 10 L = 50 C = 100 D = 500 M = 1000 Além disso, havia uma série de regras (como a posição relativa dos símbolos aos seus vizinhos), que permitiam interpretar estes símbolos e determinar o número que estava sendo representado: VI = 5 + 1 = 6 CXVI = 100 + 10 + 5 + 1 = 116 IV = 5 1 = 4 MCMLIX = 1000 + (1000 100) + 50 + (10 1) = 1959 A realização de cálculos com este sistema, especialmente para operações como multiplicação e divisão, era extremamente complexa e de aplicação praticamente impossível. Posteriormente, os árabes utilizaram um sistema originário da Índia, que possuía 10 algarismos (0 a 9), com os seguintes símbolos (da esquerda para a direita, 1234567890):
Capítulo 1 Bases Numéricas 3 Este sistema começou a ser utilizado na Europa no século 12 e é conhecido atualmente como sistema de numeração arábica (mas com outros algarismos), destacando-se pelas seguintes características: existe um símbolo para o valor nulo. cada algarismo utilizado é uma unidade maior que o seu predecessor. a notação é posicional, ou seja, o valor de um algarismo é determinado pela sua posição dentro do número. Cada posição possui um determinado peso. 1.2 representação de números Os sistemas atuais formam os números pela fórmula a seguir, em que a representa o número propriamente dito, B, a base do sistema de numeração (B 2), x i, os algarismos (0 x i <B), e o intervalo de m a n 1, o número de posições utilizadas. Com B=10 tem-se o sistema decimal. O algarismo x i tem peso B i, determinado pela sua posição. Para i com valores positivos, tem- -se pesos maiores que a unidade; para i=0 tem-se exatamente o peso unitário (B 0 =1). Para valores negativos de i, tem-se pesos menores que a unidade (fracionários). Para o caso específico de números inteiros, utilizando-se n dígitos (ou casas ), indexados de 0 (dígito menos significativo) até n 1 (dígito mais significativo), a fórmula fica: ou, por extenso, expandindo-se o somatório: a = x n 1.B n-1 + x n 2.B n 2 +.... + x 2.B 2 + x 1.B 1 + x 0.B 0 ou ainda, simplificando-se a expressão: a = x n 1.B n 1 + x n 2.B n 2 +.... + x 2.B 2 + x 1.B + x 0
4 Fundamentos de Arquitetura de Computadores Para os sistemas de numeração utilizam-se as seguintes regras: a base B de um sistema é igual à quantidade de algarismos distintos utilizados. Para a base decimal, tem-se dez algarismos distintos (de 0 a 9). quando uma posição é ocupada pelo maior algarismo e ela deve ser aumentada de uma unidade, esta posição recebe o símbolo nulo e a posição seguinte deve ser aumentada de uma unidade. Assim, 9+1=10, 19+1=20, 99+1=100, 1999+1=2000. o algarismo mais à direita (denominado de dígito menos significativo) tem peso um. O algarismo imediatamente à esquerda tem o peso da base B, o seguinte à esquerda tem peso de B ao quadrado, depois B ao cubo, e assim por diante. o valor de cada algarismo de um número é determinado multiplicando-se o algarismo pelo peso de sua posição. o valor de um número é determinado pela soma dos valores de cada algarismo. 1.3 transformação entre bases Os computadores atuais utilizam internamente somente um sistema de numeração: o sistema binário (B=2), com os algarismos 0 e 1. Este sistema foi estudado profundamente pelo matemático alemão Leibniz, no século 17. Somente com o advento dos computadores eletrônicos digitais, entretanto, tal sistema começou a ser utilizado na prática. Atualmente, todos os computadores usam internamente o sistema binário para armazenamento e manipulação de números e dados. O tratamento de números representados em outras bases ocorre por meio de rotinas de codificação e decodificação. O mesmo ocorre com símbolos alfanuméricos. 1.3.1 método polinomial Como cada número pode ser representado por um polinômio em uma certa base, tudo o que se deve fazer para transformar um número de uma base para outra é interpretar este número como um polinômio utilizando a aritmética da base de destino: 110001 2 = 1.2 5 + 1.2 4 + 0.2 3 + 0.2 2 + 0.2 1 + 1.2 0 = 32 + 16 + 0 + 0 + 0 + 1 = 49 10 110001 2 = 1.2 5 + 1.2 4 + 0.2 3 + 0.2 2 + 0.2 1 + 1.2 0 = 40 8 + 20 8 + 0 + 0 + 0 + 1 8 = 61 8 Nesses exemplos, simplesmente foi aplicada a fórmula: a = x n 1.B n-1 + x n 2.B n 2 +.... + x 2.B 2 + x 1.B + x 0 em que B é a base de origem, e a, o número resultante na base de destino. Observe que todos os cálculos são realizados na aritmética da base de destino.
Capítulo 1 Bases Numéricas 5 1.3.2 método de subtrações Sabendo que um número em uma determinada base B é representado pela fórmula a = x n 1.B n 1 + x n 2.B n 2 +.... + x 2.B 2 + x 1.B + x 0 a conversão para a determinação dos coeficientes x i é iniciada da esquerda (x n 1 ) para a direita (até x 0 ). Inicia-se determinando os valores de n (a quantidade de dígitos necessária) e de x n 1 (o dígito mais significativo). Para tanto procura-se o produto (na base de origem) do maior coeficiente pela maior potência da nova base, que está contido no número a ser convertido, ou seja, procura-se o maior produto x n 1.B n 1 que seja menor (ou igual) que a. Este coeficiente x n 1 é o algarismo a ser utilizado na posição mais à esquerda (dígito mais significativo) do número na nova base. Subtrai-se este produto do número a ser convertido. Com isso tem-se: a = a x n 1.B n 1 = x n 2.B n 2 +.... + x 2.B 2 + x 1.B + x 0 Para determinar o algarismo seguinte à direita (x n 2 ), repete-se o processo, usando agora a diferença do passo anterior (a ) e a potência imediatamente inferior (se no passo anterior usou- -se a potência B i, utiliza-se agora B i 1 ), e assim sucessivamente até todos os n dígitos terem sido determinados. Note que o resultado das diversas subtrações sempre deve ser positivo (ou zero). Se a subtração não for possível, isso indica que o coeficiente x i é zero. Para converter o número decimal 681 para binário, por exemplo, tem-se os seguintes cálculos: 681 1.2 9 = 681 512 = 169 169 0.2 8 = 169 0.256 = 169 169 1.2 7 = 169 128 = 41 41 0.2 6 = 41 0.64 = 41 41 1.2 5 = 41 32 = 9 9 0.2 4 = 9 0.16 = 9 9 1.2 3 = 9 8 = 1 1 0.2 2 = 1 0.4 = 1 1 0.2 1 = 1 0.2 = 1 1 1.2 0 = 1 1 = 0 Ou seja, o número final, em binário, é 1010101001. Se o resultado de uma subtração produzir resultado zero, isso significa que todos os dígitos restantes são zero, como no exemplo a seguir. 680 1.2 9 = 680 512 = 168 168 0.2 8 = 168 0.256 = 168 168 1.2 7 = 168 128 = 40 40 0.2 6 = 40 0.64 = 40 40 1.2 5 = 40 32 = 8 8 0.2 4 = 8 0.16 = 8 8 1.2 3 = 8 8 = 0
6 Fundamentos de Arquitetura de Computadores Os coeficientes restantes (x 2, x 1 e x 0 ) são iguais a zero, e o número final, em binário, é 1010101000. O método também se aplica para números com frações. Se não for possível chegar a zero após um certo número de posições, interrompe-se o método após obter-se o número de casas desejado. Ou seja, o número final é 110,001. 6,125 1.2 2 = 6,125 4 = 2,125 2,125 1.2 1 = 2,125 2 = 0,125 0,125 0.2 0 = 0,125 0.1 = 0,125 0,125 0.2 1 = 0,125 0.0,5 = 0,125 0,125 0.2 2 = 0,125 0.0,25 = 0,125 0,125 1.2 3 = 0,125 0,125 = 0 O método também se aplica para outras bases. Seja a conversão de 6,8125 de decimal para octal: 6,8125 6.8 0 = 6,8125 6 = 0,8125 0,8125 6.8 1 = 0,8125 0,7500 = 0,0625 0,0625 4.8 2 = 0,0625 0,0625 = 0 Ou seja, 6,8125 10 =6,64 8. Note que sempre se utiliza a aritmética da base de origem. 1.3.3 método das divisões O número a ser convertido é dividido pela nova base (na aritmética da base de origem). O resto desta divisão forma o algarismo mais à direita (menos significativo) do número convertido. O quociente é novamente dividido, e assim sucessivamente, até o resto ser zero. A sequência de todos os restos forma o novo número. Note que ao dividir o número a pela base B obtém-se: ou seja a /B = (x n 1.B n 1 + x n 2.B n 2 +.... + x 2.B 2 + x 1.B + x 0 )/B a /B = x n 1.B n 2 + x n 2.B n 3 +.... + x 2.B 1 + x 1, com resto igual a x 0 A divisão seguinte por B produz como resto x 1, e assim sucessivamente até x n 1. 53 2 = 26, resta 1 26 2 = 13, resta 0 13 2 = 6, resta 1 6 2 = 3, resta 0 3 2 = 1, resta 1 1 2 = 0, resta 1
Capítulo 1 Bases Numéricas 7 Número binário resultante: 110101 Para frações, o método se modifica um pouco: a fração é multiplicada pela nova base; a parte inteira resultante forma o algarismo mais à esquerda da nova fração e a parte fracionária é submetida novamente ao método, até o resultado ser zero (ou até atingir-se o número de dígitos significativos desejado). Exemplo: 0,828125. 2 = 1,65625 Parte inteira = 1 Fração = 0,1 0,65625. 2 = 1,3125 Parte inteira = 1 Fração = 0,11 0,3125. 2 = 0,625 Parte inteira = 0 Fração = 0,110 0,625. 2 = 1,25 Parte inteira = 1 Fração = 0,1101 0,25. 2 = 0,5 Parte inteira = 0 Fração = 0,11010 0,5. 2 = 1,0 Parte inteira = 1 Fração = 0,110101 1.3.4 método da substituição direta Este é o método mais fácil, mas funciona somente para bases que são potências inteiras entre si, por exemplo, de octal para binário (e vice-versa), ou de hexadecimal para binário (e vice- -versa). Seja B1=B2 m ; para um determinado m inteiro, tem-se as seguintes regras: para converter de B1 (a maior base) para B2 (a menor base), cada algarismo de B1 é substituído por m algarismos equivalentes de B2: 5 1 7 8 = 101 001 111 2 7 0 C 16 = 0111 0000 1100 2 para converter de B2 para B1, agrupam-se os algarismos em grupos de m, tomando-se a vírgula como referência, ou seja, formam-se grupos de m algarismos tanto para a esquerda da vírgula (parte inteira) como para a direita (parte fracionária). Cada grupo é então transformado no seu algarismo equivalente na nova base: 1110,01101 2 = 001 110, 011 010 = 1 6, 3 2 8 1110,01101 2 = 1110, 0110 1000 = E, 6 8 16 Observe que este método também pode ser utilizado entre duas bases que não sejam diretamente uma potência da outra, desde que ambas sejam potências inteiras de uma terceira base. Assim, por exemplo, pode-se converter da base octal para hexadecimal (usando a base 2 como terceira base).
8 Fundamentos de Arquitetura de Computadores exercícios propostos 1. Converter para a base decimal os seguintes números: a) 101010 2 e) 2165 8 b) 1010 3 f) 1FA2 16 c) 1021 4 g) E1A 16 d) 1025 6 h) 707 8 2. Usando o método das divisões, converter os seguintes números decimais para a base indicada: a) 96 para a base ternária e) 49 para a base quaternária b) 96 para a base octal f) 57 para a base ternária c) 258 para a base hexadecimal g) 56 para a base binária d) 258 para a base binária h) 56 para a base hexadecimal 3. Usando o método das subtrações, converter os seguintes números decimais para a base indicada: a) 96 para a base ternária e) 49 para a base quaternária b) 96 para a base octal f) 57 para a base ternária c) 258 para a base hexadecimal g) 56 para a base binária d) 258 para a base binária h) 56 para a base hexadecimal 4. Usando o método das substituições, converter os seguintes números para a base indicada: a) 101100011010 2 para a base octal b) 101100011010 2 para a base hexadecimal c) 00101100101 2 para a base octal d) 00101100101 2 para a base hexadecimal e) 347 8 para a base binária f) 7241 8 para a base binária g) 3AF 16 para a base binária h) 7E4B 16 para a base binária 5. Qual é o valor decimal de 01101101 2? Qual é a representação binária de 654? 6. Converter para binário os seguintes números decimais: a) 39 c) 256,75 b) 0,4475 d) 129,5625 7. Converter para decimal os seguintes números binários: a) 01101 c) 0111011,1011 b) 0,001101 d) 010110011
Capítulo 1 Bases Numéricas 9 8. Converter os seguintes números hexadecimais em decimais: a) B6C7 b) D2763 c) 9,1A 9. Converter os seguintes números octais em binário: a) 56 c) 231,2 b) 32,234 d) 3364 10. Converter os seguintes números hexadecimais em binários: a) AB2 c) 649 b) 12,A d) 0,D19 11. Converter os seguintes números binários em hexadecimais: a) 010110111 b) 011110,01011 c) 01110100010101 Termos-chave conversão de frações, p. 6 conversão direta, p. 6 conversão polinomial, p. 4 conversão por divisões, p. 5 conversão por subtrações, p. 5 representação polinomial, p. 4 sistema de numeração arábica, p. 3