Departamento de Computação – ICEB - UFOP Mudança de base Uma base numérica é um conjunto de símbolos (ou algarismos) com o qual pode se representar uma certa quantidade ou número. No dia a dia costuma-se utilizar a base dez, ou base decimal, que como o próprio nome já diz é composta por 10 algarismos diferentes: 0, 1, 2, 3, 4, 5, 6, 7, 8 e 9. Cabe aqui, fazer a distinção entre número, numeral e algarismo. NÚMERO = exprime a idéia de quantidade. NUMERAL = símbolo utilizado para representar o número. ALGARISMO = numerais de 0 a 9, no sistema de numeração decimal – base 10, letras I,V,X,L,C,D e M no sistema de algarismos romanos, etc Exemplo: O número trinta é representado no sistema de numeração decimal pelo numeral 30, no qual foram utilizados os algarismos 3 e 0. a) Mudança da base 10 para a base 2 a.1) Número inteiro Para obter o equivalente binário de um número inteiro da base 10 utiliza-se o procedimento a seguir. (i) Divide-se o número por 2; (ii) Divide-se por 2 o quociente da divisão anterior; (iii) Observe-se que se trata de divisão inteira, ou seja, com resto. O processo é repetido até que seja obtido quociente igual a zero. O número binário é formado pela concatenação dos restos das divisões, tomados do último para o primeiro. Para justificar este algoritmo, consideremos, inicialmente, a base 10. Seja o numeral 248. Dividindo 248 sucessivamente por 10, vem, usando a igualdade Dividendo = Quociente x Divisor + Resto 248 = 24 x 10 + 8 24 = 2 x 10 + 4 2 = 0 x 10 + 2 Observe os algarismos de baixo para cima: 248 Prof. José Álvaro Tadeu Ferreira Página 1 Departamento de Computação – ICEB - UFOP Seja o numeral 13. Dividindo sucessivamente por 10, vem, usando a igualdade Dividendo = Quociente x Divisor + Resto: 13 = 1 x 10 + 3 1 = 0 x 10 + 1 Observe os algarismos de baixo para cima: 13 Procedimento análogo deve ser utilizado para escrever um numeral na base 2, ou seja, utilizando-se somente os algarismos 0 e 1: Seja o numeral 13 na base 10. Dividindo sucessivamente por 2, vem, usando a igualdade Dividendo = Quociente x Divisor + Resto: 13 = 6 x 2 + 1 6=3x2+0 3=1x2+1 1=0x2+1 Observe os algarismos de baixo para cima: 1101 Portanto, 13 na base 10 é representado por 1101 na base 2. Perceba-se que, se atribuíssemos uma seqüência numérica a um conjunto qualquer (por exemplo, uma senha progressiva a pessoas esperando em uma fila), o elemento que recebesse o número (1101)2, caso a numeração fosse em base dois, seria o mesmo elemento que receberia o número 13 caso a numeração fosse em base decimal. As duas quantias têm um “valor seqüencial” semelhante, embora escritas em bases numéricas distintas. a.2) Número fracionário Para obter o equivalente binário de um número fracionário da base 10 o procedimento é o seguinte. (i) Multiplica-se o número por 2; (ii) A parte inteira do resultado obtido é o primeiro dígito do número na base 2 e, a parte fracionária é, novamente, multiplicada por 2; (iii) O processo é repetido até que se obtenha a parte fracionária nula. Seja representar o numeral 0,375, da base 10, na base 2. 0,375 x2 0,750 0,750 x2 1,500 0,500 x2 1,000 Prof. José Álvaro Tadeu Ferreira Página 2 Departamento de Computação – ICEB - UFOP Portanto, 0,375 na base 10, é representado por 0,011 na base 2. Tem-se,então, de acordo com o apresentado nos itens a.1 e a.2, que o numeral 13,375, da base 10, é representado, na base 2, da forma: 1101,011 Quando o número possui parte inteira e parte fracionária a mudança de base é feita em duas etapas utilizando os procedimentos vistos nos itens a.1 e a.2. Seja, agora, a representação do numeral 0,1, da base 10, na base 2. 0,1 x2 0,2 0,2 x2 0,4 0,4 x2 0,8 0,8 x2 1,6 0,6 x2 1,2 0,2 x 2 .... 0,4 Observe-se que as multiplicações começam a se repetir, impossibilitando que se chegue a um resultado com a parte fracionária nula. Portanto o 0,1, da base 10 , tem a seguinte representação na base 2: (0,1)10 = (0,0001100110011...)2 Ou seja, 0,10 da base 10 não tem representação finita na base 2 podendo ser representado , nesta base, somente de forma aproximada. Em um computador com tamanho de palavra de 16 bits, (0,1)10 é armazenado como (0,0001100110011001)2 Que, quando convertido para a base 10 (vide item b deste texto), resulta em (0,0999908447265625)10 Produzindo, portanto, um erro da ordem de 9 x 10-6. b) Mudança da base 2 para a base 10 Um número de numeral (N)2 na base 2, ou seja, utilizando apenas os algarismos ou dígitos 0 e 1, pode ser convertido para a base 10, da seguinte forma: (N)2 = (an-1.2n-1 + an-2.2n-2 + ... + a1.21 + a0.20 + a-1.2-1 + a-2.2-2 +...+ a-m.2-m)10 Onde n é o número de algarismos da parte inteira e m, da parte fracionária. Portanto, para encontrar a correspondência entre um número da base dois e um número na base decimal, basta computar o somatório dos pesos de cada um dos algarismos em relação à base 10. Prof. José Álvaro Tadeu Ferreira Página 3 Departamento de Computação – ICEB - UFOP Por exemplo, para o número (1101)2 : Peso Dígito 3 1 2 1 1 0 0 1 = 1 x 23 + 1 x 22 + 0 x 21 + 1 x 20 = 8 + 4 + 0 + 1 = 13* * o valor 13 obtido está na base decimal porque, por exemplo, o produto de 1 x 23 só resulta em 8 na base decimal; conversão semelhante pode ser feita para outras bases, desde que as operações de multiplicação e soma sejam efetuadas adequadamente. Seja, agora, obter a representação decimal do número (0,011)2. Peso Dígito -1 0 -2 1 -3 1 = 0 x 2-1 + 1 x 2-2 + 1 x 2-3 = 0 + 1/4 + 1/8 = 0,375 Sendo assim, confirmando o já obtido anteriormente, (1101,011)2 = (13,375)10 Ouro Preto, abril de 2008 Prof. José Álvaro Tadeu Ferreira Página 4