ARITMÉTICA BINÁRIA São duas as operações executadas pelo computador: - A adição - A comparação Todas as outras operações são executadas por meio de adições. Assim, para a subtracção, acha-se o complemento do subtractivo e faz-se uma adição. A multiplicação é feita por adições sucessivas e a divisão por subtracções sucessivas. Complemento do sistema binário Denomina-se complemento verdadeiro e basta trocar os uns (1,1) por zeros (0,0) e vice-versa e adicionar um ao último da direita. Exemplo: ADIÇÃO 1 0 0 1 0 0 1 1 0 1 + 1 0 1 1 1 0 Para somar dois números binários, fazem-se as contas coluna a coluna, da direita para a esquerda, como de costume, fazendo o transporte de um (<e vai um>) quando for o caso. Para isso é necessário ter em conta as seguintes tabelas: Tabela do 0 Tabela do 1 0 + 0 = 0 1 + 0 = 1 0 + 1 = 1 1 + 1 = 10 ( 1 mais 1 é igual a 0 e vai 1 ) 1 + 1 + 1 = 11 ( 1 mais 1 mais 1 é igual a 1 e vai 1 )
Exemplo: 1 0 1 + 1 1 1 0 1 ( 1 + 0 = 1 ) 1 0 1 + 1 1 1 0 1 1 ( 0 + 1 = 1 ) 1 0 1 + 1 1 1 0 0 1 1 ( 1 + 1 = 0, e vai 1 ) 1 0 1 + 1 1 1 0 0 0 1 1 ( 1 + 1 que ia de trás = 0 e vai 1 ) 1 0 1 + 1 1 1 0 1 0 0 1 1 ( 1 + 0 = 1 ) Vamos ver outras formas com outros exemplos. Somar os números 100100 e 10010 1 0 0 1 0 0 36 + 1 0 0 1 0 +18 1 1 0 1 1 0 54 De verificar que não houve transportes nas somas parciais.
Somar os números 11001 e 10011 1 1 1 Transportes 1 1 0 0 1 25 + 1 0 0 1 1 +19 1 0 1 1 0 0 44 Somar os números 101110 e 1110 1 1 1 Transportes 1 0 1 1 1 0 46 + 1 1 1 0 +14 1 1 1 1 0 0 60 Somar os números 10101101 e 100010111 1 1 1 1 1 1 Transportes 1 0 1 0 1 1 0 1 173 + 1 0 0 0 1 0 1 1 1 +279 1 1 1 0 0 0 1 0 0 452 Somar os números 10,1 e 11,01 1 1 0, 1 2,5 + 1 1, 0 1 + 3,25 1 0 1, 1 1 5,75
SUBTRACÇÃO Existem duas formas para fazer a subtracção binária: 1ª. Forma Como o conjunto de símbolos contém apenas 2 dígitos, ao se efectuar a subtracção parcial entre 2 dígitos, um do diminuendo e outro do diminuidor, se o segundo ( diminuidor ) exceder o primeiro ( diminuendo ), subtrai-se uma unidade ao dígito imediatamente à esquerda no diminuendo ( se existir e o seu valor for 1 ), convertendo-o a 0. Em seguida, substituímos o diminuendo por 2, que corresponde à equivalência 1*2, da unidade extraída. Se o dígito imediatamente à esquerda for 0, procura-se nos dígitos consecutivos, levando em conta que o seu valor é multiplicado por 2 a cada deslocamento à direita. Vamos considerar as seguintes tabelas: Tabela do 1 Tabela do 0 1-0 = 1 0-0 = 0 1-1 = 0 0-1 não cabe Exemplos: Subtrair os números 11101 e 111. 2 0 0 2 1 1 1 0 1 2 9-0 0 1 1 1-7 1 0 1 1 0 2 2 Subtrair os números 111111 e 101010. 1 1 1 1 1 1 6 3-1 0 1 0 1 0-4 2 0 1 0 1 0 1 2 1
Subtrair os números 110100101 e 11101000. 2 1 2 1 0 0 2 0 2 2 1 1 0 1 0 0 1 0 1 4 2 1-0 1 1 1 0 1 0 0 0-2 3 2 0 1 0 1 1 1 1 0 1 1 8 9 Subtrair os números 11,01 e 10,1. 2ª. Forma 0 2 1 1, 0 1 3, 2 5-1 0, 1 0-2, 5 0 0 0, 1 1 0, 7 5 Esta subtracção é feita pelo chamado método do complemento para dois. Vejamos um exemplo: Diminuendo 1 1 1 0 Diminuidor 0 1 0 1 1. Inverte-se o diminuidor, isto é, trocam-se os zeros por uns, e os uns por zeros. 0 1 0 1 1 0 1 0 2. Soma-se o diminuendo ao inverso do diminuidor. 1 1 1 0 + 1 0 1 0 1 1 0 0 0
3. Soma-se <um> ao resultado. 1 1 0 0 0 + 1 1 1 0 0 1 4. Despreza-se o transporte final. 1 1 0 0 1 A resposta é, então 1110-0101 = 1001 Outros exemplos: Subtrair os números 11011 e 10100. 1 0 1 0 0 2 0 0 1 0 1 1 1 1 0 1 1 2 7 + 0 1 0 1 1 1 0 0 1 1 0 + 1 1 0 0 1 1 1 7 Subtrair os números 101101 e 10. 0 0 0 0 1 0 2 1 1 1 1 0 1 1 0 1 1 0 1 4 5 + 1 1 1 1 0 1 1 1 0 1 0 1 0 + 1 1 1 0 1 0 1 1 4 3
MULTIPLICAÇÃO A multiplicação na base 2 - ou em qualquer outra base - pode fazer-se por adições sucessivas; para calcular A * B basta somar A a si própria B vezes. Exemplo: 1 0 1 * 1 0 0 =? De recordar que 100 (2) = 4 (10) então 1 1 1 1 0 1 1 1 0 1 100 vezes 1 1 0 1 + 1 0 1 1 0 1 0 0 Uma forma, e a ideal, é fazer a operação semelhante à multiplicação decimal, excepto pelo facto da soma final dos produtos se fazer em binário. As tabelas de multiplicação são: Tabela do 0 Tabela do 1 0 * 0 = 0 1 * 0 = 0 0 * 1 = 0 1 * 1 = 1
Exemplos: Multiplicar os números 1011 e 1101. 1 0 1 1 1 1 * 1 1 0 1 1 3 1 0 1 1 0 0 0 0 1 0 1 1 + 1 0 1 1 1 0 0 0 1 1 1 1 1 4 3 Multiplicar os números 1001 e 1101. 1 0 0 1 9 * 1 1 0 1 1 3 1 0 0 1 0 0 0 0 1 0 0 1 + 1 0 0 1 1 1 1 0 1 0 1 1 1 7 Multiplicar os números 1010101 e 101. 1 0 1 0 1 0 1 8 5 * 1 0 1 5 1 0 1 0 1 0 1 0 0 0 0 0 0 0 + 1 0 1 0 1 0 1 1 1 0 1 0 1 0 0 1 4 2 5
Multiplicar os números 110101 e 1101. 1 1 0 1 0 1 5 3 * 1 1 0 1 1 3 1 1 0 1 0 1 0 0 0 0 0 0 1 1 0 1 0 1 + 1 1 0 1 0 1 1 0 1 0 1 1 0 0 0 1 6 8 9 Multiplicar os números 11010 e 101010. 1 0 1 0 1 0 4 2 * 1 1 0 1 0 2 6 0 0 0 0 0 0 1 0 1 0 1 0 0 0 0 0 0 0 1 0 1 0 1 0 + 1 0 1 0 1 0 1 0 0 0 1 0 0 0 1 0 0 1 0 9 2 DIVISÃO Analogicamente, a divisão pode ser feita por subtracções sucessivas, até obtermos uma diferença igual a zero. Exemplo: 1 0 0 0 0 1 0 0 0 =? 1 0 0 0 0-1 0 0 0 0 1 0 0 0 1 vez - 1 0 0 0 0 0 0 0 0 2 vezes O resultado é 2 (10), isto é, 10 (2)
Mas esta divisão pode ser feita de maneira idêntica à divisão decimal, excepto pelo facto das multiplicações e subtracções internas ao processo serem feitas em binário. Exemplo: Dividir 11011 e 101. 1 1 0 1 1 = 2 7 1 0 1 = 5 1 1 0 1 1 1 0 1-1 0 1 1 0 1 0 0 1 1 1-1 0 1 o quociente é 1 0 1 0 1 0 e o resto é 1 0 Dividir 1010101 e 101. 1 0 1 0 1 0 1 = 8 5 1 0 1 = 5 1 0 1 0 1 0 1 1 0 1-1 0 1 1 0 0 0 1 0 0 0 0 1 0 1-1 0 1 0 0 0 A prova é: 1 0 0 0 1 quociente * 1 0 1 divisor 1 0 0 0 1 0 0 0 0 0 + 1 0 0 0 1 1 0 1 0 1 0 1 dividendo
Dividir 100010 e 110. 1 0 0 0 1 0 = 3 4 1 1 0 = 6 1 0 0 0 1 0 1 1 0-1 1 0 1 0 1 0 0 1 0 1 0-1 1 0 1 0 0 A prova é: 1 1 0 quociente * 1 0 1 divisor 1 1 0 0 0 0 + 1 1 0 1 1 1 1 0 + 1 0 0 resto 1 0 0 0 1 0 dividendo Dividir 10001000100 e 101010. 1 0 0 0 1 0 0 0 1 0 0 = 1 0 9 2 1 0 1 0 1 0 = 4 2 1 0 0 0 1 0 0 0 1 0 0 1 0 1 0 1 0-1 0 1 0 1 0 1 1 0 1 0 0 1 1 0 1 0 0-1 0 1 0 1 0 0 0 1 0 1 0 1 0-1 0 1 0 1 0 0 0 0 0 0 0 0
ARITMÉTICA HEXADECIMAL ADIÇÃO Nada como ver um exemplo para verificar como se soma em hexadecimal. 1º. Exemplo: 8 H + 4 H Como sabemos, em decimal, 8 + 4 = 12. Em Hexadecimal, a quantidade «doze» é representada por «C», pelo que fica 8 H + 4 H C H 2º. Exemplo: F H + 3 H F H + 3 H 1 2 H Se convertermos para decimal, teremos 15 + 3 = 18. Reconvertendo o resultado para a base 16 De reparar que, tal como nos habituámos a fazer na Escola Primária, sempre que o resultado iguala ou ultrapassa a base, subtraímos esta ao resultado, e fazemos um transporte para a coluna seguinte («e vai um», neste caso). 15 + 3 = 18 18 é maior que a base (16), pelo que fazemos 18-16 = 2
e o resultado vem 3º. Exemplo: FH + 3H 2H ( e vai um ) FH + 3H 12H F 8 H + A 3 4 H Não é preciso converter os números F8H e A34H para decimal, somá-los e reconverter o resultado para a base 16. Podemos fazer a conta coluna a coluna, como já sabes. Então fica: F 8 H F 8 H + A 3 4 H + A 3 4 H C H F 8 H + A 3 4 H e vai um 2 C H F 8 H + A 3 4 H B 2 C H porque A + 1 = B
Exemplos: Fazer a adição dos seguintes números hexadecimais: 906H e A1DH 9 0 6 H + A 1 D H 1 3 2 3 H Fazer a adição dos seguintes números hexadecimais: AAABH e A9DH A A A B H + A 9 D H B 5 4 8 H SUBTRACÇÃO 1º. Exemplo: 0H - 0H = 1H - 0H = BH - AH = completa 2º. Exemplo: B B 0 1 H - A 1 0 0 H 1 A 0 1 H
3º. Exemplo: 2 7 H - 1 E H Efectuamos a operação coluna a coluna. Na primeira coluna, o diminuidor (E) é superior ao diminuendo (7). Então, adicionamos a base ao diminuendo, executamos a subtracção, e há transporte de uma unidade que somamos ao diminuidor da coluna seguinte. 2 7 H - 1 E H 9 H «e vai um» 1 (de transporte) e 1 (diminuidor da coluna da esquerda) = 2 2 (diminuendo) - 2 = 0 (resultado) 2 7 H - 1 E H 0 9 H Exemplos: Fazer a subtracção dos seguintes números hexadecimais: E71H e 958H E 7 1 H - 9 5 8 H 5 1 9 H
Fazer a subtracção dos seguintes números hexadecimais: 22ABCH e 358FH 2 2 A B C H - 3 C F F H 1 E D B D H MULTIPLICAÇÃO Esta operação pode fazer-se facilmente por meio da tabela de dupla entrada apresentada: MULTIPLICAÇÃO HEXADECIMAL 1 2 3 4 5 6 7 8 9 A B C D E F 1 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 2 02 04 06 08 0A 0C 0E 10 12 14 16 18 1A 1C 1E 3 03 06 09 0C 0F 12 15 18 1B 1E 21 24 27 2A 2D 4 04 08 0C 10 14 18 1C 20 24 28 2C 30 34 38 3C 5 05 0A 0F 14 19 1E 23 28 2D 32 37 3C 41 46 4B 6 06 0C 12 18 1E 24 2A 30 36 3C 42 48 4E 54 5A 7 07 0E 15 1C 23 2A 31 38 3F 46 4D 54 5B 62 69 8 08 10 18 20 28 30 38 40 48 50 58 60 68 70 78 9 09 12 1B 24 2D 36 3F 48 51 5A 63 6C 75 7E 87 A 0A 14 1E 28 32 3C 46 50 5A 64 6E 78 82 8C 96 B 0B 16 21 2C 37 42 4D 58 63 6E 79 84 8F 9A A5 C 0C 18 24 30 3C 48 54 60 6C 78 84 90 9C A8 B4 D 0D 1A 27 34 41 4E 5B 68 75 82 8F 9C A9 B6 C3 E 0E 1C 2A 38 4C 54 62 70 7E 8C 9A A8 B6 C4 D2 F 0F 1E 2D 3C 4B 5A 69 78 87 96 A5 B4 C3 D2 E1 Como se vê, temos todos os algarismos hexadecimais ( excepto o zero ) nas entradas verticais e horizontais da tabela. Se quiséssemos calcular 5H * 9H, por exemplo, encontraríamos o resultado na intersecção da coluna 5 com a linha 9. Então, 5H * 9H = 2DH. Uma vez que a multiplicação é comutativa, então, o mesmo resultado se verifica na intersecção da coluna 9 com a linha 5.
1º. Exemplo: 2º. Exemplo: AH * 2H = 2H * 7H = completa 6 7 A H * 3 2 H Procedendo como de costume, vamos começar pelo produto do multiplicando pelo algarismo mais à direita do multiplicador: 6 7 A H * 3 2 H 6 7 A H Na tabela, vemos que A * 2 = 14; então, * 3 2 H escrevemos «4» e há transporte de 1 unidade 4 H (e vai um) 6 7 A H 2H * 7H = 0EH; 0EH + 1 (de transporte) * 3 2 H = 0FH; escreve-se «F», e não há transporte. F 4 H 6 7 A H 2H * 6H = 0CH; escreve-se «C», e não há * 3 2 H transporte. C F 4 H
Calculámos em seguida o produto do multiplicando pelo 2º. algarismo (contando a partir da direita) do multiplicador. 6 7 A H * 3 2 H C F 4 1 3 6 E Agora é só somar os produtos parciais. Fica: 6 7 A H * 3 2 H C F 4 1 3 6 E 1 4 3 D 4 H Exemplo: Fazer o produto dos seguintes números hexadecimais: B12H e 3FCH B 1 2 H * 3 F C H 8 4 D 8 A 6 0 E 2 1 3 6 2 C 1 B B 8 H
DIVISÃO Esta é a operação mais difícil de fazer sem recorrer-mos á tabela anterior. Vamos ver um exemplo muito simples: 1º. Exemplo Dividir os números hexadecimais 2F por 12. 2 F 1 2 B 2 2 * 2 = 4; F - 4 = B 2 F 1 2 0 B 2 2 * 1 = 2; 2-2 = 0 Para verificarmos se é verdade, nada melhor que fazer a prova: 1 2 H divisor * 2 H quociente 2 4 H + B H resto 2 F H dividendo 2º. Exemplo Dividir os números hexadecimais 3F4 por 1A. 3 F 4 1 A B 2 2 * A = 4 (e vai um); F - 4 = B 3 F 4 1 2 0 B 2 2 * 1 = 2 + 1 do transporte = 3; 3-3 = 0
3 F 4 1 A 0 B 4 2 6 6 * A = C (e vão três); 4 - C = 8 (e vão 4) 1 8 6 * 1 = 6 + 4 do transporte = 10; B - A =1 Para verificarmos se é verdade, nada melhor que fazer a prova: 1 A H divisor * 2 6 H quociente 9 C 3 4 3 D C H + 1 8 H resto 3 F 4 H dividendo Exemplo: Dividir os números hexadecimais 21F por A1 2 1 F A 1 3 C 3 A 1 * 3 1 D 3 + 3 C 2 1 F