Professor Menezes SISTEMA DE NUMERAÇÃO 1-1 Sistemas de Numeração Observe que alguns números decimais a possuem uma representação muito curiosa no sistema binário: 1 decimal = 1 binário; 2 decimal = 10 binário 3 decimal = 11 binário 4 decimal = 100 binário O texto a seguir procura mostra como os vários sistemas de numeração põem ser utilizados para facilitar a leitura e o armazenamento de informação nas palavras do computador. É destacada a notação posicional dos sistemas de numeração que é o elo entre os sistemas de diferentes bases. Os conceitos de bit, byte e palavra, fundamentais na computação, são também apresentados. Número e numeral Quando dizemos “o número 10” estamos cometendo um abuso de linguagem, e para sermos corretos deveríamos dizer: “o número que representamos pelo numeral 10”. O numeral é o símbolo gráfico que usamos para representar a idéia comum aos dois conjuntos que estamos comparando: o número. Assim, três, 2 + 1, Treis, Three, 3, ....,III, são numerais distintos que representam a mesma idéia – o número três. Os sistemas de numeração na história Alguns historiadores supõem que o sistema foi adotado pelo homem primitivo por compatibilidade com o número de dedos das mãos, artifício usado no princípio para contar as coisas do mundo, como seus bens, rebanho e dinheiro. O sistema base 10 competiu, para se tornar o sistema padrão, durante uma fase longa da história da humanidade com o sistema de numeração base 60, cujos resquícios ainda são vistos no sistema de divisão do tempo, 1 minuto de sessenta segundos e 1 hora de sessenta minutos, e na trigonometria, onde o círculo é dividido em 360 graus (660). O sistema baseado em 60 é interessante porque 60 é divisível por 2, 3, 4, 5, 6, 10, 12, 15, 20 e 30, enquanto que 10 é divisível somente por 2 e 5. O maior número de divisores torna o sistema em base 60 muito mais prático para a divisão de grandezas (pesos, medidas, etc). Introdução à Ciência da Computação SISTEMA DE NUMERAÇÃO 2-2 Professor Menezes Nesta figura podemos ver o formato e seqüência corretas da grafia manuscrita medieval dos números ou algarismos arábicos do sistema decimal que aparecem na página de título do livro " Libro Intitulado Arithmetica Practica " por Juan de Yciar, matemático e calígrafo Basco, Saragossa 1549. No início dos anos 1600, ocorreu uma importante modificação no formato da grafia do décimo número ou do zero, que inicialmente tinha o formato pequeno e circular « o ». Posteriormente, evoluiu para o formato oval atual « 0 » desta forma foi possível a sua distinção quanto a grafia da letra « o » minúscula, ou da letra « O » maiúscula. Notação posicional e o sistema de base decimal Valor atribuído a um símbolo dependente da posição em que ele se encontra no conjunto de símbolos que representa uma quantidade. O valor total do número é a soma dos valores relativos de cada algarismo (decimal). Ou seja, a ordem dos algarismos (números) que estamos acostumados a usar; 1, 2, 3, 4, 5, 6, 7, 8, 9, 0. No sistema de numeração decimal, 735=700+30+5 Neste exemplo temos que o algarismo 5 representa 5 unidades. E o algarismo 3 representa 3 dezenas (ou 3 grupos de dez unidades). E por último que o algarismo 7 representa 7 centenas (ou 7 grupos de cem unidades). 573=500+70+3 Neste outro exemplo temos que o algarismo 3 representa 3 unidades. E o algarismo 7 representa 7 dezenas (ou 7 grupos de dez unidades). E, finalmente, que o algarismo 5 representa 5 centenas (ou 5 grupos de cem unidades). O Sistema Binário O sistema binário é um sistema de numeração posicional em que todas as quantidades se representam utilizando como base o número dois, com o que se dispõe das cifras: zero e um (0 e 1). Introdução à Ciência da Computação SISTEMA DE NUMERAÇÃO 3-3 Professor Menezes Os computadores digitais trabalham internamente com dois níveis de tensão, pelo que o seu sistema de numeração natural é o sistema binário (aceso, apagado). Com efeito, num sistema simples como este é possível simplificar o cálculo, com o auxílio da lógica booleana. Em computação, chama-se um dígito binário (0 ou 1) de bit, que vem do inglês Binary Digit. Um agrupamento de 8 bits corresponde a um byte (Binary Term). Um agrupamento de 4 bits é chamado de nibble. O sistema binário é base para a Álgebra booleana (de George Boole matemático inglês), que permite fazer operações lógicas e aritméticas usandose apenas dois dígitos ou dois estados (sim e não, falso e verdadeiro, tudo ou nada, 1 ou 0, ligado e desligado). Toda eletrônica digital e computação está baseada nesse sistema binário e na lógica de Boole, que permite representar por circuitos eletrônicos digitais (portas lógicas) os números, caracteres, realizar operações lógicas e aritméticas. Os programas de computadores são codificados sob forma binária e armazenados nas mídias (memórias, discos, etc) sob esse formato. Matematicamente o sistema mis natural de todos seria o binário, com apenas dois dígitos o 0 e o 1. Como expressar 1968 no sistema binário? Solução: 111101100000 , de fato 1 0 0 0 0 0 0 0 0 0 0 + : 1 x 210 = 1024 + 1000000000 : 1 x 29 = 512 100000000 : 1 x 28 = 256 10000000 : 1 x 27 = 128 0000000 : 0 x 26 = 0 100000 : 1 x 25 = 32 10000 : 1 x 24 = 16 0000 : 0 x 23 = 0 000 : 0 x 22 = 0 00 : 0 x 21 = 0 0 : 0 x 20 = 0 ____________________________________ 11110110000 Introdução à Ciência da Computação 1968 SISTEMA DE NUMERAÇÃO 4-4 Professor Menezes O processo de conversão de decimal para binário consiste em representar o número decimal como uma soma de potências de dois. Isto pode ser feito através de divisões sucessivas por 2, até que o quociente seja igual a zero. O resto da última divisão representa o dígito menos significativo ( mais à direti) do número binário, o resto da próxima divisão o próximo dígito e assim por diate. Observe que o resto da divisão por 2 será sempre 0 ou 1: 1968 16 8 0 2 984 18 4 0 2 492 9 12 0 2 246 4 6 0 2 123 3 1 2 61 1 2 30 10 0 2 15 1 2 7 1 2 3 1 2 1 1 2 0 Logo 196810 = 1 1 1 1 0 1 1 0 0 0 02 O sistema binário é extremamente prático quanto às operações de soma e multiplicação (ao contrário das 200 fórmulas o sistema decimal, só existem 8 para serem decoradas) . As Operações são definidas pelas tabelas. + 1 0 1 10 1 0 1 0 X 1 0 1 1 0 0 0 0 Sistema Hexadecimal O sistema de numeração hexadecimal utiliza 16 dígitos (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F) cujas correspondências aos sistemas decimal e binário estão abaixo, na próxima página. Observe que com quatro dígitos binários podemos representar todos os dígitos hexadecimais. Com isto, a conversão binário hexadecimal é feita simplesmente separando-se o número binário em gruos de 4 dígitos e substituindo-se cada grupo pelo dígito hexadecimal equivalente (ver tabela abaixo). A conversão hexadecimal binário é igualmente simples. Cada dígito hexadecimal é substituído pelo número binário de 4 dígitos equivalente. Introdução à Ciência da Computação SISTEMA DE NUMERAÇÃO 5-5 Professor Menezes 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 Para somar números hexadecimais a tabela a seguir será de grande valia. + 0 1 2 3 4 5 6 7 8 9 A B C D E F 0 0 1 2 3 4 5 6 7 8 9 A B C D E F 1 1 2 3 4 5 6 7 8 9 A B C D E F 10 2 2 3 4 5 6 7 8 9 A B C D E F 10 11 3 3 4 5 6 7 8 9 A B C D E F 10 11 12 4 4 5 6 7 8 9 A B C D E F 10 11 12 13 5 5 6 7 8 9 A B C D E F 10 11 12 13 14 6 6 7 8 9 A B C D E F 10 11 12 13 14 15 7 7 8 9 A B C D E F 10 11 12 13 14 15 16 8 8 9 A B C D E F 10 11 12 13 14 15 16 17 9 9 A B C D E F 10 11 12 13 14 15 16 17 18 A B A B B C C D D E E F F 10 10 11 11 12 12 13 13 14 14 15 15 16 16 17 17 18 18 19 19 1A Tabela para multiplicação. X 1 2 3 4 5 6 7 8 9 A B C D E F 10 1 1 2 3 4 5 6 7 8 9 A B C D E F 10 2 2 4 6 8 A C E 10 12 14 16 18 1A 1C 1E 20 3 3 6 9 C F 12 15 18 1B 1E 21 24 27 2A 2D 30 4 4 8 C 10 14 18 1C 20 24 28 2C 30 34 38 3C 40 5 5 A F 14 19 1E 23 28 2D 32 37 3C 41 46 4B 50 Introdução à Ciência da Computação C C D E F 10 11 12 13 14 15 16 17 18 19 1A 1B D D E F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C E E F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D F F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E Professor Menezes SISTEMA DE NUMERAÇÃO 6-6 6 6 C 12 18 1E 24 2A 30 36 3C 42 48 4E 54 5A 60 7 7 E 15 1C 23 2A 31 38 3F 46 4E 54 5D 62 69 70 8 8 10 18 20 28 30 38 40 48 50 58 60 68 70 78 80 9 9 12 1B 24 2D 36 3F 48 51 5A 63 6C 75 7E 87 90 A A 14 1E 28 32 3C 46 50 5A 64 6E 78 82 8C 96 A0 B B 16 21 2C 37 42 4E 58 63 6E 79 84 8F 9A A5 B0 C C 18 24 30 3C 48 54 60 6C 78 84 90 9C A8 B4 C0 D D 1A 27 34 41 4E 5D 68 75 82 8F 9C A9 B6 C3 D0 E E 1C 2A 38 46 54 62 70 7E 8C 9A A8 B6 C4 D2 E0 F F 1E 2D 3C 4B 5A 69 78 87 96 A5 B4 C3 D2 E1 F0 10 10 20 30 40 50 60 70 80 90 A0 B0 C0 D0 E0 F0 100 Sistema Octal Sistema Octal é um sistema de numeração cuja base é 8, ou seja, utiliza 8 símbolos para a representação de quantidade. No ocidente, estes símbolos são os algarismos arábicos: 0 1 2 3 4 5 6 7 O octal foi muito utilizado em informática como uma alternativa mais compacta ao binário na programação em linguagem de máquina. Hoje, o sistema hexadecimal é mais utilizado como alternativa ao binário. Este sistema também é um sistema posicional e a posição de seus algarismos determinada em relação à vírgula decimal. Caso isso não ocorra, supõe-se implicitamente colocada à direita do número. A aritmética desse sistema é semelhante a dos sistemas decimal e binário, o motivo pelo qual não será apresentada. Exemplo: - Qual o número decimal representado pelo número octal 4701? Utilizar o TFN. 4 x 8³ + 7 x 8² + 0 x 8¹ + 1 x 8° = = 2048 + 448 + 0 + 1 = 2497 Conversão de Base Como a base 10 é a que nos é mais familiar, serão mostrados a seguir procedimentos para conversão de números numa base b qualquer para a base 10 e vice-versa. Serão consideradas as partes inteiras e fracionárias dos números. Conversão de Decimal para Base b i) Parte Inteira: Dividir o número decimal pela base b obtendo quociente e resto. Dividir o quociente obtido pela base b obtendo novo quociente e novo resto. Repetir o processo até que o quociente seja 0. Introdução à Ciência da Computação SISTEMA DE NUMERAÇÃO 7-7 Professor Menezes 128010 N8 Essa operação vale para qualquer base 128010 = 24008 1280 48 0 8 160 0 8 20 4 8 2 2 8 0 ii) 0,8125 2 1,625 2 1,25 2 0,5 2 1,0 x Retirar somente a parte inteira de cada resultado x x Parte Fracionária: Multiplicar a parte fracionária por base b. Multiplicar a nova parte fracionária obtida por base b. Repetir o processo até que a parte fracionária seja nula ou atingir a precisão desejada. x 0,812510 = 0,11012 Conversão da base b para Decimal 2 5 10 4 14 5 70 0 70 5 350 1 351 x i) Parte Inteira: Multiplique o dígito mais à esquerda pela base b e some o próximo dígito à direita. Multiplique a soma pela base b e some o próximo dígito. Repita o processo até que o dígito mais à direita tenha sido adicionado. + x + 24015 N10 x N10 = 351 + 2 0,2 0,1325 --> N10 0,4 3 3,4 0,2 0,68 1 1,68 0,2 N10= 0,336 x + x + x Introdução à Ciência da Computação ii) Parte Fracionária: Multiplique o dígito mais à direita por 1/b e some o próximo dígito à esquerda. Multiplique a soma por 1/b e adicione o próximo dígito. Repita o processo até que o último dígito tenha sido adicionado e a soma multiplicada por 1/b. Professor Menezes SISTEMA DE NUMERAÇÃO 8-8 Operações com binários Binários a decimais Dado um número N, binário, para expressá-lo em decimal, deve-se escrever cada número que o compõe (bit), multiplicado pela base do sistema (base = 2), elevado à posição que ocupa. Uma posição à esquerda da vírgula representa uma potência positiva e à direita uma potência negativa. A soma de cada multiplicação de cada dígito binário pelo valor das potências resulta no número real representado. Exemplo: 1011(binário) 1 × 23 + 0 × 22 + 1 × 21 + 1 × 20 = 11 Portanto, 1011 é 11 em decimal Decimais em binários Dado um número decimal inteiro, para convertê-lo em binário, basta dividi-lo sucessivamente por 2, anotando o resto da divisão inteira: 12(dec) -> bin 12 / 2 = 6 + 0 06 / 2 = 3 + 0 03 / 2 = 1 + 1 01 / 2 = 0 + 1 12(dec) = 1100(bin) Observe que os números devem ser lidos de baixo para cima: 1100 é 12 em decimal. Existe um método muito simples para converter binário em decimal, e viceversa. | 128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 | 0 0 0 0 1 0 1 0 = 10 (2+8=10) 0 0 0 1 1 0 0 0 = 24 (8+16=24) 1 1 0 0 0 0 0 0 = 192 (64+128=192) 1 0 1 1 1 0 1 0 = 186 (2+8+16+32+128=186) Decimais fracionários em binários Exemplo I 0.562510 Parte inteira = 0 10 = 02 Parte fracionária = 0.562510 Multiplica-se a parte fracionária por 2 sucessivamente, até que ela seja igual a zero ou cheguemos na precisão desejada. Introdução à Ciência da Computação Professor Menezes SISTEMA DE NUMERAÇÃO 9-9 fração x 2 = vai-um + fração seguinte 0.5625 x 2 = 1 + 0.1250 0.1250 x 2 = 0 + 0.2500 0.2500 x 2 = 0 + 0.5000 0.5000 x 2 = 1 + 0.0000 <-- nesta linha a fração zerou, finalizamos a conversão Anotando a seqüência de vai-um (carry) na ordem de cima para baixo, temos: 1001 Portanto, 0.562510 = 0.10012 No entanto, é mais comum nunca zerarmos a fração seguinte da multiplicação. Neste caso, devemos parar as multiplicações quando atingirmos uma certa precisão desejada. Exemplo II 67.57510 Parte inteira = 6710 = 10000112 Parte fracionária = 0.5752 fração x 2 = vai-um + fração seguinte 0.5750 x 2 = 1 + 0.1500 0.1500 x 2 = 0 + 0.3000 0.3000 x 2 = 0 + 0.6000 <--- esta fração e suas subseqüentes serão repetidas em breve. 0.6000 x 2 = 1 + 0.2000 0.2000 x 2 = 0 + 0.4000 0.4000 x 2 = 0 + 0.8000 0.8000 x 2 = 1 + 0.6000 <--- a partir daqui repetimos a fração 0.6000 e suas subseqüentes 0.6000 x 2 = 1 + 0.2000 Ou seja, entramos em um ciclo sem fim. Escolhemos uma precisão e finalizamos o processo quando esta precisão for atingida, então na ordem de cima para baixo, temos: 100100112 Soma de Binários Para somar dois números binários, o procedimento é o seguinte: Exemplo 1: * 1100 + 111 ----= 10011 Explicando: Os números binários são base 2, ou seja, há apenas dois algarismos: 0 (zero) ou 1 (um). Na soma de 0 com 1 o total é 1. Quando se soma 1 com 1, o resultado é 2, mas como 2 em binário é 10, o resultado é 0 (zero) e passa-se o outro 1 para a "frente", ou seja, para ser somado com o próximo elemento, conforme assinalado pelo asterisco. Exemplo 2: Introdução à Ciência da Computação Professor Menezes SISTEMA DE NUMERAÇÃO 10-10 ** 1100 + 1111 ----= 11011 Explicando: Nesse caso acima (exemplo 2), na quarta coluna da direita para a esquerda, nos deparamos com uma soma de 1 com 1 mais a soma do 1 ( * ) que veio da soma anterior. Quando temos esse caso (1 + 1 + 1), o resultado é 1 e passa-se o outro 1 para frente. Subtração de Binários Para subtrair dois números binários, o procedimento é o seguinte: * *** 1101110 - 10111 ------= 1010111 Explicando: Quando temos 0 menos 1, precisamos "emprestar" do elemento vizinho. Esse empréstimo vem valendo 2 (dois), pelo fato de ser um número binário. Então, no caso da coluna 0 - 1 = 1, porque na verdade a operação feita foi 2 - 1 = 1. Esse processo se repete e o elemento que cedeu o "empréstimo" e valia 1 passa a valer 0. Os asteriscos marcam os elementos que "emprestaram" para seus vizinhos. Perceba, que, logicamente, quando o valor for zero, ele não pode "emprestar" para ninguém, então o "pedido" passa para o próximo elemento e esse zero recebe o valor de 1. Multiplicação de Binários A multiplicação entre binários é similar a realizada normalmente. A única diferença está no momento de somar os termos resultantes da operação: 1011 x1010 --------0000 + 1011 + 0000 +1011 --------------=1101110 * Perceba que na soma de 0 e 1 o resultado será 1, mas na soma de 1 com 1, ao invés do resultado ser 2, ele será 0 (zero) e passa-se o 1 para a próxima coluna, conforme assinalado pelo asterisco. Nota que se a soma passar de 2, deve-se somar o número em binário correspondente ( ex. 4 = 100, 3 =11). 111 x 111 Introdução à Ciência da Computação SISTEMA DE NUMERAÇÃO 11-11 Professor Menezes --------111 + 111 + 111 --------------= 110001 No caso, a terceira coluna a soma dá 4 (com mais um da anterior), que adiciona um "1" duas colunas depois (100). Divisão de Binários Essa operação também é similar a realizada entre números decimais: 110 |__10__ - 10 11 -010 - 10 -00 Deve-se observar somente a regra para subtração entre binários. Nesse exemplo a divisão de 110 por 10 teve como resultado 11. Exercício 1. Converter para o equivalente no sistema decimal: a) 11001100 b) 110110 c) 111000111 d) 11011 e) 101010 2. Converter os números decimais abaixo para os binários equivalentes: a) 285 b) 473 C) 694 3. Achar as diferenças binárias: a) 11100111 x 11 b) 111011 x 1011 c) 11101 x 1101 4. Converter para decimal: a) 42056 b) 1420325 c) 153B16 5. O que está errado? a) 15324 b) 21937 c) 10132 6. Reescreva o número decimal 3263 nas bases: a) 83 b) 4 Introdução à Ciência da Computação c) 12 (use A = 10 e B = 11)