Sistemas de Numeração Denomina-se sistema de numeração o conjunto de regras que nos permite escrever e ler qualquer número, utilizando para isto símbolos básicos. Os símbolos que utilizamos (os algarismos de 0 a 9) são apenas convenções para serem utilizadas em sistemas numéricos, sendo que poderiam ser utilizados letras, símbolos geométricos ou qualquer outra simbologia. A quantidade de símbolos necessários para representar números em um sistema de numeração é igual ao valor da base deste sistema. Notação Posicional -> Dado um número, seu valor é calculado de acordo com a base do sistema e a posição que cada algarismo ocupa com sua potência correspondente. Um número no sistema de base decimal pode ser decomposto em uma soma de potências de base 10. E assim para cada sistema de numeração, com sua base correspondente. Ex.: 1998 diferença de valor. 9198 => A posição dos algarismos determina a Processo de Soma de Potências (de 10 – Base decimal) 11000 9100 910 1 9 9 81 8 1000+900+90+8 = 1998 91000 1100 910 9 1 9 81 8 9000+100+90+8 = 9198 Sistema decimal => relacionado a dez dedos, únicas “ferramentas” para auxílio em cálculos, até a invenção do ábaco. Não precisamos fazer cálculos com as potências relacionadas a cada algarismo toda vez que lemos um número decimal simplesmente porque o sistema decimal é o sistema naturalmente compreendido pelo ser humano, utilizado no nosso dia-a-dia. Porém, sempre que lemos um número estamos utilizando a notação posicional inconscientemente. 234 2100 310 2 3 41 4 200+30+4 = 234 Principais Sistemas de Numeração: Decimal 0 1 2 3 4 5 6 7 8 9 Binário 0 1 Octal 0 1 2 3 4 5 6 7 Hexadecimal 0 1 2 3 4 5 6 7 8 9 A B C D E F O Sistema Decimal, como já citado é importante para o ser humano por ser o sistema utilizado naturalmente no seu dia-a-dia. Porém, o computador se utiliza de outros sistemas de numeração. Sistema Binário Utilizado por sua fácil representação eletrônica. Possui apenas dois símbolos (0 ou 1), que podem ser facilmente relacionados aos estados de “aberto” e “fechado” dos transistores do computador, ou “com corrente” e “sem corrente”. Comentário: Não há como utilizarmos no computador o sistema decimal, que seria mais facilmente compreendido, pelo fato de não podermos representar eletronicamente dez estados diferentes. Para não haver confusão entre os sistemas, já que os símbolos são basicamente os mesmos, usa-se um índice que indica a que sistema o número pertence. A ausência do índice indica o Sistema Decimal. 210 32 48 Dois na base dez Três na base dois Quatro na base oito (Sistema decimal) (Sistema binário) (Sistema octal) Os Sistemas Octal e Hexadecimal também são amplamente utilizados em Informática devido a sua fácil relação com o sistema binário. A conversão de números em Sistema Decimal para o Sistema Binário pode ser feita através do mecanismo de divisões sucessivas ou levando-se em conta as potências referentes a cada posição, e relacionando-as com 1s e 0s conforme o número a ser representado. Exemplos: Conversão de Decimal para Binário Converter 10 Divisões sucessivas por dois: 10 0 2 5 1 2 2 0 2 1 1 2 0 Resultado obtido: 10102 Processo: divide-se por 2 com quociente inteiro, sucessivamente até que o quociente seja igual a 0. Os restos da divisão, de trás para frente, formam o binário. Notação posicional 28 0 27 0 26 0 25 0 24 0 23 1 22 0 Resultado obtido: 10102 21 1 20 0 Processo: Utilizar as potências de 2 (2º = 1, 21 = 2, 22 = 4, etc.) para converter o número. Lembrar de trabalhar com as casas da esquerda para a direita, preenchendo com 1 as mais próximas ao número decimal e com 0 as que extrapolarem o valor necessário para se atingir o número decimal. Mostrar que os valores de cada casa são os valores das potências. Converter 107 Divisões sucessivas por dois: 107 2 1 53 1 2 26 0 2 13 1 2 6 0 2 3 1 2 1 1 2 0 Resultado obtido através deste processo: 11010112 Notação posicional 28 0 27 0 26 1 25 1 24 0 23 1 22 0 21 1 20 1 Resultado obtido: 11010112 Conversão de Binário para Decimal Converter 1010 28 0 27 0 26 0 25 0 24 0 23 1 22 0 21 1 20 0 27 0 26 1 25 1 24 0 23 1 22 0 21 1 20 1 23 + 21 = 8 + 2 = 10 Converter 1101011 28 0 26 + 25 + 23 + 21 + 20 = 64 + 32 + 8 + 2 + 1 Processo: Somar o valor correspondente as casas com 1 e ignorar o valor das casas com 0. Sistema Octal - Cada dígito em octal equivale a três dígitos binários. Pode, portanto ser facilmente utilizado para endereçamento ou sistemas que trabalhem com apenas três dígitos. - Fácil conversão para o binário e vice-versa. Decimal 0 1 2 3 4 5 6 7 Binário 000 001 010 011 100 101 110 111 Octal 0 1 2 3 4 5 6 7 A conversão do sistema octal para qualquer outra base deve ser feita através do sistema binário, ou seja, o número em base octal é transformado em binário e em seguida para a base desejada. A conversão é feita levando-se em conta que cada dígito octal corresponde a 3 dígitos binários. Portanto, a conversão é feita sobre cada algarismo para seu correspondente binário, a concatenação dos algarismos binários resulta no número binário correspondente. Exemplo: Converter 10 em base decimal para base octal Sabe-se que o número 10 em decimal transformado para base binária é igual a: 1010. 1010 Da direita para a esquerda pega-se os três primeiros algarismos (010) transforma-se estes 3 algarismos no seu correspondente na base decimal. No exemplo acima 010 corresponde ao elemento 2. Pega-se os próximos 3 elementos, neste exemplo temos apenas 1 elemento. Transformando este número 1 para base decimal temos 1. O octal é a concatenação dos resultados obtidos: 12. 20 1 1 22 0 21 1 2 20 0 Converter 107 em base decimal para base octal Sabe-se que o número 107 em decimal transformado para base binária é igual a: 1101011. 20 1 1 22 1 21 0 5 20 1 22 0 21 1 20 1 3 Sistema Hexadecimal - Cada dígito em hexadecimal equivale a quatro dígitos binários. É utilizado para endereçamento de portas, endereçamento interno, etc. - Também é facilmente convertido para binário. - Utiliza letras como símbolos adicionais. Decimal 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 Binário 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111 Hexadecimal 0 1 2 3 4 5 6 7 8 9 A B C D E F A conversão do sistema hexadecimal para qualquer outra base deve ser feita através do sistema binário, ou seja, o número em base hexadecimal é transformado em binário e em seguida para a base desejada. A conversão é feita levando-se em conta que cada dígito hexadecimal corresponde a 3 dígitos binários. Portanto, a conversão é feita sobre cada algarismo para seu correspondente binário, a concatenação dos algarismos binários resulta no número binário correspondente. Exemplos: Converter 10 em base decimal para base hexadecimal Vide Tabela Converter 107 em base decimal para base hexadecimal Sabe-se que o número 107 em decimal transformado para base binária é igual a: 1101011. 22 1 21 1 6 20 0 23 1 22 0 21 1 B 20 1 Representação de Números menores que 1 (fracionários) A representação de números com casas decimais é feita levando-se em conta, ainda, a Notação Posicional e sua sequência de potências. Os algarismos a direita da vírgula correspondem as potências da base com expoentes negativos, já que o primeiro número a esquerda da vírgula representa a base elevada a expoente 0. Exemplo: 1 4 5 , 1 6 2 1 10 10 100 10-110-2 O valor representado pelos algarismos é correspondente a posição que ele ocupa. Se o algarismo está na posição relacionada a 10-1 ele representa o seu valor multiplicado por 0,1, se está na posição relacionada a 10 -2 ele representa o seu valor multiplicado por 0,01, e assim por diante. Para a representação no sistema binário, usa-se o mesmo sistema, com base 2. A conversão da parte fracionária de números decimais para o sistema binário pode ser feita de forma natural, ou seja, pela soma do valor obtido para cada casa pela Notação Posicional. Outro método de conversão é através do seguinte processo: Multiplica-se o número a ser convertido pela base equivalente (2), do resultado obtido, extrai-se a parte inteira, que será sempre 0 ou 1, e o restante (a direita da vírgula) é utilizado sucessivamente para calcular os outros dígitos. O processo se encerra quando a parte fracionária é zero ou quando é atingido um número razoável de casas decimais. Exemplo: 10,9310 Parte inteira 1010 = 10102 Parte fracionária 0,9310 2 x 0,93 2 x 0,86 2 x 0,72 2 x 0,44 2 x 0,88 = = = = = 1,86 1,72 1,44 0,88 1,76 Portanto 10,9310 = 1010,111012 com 5 casas decimais. A conversão de números fracionários binários para decimais deve ser feita seguindo o mesmo princípio usado para conversão de números inteiros. Representação de Números Um computador típico pode ser imaginado como tendo um grande número de lugares nos quais uma sequência de bits (Dígitos 0 ou 1) pode ser armazenada. Tais sequências são de comprimento fixo denominado comprimento da palavra do computador. Uma cadeia de 0’s e 1’s pode ser interpretada de diversas maneiras. Inicialmente a interpretamos como um inteiro binário. Deve, portanto, existir um método para indicar o sinal do número. A forma encontrada é utilizar o bit mais significativo (mais à esquerda) para representá-los. Computadores com palavras de 8 bits, usam o bit 7 como bit de sinal e os 7 bits restantes para representar a amplitude. Serão discutidos três métodos de tratamento do sinal. Cada um deles constitui uma variante da chamada representação em ponto fixo. O termo ponto fixo refere-se ao fato de que o ponto decimal pode ser encarado como tendo uma posição fixa na palavra do computador. Se esta posição for na extrema direita, os números serão inteiros positivos ou negativos. As três representações são: 1) Sinal e Amplitude: o bit mais à esquerda é o bit de sinal; normalmente, 0 indica positivo e 1 indica negativo. Os demais bits são chamados de amplitude. Exemplo: Consideremos um computador com palavra de comprimento de 6 bits. Assim, + 1310 é representado por 001101 - 1310 é representado por 101101 O zero é representado por 000000 e 100000 mas todos os demais números entre –31 (111111) e + 31 (011111) têm uma representação única. 2) Complemento 1: Nesta notação, números não negativos são representados da mesma maneira que nos dois métodos anteriores. O zero tem duas representações (000000 e 111111). Os números são representados seguindo ainda o mesmo princípio até aqui visto. Os positivos inteiros são representados normalmente, com um 0 à esquerda. Os negativos são formados através da complementação de cada bit (inversão). 3) Complemento 2: O bit a esquerda continua sendo usado como bit de sinal. Os números positivos continuam sendo representados da mesma maneira. Porém, os negativos serão representados através do seguinte algoritmo: a) Listar o número decimal sem sinal. b) Converter o decimal em binário, utilizando um número pré-definido de bits. Se não houver limite de bits, acrescentar um 0 a esquerda como bit de sinal. c) Complementar cada bit formando o complemento 1. d) Somar 1 ao número Complemento 1. Exemplo: -9 com 8 bits 1) 9 2) 00001001 3) 11110110 4) 11110111 = -9 Para convertermos um número Complemento 2 para decimal, deve ser feito o mesmo processo: escrever o número Complemento 2, complementar cada bit e somar 1 ao resultado. Exemplo: 111100002 (Complemento 2) 1) Escrever o Comp. 2 = 11110000 2) Complementar cada bit = 00001111 3) Somar +1 = 00010000 Resultado = 16 Resumo – Exemplo utilizando 4 bits Sinal e Amplitude 2 representações para o zero: 0000 e 1000 -7 (1111) até + 7 (0111) Complemento 1 2 representações para o zero: 0000 e 1111 -7 (1000) até +7 (0111) Complemento 2 1 representação para o zero: 0000 -8 (1000) até +7 (0111) Operações com Binários A principal operação realizada internamente pelo computador com números binários é a adição. A adição com números binários é feita da mesma forma que fazemos com qualquer sistema de numeração, levando-se em conta que o sistema binário é formado por apenas 2 símbolos (0 e 1). As combinações possíveis destes símbolos para a execução da adição são: 0+0=0 0 + 1 ou 1 + 0 = 1 1 + 1 = 10, neste caso, durante a adição será usado o “vai um”, que pode gerar overflow. Passar uma conta de exemplo. Explicar a soma de três números 1’s. Explicar o overflow. Exemplo: As demais operações são feitas baseadas na adição, devido a complexidade necessária para implementar outras operações em particular. A subtração é feita através da soma com o número negativo (p. ex.: 10 - 20 = 10 + (-20)). A multiplicação é feita pela repetição de somas, ssim como a divisão se utiliza de outras operações para chegar ao seu resultado.