Departamento de Engenharias e Ciência da Computação – DECC Curso de Ciência da Computação Disciplina de Introdução a Informática Prof. Ms. Paulo Ricardo B. Betencourt REPRESENTAÇÃO DE DADOS Os conceitos vinculados à conversão de base, cálculo aritméticos em diferentes bases e complementos, são necessários à construção dos computadores. Basicamente estes conceitos são usados para a construção de circuitos digitais (usados no HW), que juntamente com as chamadas portas lógicas (estudadas em estruturas algébricas), são combinados formando o coração do processador, a UAL (Unidade Aritmética e Lógica), de onde partem todas as outras partes que o formam. Através de uma série de circuitos que fazem somas, subtrações, comparações, entre outros, os bits podem ser interpretados e arranjados da forma que quisermos. Estes conhecimentos são essenciais ainda para o estudo de circuitos digitais, lógica para computação, arquitetura de computadores, entre outras áreas. SISTEMAS DE NUMERAÇÃO EVOLUÇÃO: Desde tempos remotos o homem utiliza a escrita para registrar e transmitir informação. A escrita vai do antigo hieróglifo egípcio até o alfabeto latino atual. O alfabeto, como conjunto de símbolos, se desenvolve originalmente na Grécia e posteriormente em Roma e constitui a origem de nosso alfabeto atual. Uma das primeiras tentativas de registro de quantidades sob a forma escrita foi o sistema de numeração indo-arábico, do qual são derivados os atuais sistemas de numeração decimal. O SISTEMA DE NUMERAÇÃO é o conjunto de símbolos utilizados para representação de quantidades e as regras que definem a forma de representação. Um sistema de numeração é determinado fundamentalmente pela base (número de símbolos utilizados). A base é o coeficiente que determina qual o valor de cada símbolo de acordo com a sua posição. OBS: dado – elementos distintos de uma informação; Informação – coleção de dados representada de forma compreensível ao ser humano. TIPOS DE SISTEMAS DE NUMERAÇÃO SISTEMAS NÃO POSICIONAIS São aqueles em que o valor atribuído a um símbolo não se altera, independentemente da posição em que ele se encontra no conjunto de símbolos que está representando uma quantidade. Ex. Sistema de numeração romano XXI 10 10 X I X 1 10 1 10 SISTEMAS POSICIONAIS São aqueles em que o valor atribuído a um símbolo depende da posição em que se encontra no conjunto no conjunto de símbolos que está representando uma quantidade. Ex. Sistema de numeração decimal 5 7 3 500 70 3 5 7 3 300 50 7 3 5 7 700 30 5 ELEMENTOS BIESTÁVEIS A base física da informação no computador é o elemento biestável. Um elemento biestável é um dispositivo que pode representar somente dois estados, o estado 0 e o estado 1. Ex. Chave: aberta e fechada; lâmpada: acesa e apagada. Um conjunto formado por dois elementos terá quatro estados possíveis e poderá representar quatro opções: 00, 01, 10 e 11. Um conjunto de 3 elementos biestáveis representará oito opções e, em geral, um conjunto com n elementos poderá representar até 2ⁿ opções. Com oito elementos, como em um byte, poderemos representar até 2ⁿ, onde n=8, ou seja, 256 elementos, de 0 a 255. As formas de assinalar números e outras informações a conjuntos de bits são, em realidade, muitas, existindo formas padrões de agrupar os bits e os estados que estes conjuntos podem representar. REPRESENTAÇÃO NUMÉRICA A representação de quantidade no computador se baseia na representação de quantidades mediante sistemas numéricos tradicionalmente conhecidos. Estes sistemas numéricos são posicionais, isto é, cada quantidade é representada em uma única forma, mediante uma certa combinação de símbolos, que tem um significado distinto, segundo sua posição. No sistema decimal, por exemplo, cada posição tem um valor intrínseco que equivale a dez vezes o valor da posição que está imediatamente a sua direita. Supondo que a cada posição designamos uma casa, o valor das casas vai aumentando para a esquerda de 10 em 10 vezes e os dígitos ou símbolos que podemos colocar nelas são 0, 1, 2, 3, 4, 5, 6, 7, 8 e 9, os quais possuem um valor intrínseco distinto para cada um. Se representarmos o número 245 assinalando um símbolo a cada casa, indicando o valor de cada casa, teremos: Valor da 1000 100 10 1 0,1 0,01 casa Dígitos 0 2 4 5 0 0 O significado de cada dígito em determinada posição é o valor da casa multiplicado pelo valor do dígito e a quantidade representada é a soma de todos os produtos. Um sistema numérico deste tipo, em que o valor de cada casa é dez vezes o valor da casa imediatamente a sua direita, é conhecido como sistema decimal, ou de base dez. Se o valor da casa é um outro número de vezes o valor da casa à direita, o sistema poderá ser de base dois ou binário, de base dezesseis ou hexadecimal, etc. Para cada um destes sistemas necessitamos de um conjunto de símbolos distintos. Por exemplo, o sistema hexadecimal utiliza os símbolos 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E e F, onde A equivale a dez, B equivale a onze e assim consecutivamente até F que equivale a quinze. Deduzimos, então, que, para cada sistema numérico, utilizamos a quantidade de símbolos que representa a base, quer dizer, para o sistema de base dez, utilizaremos dez símbolos, para o sistema hexadecimal, utilizaremos dezesseis símbolos, e para o sistema binário, utilizaremos apenas dois símbolos. No computador, temos em princípio, apenas dois símbolos (0 e 1) portanto, poderíamos trabalhar somente com sistema binário. Porém, como veremos adiante, poderemos combinar dois ou mais bits ou símbolos binários para representar símbolos de outra base. As alternativas são: arepresentar todas as quantidades em sistema binário, utilizando somente os símbolos 0 e 1, em que cada bit representa um dígito ou símbolo; e bagrupar estes bits, de maneira a representar um dígito mediante um conjunto de bits. Se utilizarmos a alternativa (b) poderemos agrupar os bits em conjuntos de 4, de tal modo que, para cada grupo, tenhamos dezesseis possibilidades de representação e poderemos, então, utilizar o sistema hexadecimal. SISTEMA BINÁRIO A maneira mais óbvia de representar quantidades por meio de bits é o sistema numérico, conhecido com sistema binário, ou sistema numérico de base 2. Neste sistema, cada número se representa de uma forma única, mediante uma combinação de símbolos 0 e 1, que, em nosso caso, será uma combinação de “estados 1” e “estados 0” dos bits que forma um conjunto ordenado. Designaremos por Bi cada bit deste conjunto ordenado, no qual o sub-índice i corresponde ao número da casa que está ocupando. Cada casa vale duas vezes aquela que está imediatamente a sua direita. Desta forma, teremos que, se o valor da primeira casa da direita for 20, a segunda valerá 20 x 2 = 21, e assim consecutivamente para a esquerda. Os valores das casa ficam claros no seguinte esquema: … 26 25 24 23 22 21 20 2-1 2-2 … Se b0, b1, b2, etc., são os bits que se coloca em cada posição, a quantidade representada valerá: …… b424 + b323 + b222 + b121 + b020 + b-12-1 + ……. Para evitar a representação mediante o somatório, adota-se a convenção de separar mediante vírgulas as casas 20 e 2-1, de tal modo que a representação fique: …… b4 b3 b2 b1 b0 b-1 ……. Em que bI = 0 ou 1. Exemplo: o número binário 10011,01 representa a quantidade: …… 1 x 24 + 0 x 23 + 0 x 22 + 1 x 21 + 1 x 20 + 0 x 2-1 + 1 x 2-2 ……. SISTEMA OCTAL No sistema octal ou sistema de base 8, cada casa vale 8 vezes a que está a sua direita, e os símbolos utilizados são: 0, 1, 2, 3, 4, 5, 6 e 7. Exemplo o número octal 4701 representa a quantidade decimal 2497. Designaremos por Bi cada número deste conjunto ordenado, no qual o sub-índice i corresponde ao número da casa que está ocupando. Cada casa vale oito vezes aquela que está imediatamente a sua direita. Desta forma, teremos que, se o valor da primeira casa da direita for 80, a segunda valerá 80 x 8 = 81, e assim consecutivamente para a esquerda. Os valores das casas ficam claros no seguinte esquema: … 86 85 84 83 82 81 80 8-1 8-2 … Se b0, b1, b2, etc., são os números que se coloca em cada posição, a quantidade representada valerá: …… b484 + b383 + b282 + b181 + b080 + b-18-1 + ……. Para evitar a representação mediante o somatório, adota-se a convenção de separar mediante vírgulas as casas 80 e 8-1, de tal modo que a representação fique: …… b4 b3 b2 b1 b0 b-1 ……. Em que bI = 0,1,2,3,4,5,6, ou 7. Exemplo: o número octal (4701)8 representa a quantidade: (2497)10 …… 0 x 84 + 4 x 83 + 7 x 82 + 0 x 81 + 1 x 80 + 0 x 8-1 + 0 x 8-2 ……. SISTEMA HEXADECIMAL No sistema hexadecimal ou sistema de base 16, cada casa vale dezesseis vezes a que está a sua direita, e os símbolos utilizados são: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E e F, onde A equivale a dez, B equivale a onze e assim consecutivamente até F que equivale a quinze, no sistema decimal. Exemplo o número hexadecimal A17,B9 representa a quantidade: A x (16)210 + 1 x (16)110 + 7 x (16)010 + B x (16)-110 + 9 x (16)-210 A representação do conjunto dos símbolos deste sistema pode realizar-se mediante grupos de quatro bits, em que cada símbolo se faz corresponder com sua representação binária: (0000)…………………………0 (0001)…………………………1 (0010)…………………………2 (0011)…………………………3 (0100)…………………………4 (0101)…………………………5 (0110)…………………………6 (0111)…………………………7 (1000)…………………………8 (1001)…………………………9 (1010)…………………………A (1011)…………………………B (1100)…………………………C (1101)…………………………D (1110)…………………………E (1111)…………………………F Desta forma, o nosso número A17,B9 ficaria em binário: 101000010111,10111001 É possível considerar, do conjunto de símbolos hexadecimais representados em binário, aqueles que correspondem a um sistema decimal codificado em binário. Em tal caso, a expressão binária dos dígitos A, B, C, D, E, F não teria significado. TRANSFORMAÇÕES NUMÉRICAS BINÁRIO EM DECIMAL Já foi visto quando da explicação do sistema binário. Exemplo: 11001 1 x 24 + 1 x 23 + 0 x 22 + 0 x 21 + 1 x 20 = 16 + 8 + + 0 + 0 + 1 = 25 DECIMAL EM BINÁRIO Existem duas maneiras de efetuarmos as conversões de números binários para números decimais. a) Por subtração da potência de 2 imediatamente inferior ao decimal. Exemplo: 197 o binário será: 1 1 27 27 197 – 128 = 69 69 – 64 = 5 5– 4 = 1 1– 1 = 0 26 22 20 0 26 1 23 0 25 0 24 0 22 1 21 20 (197)10 = (11000101)2 b) Mediante divisões sucessivas por dois, tomando-se os restos das divisões no sentido ascendente. Exemplo1: 197 197 2 1 98 2 0 49 2 1 24 2 0 12 2 0 6 2 0 3 2 1 1 2 1 0 Exemplo 2: 943 943 2 1 471 2 1 235 2 1 117 2 1 58 2 0 29 2 1 14 2 0 7 2 1 3 2 1 1 2 1 0 (943)10 = (1110101111)2 BINÁRIO EM OCTAL Divide-se o número em grupos de três bits, a partir da direita, substituindo-se tais grupos pelos símbolos octais correspondentes. Quando o número for fracionário, deve-se começar a divisão em grupos de três, a partir da vírgula, em ambas as direções. Exemplo: 101001111 (101001111)2 100100111 (100100111)2 101 ( 5 001 1 111 7)8 = 5178 ( 4 100 4 100 111 7)8 = 4478 Se a divisão em grupos de três deixar os grupos extremos com menos de três dígitos, completá-los com zeros. 1010011 1 010 011 001 010 ( 1 2 011 3)8 (1010011)2 (1010011)2 = (123)8 OCTAL EM BINÁRIO Usa-se o processo inverso ao anterior. Exemplo: (327)8 3 2 7 011 010 111 (327)8 = (011010111)2 DECIMAL EM OCTAL Para efetuarmos as conversões de números decimais em números octais realizaremos esta operação mediante divisões sucessivas por oito, tomando-se os restos das divisões no sentido ascendente. Exemplo1: (3964)10 3964 8 4 495 8 7 61 8 5 7 (3964)10 = (7574)8 Exemplo 2: (943)10 943 8 7 117 8 5 14 8 6 1 (943)10 = (1657)8 OCTAL EM DECIMAL Já foi visto quando da explicação do sistema octal. Exemplo: 1657 1 x 83 + 6 x 82 + 5 x 81 + 7 x 80 = 512 + 384 + 4 0 + 7 = 943 BINÁRIO EM HEXADECIMAL Divide-se o número em grupos de quatro bits, a partir da direita, substituindo-se tais grupos pelos símbolos hexadecimais correspondentes. Quando o número for fracionário, deve-se começar a divisão em grupos de quatro, a partir da vírgula, em ambas as direções. Exemplo: 11110001 1111 0001 (11110001)2 (F 1)16 = F116 10010011 1001 0011 (10010011)2 (9 3)16 = 9316 Se a divisão em grupos de quatro deixar os grupos extremos com menos de quatro dígitos, completá-los com zeros. 101011 10 1011 0010 1011 (101011)2 (2 B)16 (101011)2 = (2B)16 HEXADECIMAL EM BINÁRIO Usa-se o processo inverso ao anterior. Exemplo: A56B (A56B)16 A 5 6 B 1010 0101 0110 1011 = (1010010101101011)2 HEXADECIMAL EM DECIMAL Usa-se o mesmo sistema para transforma binário em decimal, com a diferença entre base 2 para base 16. Exemplo: A6B A 6 B 10 x 16 2 + 6 x 16 1 + 11 x 16 0 11 = 2560 + 96 + (A6B)16 = (2667)10 DECIMAL EM HEXADECIMAL = (2667)10 Semelhante às transformações de decimal para binário, com divisões sucessivas pelo número 16. Exemplo 1: 273610 2736 16 0 mas, 171 16 11 10 16 10 0 (10)10 = (A)16 (11)10 = (B)16 então: (2736)10 Exemplo 2: 31810 = 318 16 14 19 16 3 1 16 1 0 (AB0)16 mas, (14)10 = (E)16 então: (318)10 = (13E)16 OCTAL EM HEXADECIMAL Converte-se primeiro o número octal para binário através do sistema onde divide-se o número em grupos de três bits, a partir da direita, substituindo-se tais grupos pelos símbolos octais correspondentes. Quando o número for fracionário, deve-se começar a divisão em grupos de três, a partir da vírgula, em ambas as direções. Após este primeiro procedimento agrupa-se o número binário em grupos de quatro dígitos da direita para a esquerda e realiza-se a conversão de binário para hexadecimal conforme sistema já mencionado. Exemplo 1: 1738 (001111011)2 001 111 011 ( 1 7 (001111011)2 001111011 (01111011)2 Exemplo 2: 4478 (100100111)2 100 (100100111)2 ( 4 000100100111 3)8 = ( 7 B)16 = 7B16 100 4 111 7)8 = 4478 1738 (1 2 7)16 = 12716 HEXADECIMAL EM OCTAL Usa-se o processo inverso ao anterior. Exemplo: (327)16 3 2 7 0011 0010 0111 (327)16=(001100100111)2 (1447)8 001 1 (327)16 100 4 100 4 111 7 (1447)8 OPERAÇÕES NUMÉRICAS ADIÇÃO ADIÇÃO BINÁRIA Como se sabe, no sistema decimal, quando se quer somar 9 com 1, o resultado é sempre 0 e vai 1, ou seja, é igual a 10. No sistema binário, ocorre o mesmo quando se soma 1 com 1. O resultado é 0 e vai 1, ou seja 10. As regras para a adição binária são as seguintes: 0 0 1 1 Exemplos: + + + + 0 1 0 1 = = = = 0 1 1 0 e vai 1 ( este resultado é escrito 10, mas diz-se “ um zero”. a) b) 1010 + 111 binário decimal 1010 10 + 0111 + 7 -------------------------------10001 17 1010 + 101 binário decimal 1010 10 + 0101 + 5 -----------------------------1111 15 = = ADIÇÃO HEXADECIMAL Segue as mesmas regras usadas na adição binária e decimal. É preciso não confundir a soma hexadecimal (16 símbolos) – com a decimal (10 símbolos). No sistema decimal 9 mais 2 é igual a 11, mas no sistema hexadecimal é B. Uma regra que deve ser seguida é a seguinte: ao serem somados dois números hexadecimais, se o resultado for maior que 15, subtrai-se 16 deste valor, coloca-se o resto como resultado e com ocorrência de tantos “vai um” quantos forem os múltiplos de 16 que entraram na subtração. Exemplos: 4B2C + + 1234 = 4B2C 1234 5D60 ou seja, C + 4 = 12 + 4 = 16 – 16 = 0 e “ vai um” 1+2+3=6 B+2=D 4+1=5 SUBTRAÇÃO SUBTRAÇÃO BINÁRIA Pode ser feita por soma de complemento desprezando-se o estouro. No sistema decimal, para se achar o complemento de um número procede-se da seguinte forma: Complemento de 733 1000 - 733 = 267 Assim, o número 267 é o complemento de 733. Por exemplo: 934 – 173 = 761 ou fazendo-se pelo complemento do número 173 1000 - 173 = 827 e somando-se 934 + 827 = 1761 desprezando-se o estouro, teremos o resultado de 761. Uma regra prática para se achar o complemento de um número binário é inverter o valor dos dígitos, ou seja, trocar todos os dígitos 1 por 0, e todos os dígitos 0 por 1, e, ao final, somar 1 ao número obtido anteriormente. Exemplo1: Achar o complemento de 1010 Invertê-lo Somar 1 0101 1 + 0110 Exemplo2: Achar o complemento de 11011 Invertê-lo Somar 1 00100 1 + 00101 Exemplo3: Subtrair Inverte-se o segundo Soma-se 1 1101 1011 + 0100 = 1 1100 soma-se o primeiro 1101 com o segundo invertido + 1100 11001 Despreza-se o estouro e obtêm-se o resultado 1001 OBS: Sempre que o tamanho do subtraendo for menor que o minuendo, acrescenta-se zeros à esquerda do número (subtraendo), antes de invertê-lo. SUBTRAÇÃO HEXADECIMAL Na subtração hexadecimal, procedemos da mesma forma como fazemos na subtração decimal, considerando-se, é claro, que o sistema hexadecimal tem 16 símbolos. Sempre que não pudermos subtrair um número de outro, ou seja, quando o minuendo é menor que o subtraendo, emprestamos 1 do número vizinho à esquerda. Este 1 emprestado tem valor de 16, assim como em decimal este 1 emprestado teria valor de 10. Somando ao minuendo e subtraído ao subtraendo, obtemos o resultado. Exemplo: 8A8 - - 1FA= 8A8 1FA 6AE Como o número 8 é menor que A, emprestamos 1 do vizinho que passa a valer 9. Este 1 emprestado passa a valer 16 que somado a 8 dá 24. Subtrai-se o subtraendo A = 10 de 24, obtendo-se 14, ou seja, E. Como 9 é menor que F, emprestamos 1 do vizinho, que passa a valer 7. Soma-se 16 ao 9, dando 25, menos F obtém-se A. E, finalmente, 7 menos 1 = 6. REPRESENTAÇÃO DE NÚMEROS INTEIROS Os computadores digitais utilizam principalmente quatro métodos para representar números inteiros: módulo de sinal (MS); complemento de 1 (C-1); complemento de 2 (C-2); excesso de 2 elevado a N-1. Nessas representações de números utiliza-se o sistema binário e considera-se que temos um número limitado de dígitos para cada dado numérico. Esse número de dígitos disponível é representado por N. MÓDULO DE SINAL (MS) Neste sistema de representação o bit que está situado mais a esquerda representa o sinal, e o seu valor será: 0 para o sinal +; e 1 para o sinal -. Os bits restantes representam o módulo do número. Exemplo: representar 10 e –10 Limitação de 8 bits (N=8) 10 0 0001010 -10 1 0001010 nº sinal módulo nº sinal módulo Denomina-se AMPLITUDE ou FAIXA de representação num determinado método o conjunto de números que podem ser nele representados. Para o sistema módulo de sinal, a faixa de representação para N dígitos é de: - 2 N-1 + 1 <= X <= + 2 N-1 - 1 Para oito bits a faixa é: - 127 <= X <= +127 Para dezesseis bits a faixa é: - 32767 <= X <= + 32767 Para trinta e dois bits a faixa é: - 2147483647 <= X <= + 2147483647 Vantagem: possuir faixa simétrica. Inconveniência: 2 representações para o número 0. Para 8 bits o 0 tem as seguintes representações: 00000000 (+0) 10000000 (-0) COMPLEMENTO DE 1 (C – 1) Este sistema de representação também utiliza o bit mais à esquerda para o sinal, correspondendo o 0 ao sinal + e o 1 ao sinal -. Para os números positivos, os N- 1 bits da direita representam o módulo. O simétrico de um número positivo é obtido pelo complemento de todos os seus dígitos (trocando 0 por 1 e vice-versa) incluindo o bit de sinal. Exemplo: representar 10 e –10 Limitação de 8 bits (N=8) 10 0 0001010 nº sinal módulo Número – 10 é o complemento do seu simétrico -10 1 1110101 nº sinal módulo Neste caso a faixa de representação é - 2 N-1 + 1 <= X <= + 2 N-1 - 1 Para oito bits a faixa é: - 127 <= X <= +127 Para dezesseis bits a faixa é: - 32767 <= X <= + 32767 Para trinta e dois bits a faixa é: - 2147483647 <= X <= + 2147483647 Vantagem: possuir faixa simétrica. Inconveniência: 2 representações para o número 0. Para 8 bits o 0 tem as seguintes representações: 00000000 (+0) 10000000 (-0) COMPLEMENTO DE 2 ( C – 2) Este sistema de representação utiliza o bit mais à esquerda para o sinal, correspondendo o 0 ao sinal + e o 1 ao sinal -. Para os números positivos, os N-1 bits da direita representam o módulo, igualmente ao MS e C - 1. O simétrico de um número é obtido em dois passos: 1º passo – obtém-se o complemento de todos os bits do número positivo (trocando 0 por 1 e vice-versa) incluindo o bit de sinal, isto é, executa-se o complemento de 1; 2º passo – ao resultado obtido no primeiro passo, soma-se 1 (em binário), desprezando o último transporte, se houver. Exemplo: complemento de 2 dos números 10 e –10 Limitação de 8 bits (N=8) 10 0 0001010 nº sinal módulo Número – 10 1º passo: complemento de 1 -10 1 1110101 nº sinal módulo 2º passo: 1110101 + 1 1110110 Neste caso a faixa de representação é - 2 N-1 + 1 <= X <= + 2 N-1 - 1 Para oito bits a faixa é: - 128 <= X <= +127 Para dezesseis bits a faixa é: - 32768 <= X <= + 32767 Para trinta e dois bits a faixa é: - 2147483648 <= X <= + 2147483647 Vantagem: uma única representação para o número 0. Para 8 bits teremos: Nº 0 00000000 (+0) Nº -0 passo 1 11111111 (-0) Passo 2 1 100000000 estouro desprezado Logo 0 e –0 tem a mesma representação. EXCESSO DE 2 ELEVADO A N - 1 O método de representação em excesso não utiliza nenhum bit para o sinal , de modo que todos os bits representam um módulo ou valor. Esse valor corresponde ao número representado mais um excesso, que para N bits é igual a 2 elevado a N – 1. Exemplo: para 8 bits o excesso é 128 ( 27 = 128), logo o número 10 é representado por 10 + 128 = 138; e o número –10 é representado por – 10 + 128 = 118. O número 10 é 10001010 O número – 10 é 01110110 Neste método o número 0 tem uma única representação, que para 8 bits corresponde a: número 0 (0 + 128) = 10000000 Neste caso a faixa de representação é assimétrica ( o que é inconveniente) e é dada por: - 2 N-1 + 1 <= X <= + 2 N-1 - 1 Para oito bits a faixa é: - 128 <= X <= +127 Para dezesseis bits a faixa é: - 32768 <= X <= + 32767 Para trinta e dois bits a faixa é: - 2147483648 <= X <= + 2147483647 É interessante observar que todo o número representado em excesso é igual a sua correspondente representação em complemento de 2, mas com o 1º dígito da esquerda trocado. SOMA EM COMPLEMENTO SOMA EM COMPLEMENTO DE 1 ( C – 1) Na aritmética de complemento de 1, dois números são somados da mesma forma que na representação binária. Com a diferença que, na ocorrência de transporte (carry) na soma parcial dos bits mais à esquerda, este transporte será somado ao resultado. Exemplo: somar os valores 10 e – 3 em complemento de 1, para 8 bits 10 em complemento de 1 é 00001010 (10) - 3 em complemento de 1 é 11111100 (-3) somando 1 00000110 carry Observe que houve carry. Este carry deve ser somado ao resultado obtido. Vejamos: 00000110 + 1 00000111 (7) que é o resultado da operação. SOMA EM COMPLEMENTO DE 2 ( C – 2) Na aritmética em complemento de 2, o processo é idêntico ao de complemento de 1, mas, desprezando-se o carry, se houver. Exemplo: somar os valores 10 e – 3 em complemento de 2, para 8 bits 10 em complemento de 2 é - 3 em complemento de 2 é somando 00001010 11111101 1 00000111 carry (10) (-3) (7) Observe que houve carry. Este carry deve ser desprezado. Lista de exercícios: Execute as seguintes transformações de base: 1. Binário em decimal a. (1010111)2 b. (11111111)2 c. (1011011011)2 d. (0100001)2 e. (110011)2 ( ( ( ( ( )10 )10 )10 )10 )10 f. (1000110001)2 g. (111000111)2 h. (1100110011)2 i. (00100100)2 j. (10101010)2 ( ( ( ( ( )10 )10 )10 )10 )10 2. Decimal em binário a. (193)10 b. (3057)10 c. (285)10 d. (630)10 e. (986)10 ( ( ( ( ( )2 )2 )2 )2 )2 f. (900)10 g. (815)10 h. (2929)10 i. (1500)10 j. (152)10 ( ( ( ( ( )2 )2 )2 )2 )2 )8 )8 )8 )8 )8 f. (1110000100)2 g. (1100101111)2 h. (101101110001)2 i. (10111011100)2 j. (10011000)2 ( ( ( ( ( ( ( ( ( ( )2 )2 )2 )2 )2 f. (032)8 g. (756)8 h. (903)8 i. (512)8 j. (707)8 ( ( ( ( ( )2 )2 )2 )2 )2 ( ( ( ( ( )8 )8 )8 )8 )8 f. (900)10 g. (815)10 h. (2929)10 i. (1500)10 j. (152)10 ( ( ( ( ( )8 )8 )8 )8 )8 3. Binário em octal a. (11000001)2 b. (101111110001)2 c. (100011101)2 d. (1011110110)2 e. (1111011010)2 ( ( ( ( ( 4. Octal em binário a. (1024)8 b. (102)8 c. (214)8 d. (523)8 e. (7700)8 5. Decimal em octal a. (193)10 b. (3057)10 c. (285)10 d. (630)10 e. (986)10 )8 )8 )8 )8 )8 6. Octal em decimal a. (1024)8 b. (102)8 c. (214)8 d. (523)8 e. (7700)8 ( ( ( ( ( )10 )10 )10 )10 )10 f. (032)8 g. (756)8 h. (903)8 i. (512)8 j. (707)8 ( ( ( ( ( )10 )10 )10 )10 )10 7. Binário em hexadecimal a. (1010111)2 b. (11111111)2 c. (1011011011)2 d. (0100001)2 e. (110011)2 ( ( ( ( ( )16 )16 )16 )16 )16 f. (1000110001)2 g. (111000111)2 h. (1100110011)2 i. (00100100)2 j. (10101010)2 ( ( ( ( ( )16 )16 )16 )16 )16 8. Hexadecimal em binário a. (AB9)16 b. (1F3)16 c. (15A)16 d. (523)16 e. (401)16 ( ( ( ( ( )2 )2 )2 )2 )2 f. (FF0FF)16 g. (ABC56)16 h. (90)16 i. (5D1E2)16 j. (27E7)16 ( ( ( ( ( )10 )10 )10 )10 )10 f. (FF0FF)16 g. (ABC56)16 h. (90)16 i. (5D1E2)16 j. (27E7)16 ( ( ( ( ( )2 )2 )2 )2 )2 9. Hexadecimal em decimal a. (AB9)16 b. (1F3)16 c. (15A)16 d. (523)16 e. (401)16 ( ( ( ( ( )10 )10 )10 )10 )10 10. Decimal em hexadecimal a. (193)10 b. (3057)10 c. (285)10 d. (630)10 e. (986)10 ( ( ( ( ( )16 )16 )16 )16 )16 f. (900)10 g. (815)10 h. (2929)10 i. (1500)10 j. (152)10 ( ( ( ( ( 11. Octal em hexadecimal a. (1024)8 b. (102)8 c. (214)8 d. (523)8 ( ( ( ( )16 )16 )16 )16 f. (032)8 g. (756)8 h. (903)8 i. (512)8 ( ( ( ( )16 )16 )16 )16 )16 )16 )16 )16 )16 e. (7700)8 ( )16 j. (707)8 )8 )8 )8 )8 )8 f. (FF0FF)16 g. (ABC56)16 h. (90)16 i. (5D1E2)16 j. (27E7)16 ( )16 12. Hexadecimal em octal a. (AB9)16 b. (1F3)16 c. (15A)16 d. (523)16 e. (401)16 ( ( ( ( ( ( ( ( ( ( )8 )8 )8 )8 )8 Execute as seguintes operações aritméticas 1. Adição binária a. b. c. d. e. 1010100 + 10101 = 10011101 + 1001 = 101 + 1100111 = 111 + 1111 = 10001 + 1101 = f. g. h. i. j. 11010 + 111001 = 10101010 + 100100100 = 1100110011 + 10101010 = 101010000 + 1010110 = 111000111 + 1001111100 = f. g. h. i. j. 509 + 9FF32 = 9087 + ABC234 = ABD + 1245 = 1A2B3C + 9684564 = 59 + 99 = f. g. h. i. j. 1111 – 111 = 10001 – 1101 = 1100110011 – 10101010 = 101010000 – 1010110 = 111 – 111 = 2. Adição hexadecimal a. b. c. d. e. FFAA + EDE = 103 + FAFF = 9999 + 6666 = ABCDE + 3456 = 98989 + 76896 = 3. Subtração binária a. b. c. d. e. 1000000 – 111 = 1011 – 1010 = 101111 – 101 = 11001 – 1101 = 1011000 – 1011 = 4. Subtração hexadecimal a. FE123 – ABCD = b. AFBCD – A123F = c. 5985 – ABC = d. FEFE – AAAF = e. 1045 – A99 = f. 9834 – 2349 = g. A123B – 456 = h. 122345 – 87FF = i. 72992 – AB45 = j. FFAAFF – AFDE = Represente para 8 bits, em MS, complemento de 1 e complemento de 2 os seguintes decimais: a. b. c. d. e. f. g. h. i. j. 33 e –33 25 e –25 100 e –100 127 e –127 1 e –1 18 e –18 78 e –78 29 e –29 512 e –512 81 e –81 MS (C – 1) (C – 2) _______________________________________________________ _______________________________________________________ _______________________________________________________ _______________________________________________________ _______________________________________________________ _______________________________________________________ _______________________________________________________ _______________________________________________________ _______________________________________________________ _______________________________________________________ Some em (C – 1) e (C – 2), os seguintes decimais, representando-os em 8 bits: a. b. c. d. e. f. g. h. i. j. 17 + 33 = 127 + (-27) = 15 + (-103) = 70 + 70 = –13 + 96 = 34 + (-20) = 25 + 15 = –29 + 19 = 55 + 66 = 127 + (-128) = (C – 1) (C – 2) __________________________________________________ __________________________________________________ __________________________________________________ __________________________________________________ __________________________________________________ __________________________________________________ __________________________________________________ __________________________________________________ __________________________________________________ __________________________________________________