Вы находитесь на странице: 1из 32

Sistemas Digitais e Arquitectura de Computadores I

Mdulo 1 Sistemas de Numerao

Sistemas de Numerao
O nmero um conceito abstracto que representa a ideia de quantidade. Pode ter uma representao simblica, como no sistema romano, ou ter um peso de acordo com a posio que ocupa, como no sistema rabe, que usamos normalmente. A necessidade de contar e registar quantidades de objectos foi sentida pelo homem desde os primrdios da civilizao. Um sistema de numerao o conjunto de smbolos utilizados para a representao de quantidades e as regras que definem a forma de representao. O sistema de numerao mais simples o de base unria ou seja cada objecto representado por um smbolo. O termo smbolo designa um elemento representativo que est no lugar de algo que representado por um objecto e determinado pela quantidade ou pela qualidade. Exemplos: 5 objectos podem ser representados por /////. Associar quantidades de 10 objectos e usar o smbolo * para as representar. Quantidades de 100 podem ser representadas por + e assim sucessivamente. Assim, 324 objectos podem ser representados por +++**////.

Desde que se comeou a registar informaes sobre quantidades, foram criados diversos mtodos de representar as quantidades. O mtodo ao qual estamos familiarizados usa um sistema de numerao posicional. Isso significa que o valor de cada smbolo determinado de acordo com a sua posio no nmero. Um sistema de numerao determinado fundamentalmente pela BASE, que indica a quantidade de smbolos e o valor de cada smbolo. Do ponto de vista numrico, o homem usa o sistema decimal. Por exemplo, no sistema decimal (base 10), no nmero 125 o algarismo 1 representa 100 (uma centena ou 102), o 2 representa 20 (duas dezenas ou 2x101) e o 5 representa o 5 (5 unidades ou 5x100). Assim, na nossa notao: 125 = 1x102 + 2x101 + 5x100 A base de um sistema a quantidade de algarismos disponvel na representao. Hoje a base 10 a mais utilizada, embora no seja a nica. No comrcio pedimos uma dzia de rosas (base 12) e tambm marcamos o tempo em minutos e segundos (base 60).

Os computadores utilizam a base 2 (sistema binrio) e os programadores, por facilidade, usam em geral uma base que seja uma potncia de 2, tal como 24 (base 16 ou sistema hexadecimal) ou eventualmente 23 (base 8 ou sistema octal).

Significncia Posicional
Um nmero representado por uma sequncia de dgitos onde a posio de cada dgito tem um determinado peso associado. Por exemplo, o valor N de um nmero decimal de 4 dgitos A3A2A1A0 dado por:

N = A3 10 3 + A2 10 2 + A1 101 + A0 10 0
Cada dgito Ai tem um peso 10i. Sendo assim, o valor 6851 pode ser escrito da seguinte maneira:

6851 = 6 10 3 + 8 10 2 + 5 101 + 110 0

O ponto decimal utilizado para permitir, na representao do nmero, potncias positivas e negativas de 10. O nmero A1A0,A-1A-2 tem o valor:

N = A1 101 + A0 10 0 + A1 10 1 + A2 10 2

Por exemplo, o nmero 34,85 pode ser representado por:

N = 3 101 + 4 10 0 + 8 10 1 + 5 10 2
Num sistema de numerao posicional genrico, a posio de cada dgito tem um peso associado Bi onde B a base do sistema de numerao ou radical. O formato geral de um nmero neste sistema : Ap-1Ap-2 A1A0A-1A-2 A-n em que existem p dgitos esquerda do ponto, e n dgitos sua direita. A frmula geral de significncia posicional num sistema de base B :

N = Ai B i
i =0

Exemplo: representar o nmero decimal 845 usando a frmula geral de significncia posicional.

N = Ai B i = 8 10 2 + 4 101 + 5 10 0
i =0

O dgito mais esquerda designa-se por dgito mais significativo (MSD Most Significant Digit), enquanto que o dgito mais direita designado por dgito menos significativo (LSD Least Significant Digit).

Sistema de numerao Decimal


Este o sistema mais utilizado no dia-a-dia das pessoas, tendo sido baseado no facto do ser humano ter cinco dedos em cada mo, num total de dez dedos. Utiliza dez algarismos ou dgitos (0,1,2,3,4,5,6,7,8,9) tendo por base do sistema o nmero 10. A posio de cada dgito no nmero diz-nos que grandeza representa. Se por exemplo pretendermos representar a grandeza 53, usamos o dgito 5 para representar a quantidade cinquenta e o algarismo 3 para representar a quantidade trs. Assim, a posio de cada dgito num nmero decimal indica a amplitude da quantidade representada e designada por peso. Os pesos so potncias de 10 e aumentam da direita para a esquerda, iniciando-se em 100=1. O nmero decimal 286 pode representar-se numa expresso polinomial, como se indica: 200 = 2 x 102 80 = 8 x 101 6 = 6 x 100 2 286 = 2 x 10 + 8 x 101 + 6 x 100 = N(10) Um nmero pode ser ento representado por uma sequncia de dgitos, representando a parte inteira do nmero, seguindo-se a vrgula e uma outra sequncia de dgitos representando a parte fraccionria do nmero. (N) = di d3d2d1d0,d-1d-2d-3 d-k Para a parte inteira, di (que o nmero mais esquerda) o dgito mais significativo (MSD), porque o que tem mais peso na parte inteira do nmero, e o d0 (que o nmero mais direita) o dgito menos significativo (LSD), porque o que tem menos peso na parte inteira do nmero. Para a parte fraccionria, d-1 (que o nmero mais esquerda) o dgito mais significativo (MSD), porque o que tem mais peso na parte fraccionria do nmero, e

o d-k (que o nmero mais direita) o dgito menos significativo (LSD), porque o que tem menos peso na parte fraccionria do nmero. 4137,65(10) = 4 x 103 + 1 x 102 + 3 x101 + 7x100 + 6x10-1 + 5x 10-2 O dgito 4 tem o peso 1000, o dgito 1 o peso 100, o 3 o peso 10, o 7 o peso 1, o dgito 6 o peso 0,1 e o 5 o peso 0,01. 10000 104 1000 103 100 102 10 101 1 100 0,1 10-1 0,01 10-2 0,001 10-3

Tabela 1 Potncias de Dez (10)

Sistema de numerao Binrio


Tal como no sistema decimal, trata-se de um sistema pesado, onde cada dgito comparticipa na formao do nmero com um peso, determinado pela posio que ocupa no nmero. A diferena que agora apenas existem dois dgitos: 0 e 1, tendo por base do sistema o nmero 2. Os dgitos nos nmeros binrios so chamados bits (binary digits). Ao agrupamento de oito bits chama-se byte, sendo o conjunto de 4 bits apelidado de meio byte ou nibble. Para melhor compreenso da formao dos nmeros neste sistema vejamos previamente como se efectua a contagem em decimal. Comea-se em 0 e conta-se de forma crescente at 9; depois recomea-se, agora com um 1 esquerda, e obtm-se 10, 11, 12 at 99. Esgotadas todas as combinaes com dois dgitos, torna-se necessrio um terceiro, para se efectuar a contagem de 100 at 999. Uma situao anloga acontece no sistema binrio. Inicia-se a contagem 0, 1. Como se esgotaram os dois dgitos (0 e 1), inclui-se um segundo dgito ( esquerda) e continua-se a contar 10, 11. Como se esgotaram as combinaes possveis com dois dgitos necessrio um terceiro dgito. A contagem continua 100, 101, 110 e 111. Necessitaramos agora de um quarto dgito para continuar a contagem e assim sucessivamente. 0 0 0 1 1 1 10 10 11 11 100 101 110 111

Genericamente, com n bits podemos contar de zero at ao maior valor dado por: 2n-1 Na tabela esto representados os nmeros at quinze. Nmero Decimal Binrio Zero Um Dois Trs Quatro Cinco Seis Sete Oito Nove Dez Onze Doze Treze Catorze Quinze 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111

O nmero 1111, em base 2 (binrio), que deve ser escrito indicando a base imediatamente frente do nmero 11112, em valor decimal (base 10) corresponde a 1510.

Sistema de numerao Octal


O sistema designado por octal porque utiliza oito algarismos ou dgitos: 0, 1, 2, 3, 4, 5, 6 e 7. Para se contar alm do 7, inicia-se uma nova coluna e obtm-se sucessivamente 10, 11, 12, 13, 14, 15, 16, 17, 20, 21, Para distinguir estes nmeros dos decimais representa-se as grandezas do sistema octal afectadas do ndice oito. Exemplo: 168.

Na tabela esto representados os nmeros at dezasseis. Nmero Zero Um Dois Trs Quatro Cinco Seis Sete Oito Nove Dez Onze Doze Treze Catorze Quinze Dezasseis Decimal Octal 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 0 1 2 3 4 5 6 7 10 11 12 13 14 15 16 17 20

O nmero 17, em base 8 (octal), que deve ser escrito indicando a base imediatamente frente do nmero 178, em valor decimal (base 10) corresponde a 1510. Este sistema pode ser obtido a partir do binrio por associao de conjunto de bits, sendo neste caso associados 3 bits. Ao associar 3 bits, permite 23 valores distintos, ou seja, dgitos de 0 a 7.

Sistema de numerao Hexadecimal


O sistema hexadecimal constitudo por 16 smbolos. Como um grande nmero de sistemas digitais tratam a informao em agrupamentos de bits em nmeros mltiplos de 4, tornam este sistema de grande utilidade, uma vez que cada um dos dgitos que o constitui pode ser representado por um nmero binrio de 4 bits. Como apenas existem 10 algarismos, os restantes smbolos deste sistema so as 6 primeiras letras do alfabeto: A, B, C, D, E e F.

O uso de letras para representar nmeros pode aparecer estranho primeira vista, mas note-se que a representao de um nmero apenas uma sequncia de smbolos. mais fcil representar grandezas em hexadecimal que em binrio, o que privilegia este sistema na representao de nmeros e cdigos digitais. Na tabela esto representados os nmeros at dezasseis. Nmero Zero Um Dois Trs Quatro Cinco Seis Sete Oito Nove Dez Onze Doze Treze Catorze Quinze Dezasseis Decimal Binrio Hexadecimal 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111 10000 0 1 2 3 4 5 6 7 8 9 A B C D E F 10

O nmero F, em base 16 (hexadecimal), que deve ser escrito indicando a base imediatamente frente do nmero F16, em valor decimal (base 10) corresponde a 1510. Como se conta em hexadecimal depois de se alcanar F? Do mesmo modo, inicia-se uma nova coluna a comear em: 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 1A, 1B, 1C, 1D, 1E, 1F, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 2A, 2B, 2C, 2D, 2E, 2F, 30, 31,

Com dois dgitos em hexadecimal podemos representar FF16, que corresponde ao decimal 25510, pois:

FF16 = F 161 + F 16 0 = 15 161 + 15 16 0 = 15 16 + 15 1 = 240 + 15 = 25510


Este sistema pode ser obtido a partir do binrio por associao de conjunto de bits, sendo neste caso associados 4 bits. Ao associar 4 bits, permite 24 valores distintos, ou seja, dgitos de 0 a F.

A tabela seguinte mostra os nmeros binrios de 0 a 1111 e os seus equivalentes decimais, octais e hexadecimais. Binrio 0 1 10 11 100 101 110 111 1000 1001 1010 1011 1100 1101 1110 1111 Decimal 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 Octal 0 1 2 3 4 5 6 7 10 11 12 13 14 15 16 17 3 bits 000 001 010 011 100 101 110 111 ------------------------Hexadecimal 0 1 2 3 4 5 6 7 8 9 A B C D E F 4 bits 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111

Converso de nmeros em qualquer base para decimal


Para a converso de nmeros representados em qualquer base (binrio, octal e hexadecimal), para a base decimal, utiliza-se a frmula geral de significncia posicional.

Converso Binrio Decimal


Para exprimirmos no seu equivalente decimal uma determinada grandeza binria, basta multiplicar cada bit pelo seu peso e adicionar os respectivos produtos. O bit da direita o menos significativo (LSD) e tem um peso de 20=1 para os nmeros inteiros, aumentando o peso da direita para a esquerda, em potncias de dois por cada bit. Exemplo 1: Converter o nmero binrio 1101012 em decimal.

1101012 = 1 2 5 + 1 2 4 + 0 2 3 + 1 2 2 + 0 21 + 1 2 0 = = 1 32 + 1 16 + 0 8 + 1 4 + 0 2 + 11 = 32 + 16 + 0 + 4 + 0 + 1 = 5310
Em relao ao seu peso:

Para os nmeros fraccionrios a representao ainda a mesma, tendo agora os bits direita da vrgula, pesos que so potncias de 2 de expoente negativo. Exemplo 2: Converter o nmero binrio fraccionrio 101,1012 em decimal.

101,1012 = 1 2 2 + 0 21 + 1 2 0 + 1 2 1 + 0 2 2 + 1 2 3 = = 1 4 + 0 2 + 1 1 + 1 0,5 + 0 0,25 + 1 0,125 = 4 + 0 + 1 + 0,5 + 0 + 0,125 = 5,62510

10

Em relao ao seu peso:

Converso Octal Decimal


Tal como na converso binrio - decimal, para exprimirmos no seu equivalente decimal uma determinada grandeza octal, basta multiplicar cada dgito pelo seu peso e adicionar os respectivos produtos. O dgito da direita o menos significativo (LSD) e tem um peso de 80=1 para os nmeros inteiros, aumentando o peso da direita para a esquerda. Exemplo 1: Converter o nmero octal 12348 em decimal.

12348 = 1 83 + 2 8 2 + 3 81 + 4 80 = 1 512 + 2 64 + 3 8 + 4 1 = = 512 + 128 + 24 + 4 = 66810


Em relao ao seu peso:

Para os nmeros fraccionrios a representao ainda a mesma, tendo agora os dgitos direita da vrgula, pesos que so potncias de 8 de expoente negativo.

Exemplo 2: Converter o nmero octal fraccionrio 1234,568 em decimal.

11

1234,568 = 1 83 + 2 8 2 + 3 81 + 4 80 + 5 8 1 + 6 8 2 =
= 1 512 + 2 64 + 3 8 + 4 1 + 5 0,125 + 6 0,015625 = = 512 + 128 + 24 + 4 + 0,625 + 0,09375 = 668,7187510
Em relao ao seu peso:

Converso Hexadecimal Decimal


Para exprimirmos no seu equivalente decimal uma determinada grandeza hexadecimal, basta multiplicar cada dgito pelo seu peso e adicionar os respectivos produtos. O dgito da direita o menos significativo (LSD) e tem um peso de 160=1 para os nmeros inteiros, aumentando o peso da direita para a esquerda. Exemplo 1: Converter o nmero hexadecimal E1416 em decimal.
2 1 0 E1415 = E 16 + 116 + 4 16 = 14 256 + 116 + 4 1 = =14

= 3584 + 16 + 4 = 360410
Em relao ao seu peso:

Para os nmeros fraccionrios a representao ainda a mesma, tendo agora os dgitos direita da vrgula, pesos que so potncias de 16 de expoente negativo.

12

Exemplo 2: Converter o nmero hexadecimal fraccionrio E14,5616 em decimal.

E14,568 = E 16 2 + 1 161 + 4 16 0 + 5 16 1 + 6 16 2 =
=14

= 14 256 + 1 16 + 4 1 + 5 0,0625 + 6 0,00390625 = = 3584 + 16 + 4 + 0,3125 + 0,0234375 = 3604,335937510


Em relao ao seu peso:

13

Converso de nmeros em decimal para outras bases de numerao


Para a converso de nmeros em decimal para outras bases de numerao utiliza-se o mtodo das divises sucessivas. Este mtodo consiste na realizao de uma srie de divises inteiras at que o quociente seja menor que o divisor. O divisor usado o valor da base de destino e os restos das divises inteiras a sequncia de algarismos da base de destino.

Converso Decimal Binrio


1 Nmeros inteiros
So efectuadas divises sucessivas por 2 e o equivalente encontrado ser formado pelo ltimo quociente (MSD) e pelos restos escritos pela ordem contrria quela de que foram obtidos. O primeiro resto encontrado ser o LSD. Exemplos: 1 - Converter o nmero 4710 em binrio:

47 2 07 23 2 1 03 11 2 1 1 5 2 1 2 2 0 1 Sentido de
formao

4710=1011112 2 - Converter o nmero 13710 em binrio:

137 2 17 68 2 1 08 34 2 0 14 17 0 1

2 8 0

2 4 0

2 2 2 0 1

Sentido de formao

14

13710=100010012

2 Nmeros fraccionrios
As fraces decimais podem converter-se para binrio pelo mtodo das multiplicaes sucessivas por 2. Para se converter, por exemplo, a fraco decimal 0,2175 para binrio, multiplica-se 0,2175 por 2, multiplicando-se seguidamente cada parte fraccionria restante ainda por 2, at que o resultado seja 0, ou at o nmero de casas decimais pretendidas. Os dgitos obtidos so as partes inteiras dos produtos obtidos, sendo o 1 o MSB e o ltimo o LSD. Exemplo 1: Converter para binrio o nmero 0,317510: 1 etapa 0,3175 x 2 = 0,635 0 MSB 2 etapa 0,635 x 2 = 1,270 1 3 etapa 0,270 x 2 = 0,54 0 4 etapa 0,54 x 2 = 1,02 1 LSB 0,317510=0,01012

Exemplo 2: Converter para binrio o nmero 24,317510: 1 Converter a parte inteira:

24 2 04 12 2 0 0 6 0 LSD

2 3 2 1 1 MSD

2410=110002 2 Converter a parte fraccionria: 1 etapa 0,3175 x 2 = 0,635 0 MSB

15

2 etapa 0,635 x 2 = 1,270 1 3 etapa 0,270 x 2 = 0,54 0 4 etapa 0,54 x 2 = 1,02 1 LSB 0,317510=0,01012

3 Juntar os dois resultados: 24,317510=11000,01012

Converso Decimal OCTAL


Neste mtodo tambm se utilizam as divises sucessivas, mas neste caso divises por 8 para a parte inteira e multiplicaes sucessivas por 8 para a parte fraccionria.
Exemplo 1: Converter o nmero decimal 137510 para octal:

1375 8 57 171 8 15 11 21 8 7 3 5 2 LSD MSD


137510=25378 Exemplo 2: Converter o nmero decimal 1987,654310 para octal: 1 Converter a parte inteira:

1987 8 38 248 67 08 3 0 LSD

8 31 7

8 3 MSD

198710=37038

16

2 Converter a parte fraccionria: 1 etapa 2 etapa 3 etapa 4 etapa 0,6543 x 8 = 5,2344 5 MSB 0,2344 x 8 = 1,8752 1 0,8752 x 8 = 7,0016 7 0,0016 x 8 = 0,0128 0 LSB 0,654310=0,51708 3 Juntar os dois resultados: 1987,654310=3703,51708

Converso Decimal Hexadecimal


Este mtodo anlogo aos descritos anteriormente. Tambm se utilizam divises sucessivas, mas neste caso divises por 16 para a parte inteira e multiplicaes sucessivas por 16 para a parte fraccionria.
Exemplo 1: Converter o nmero decimal 137510 para hexadecimal:

1375 16 09 85 16 15 5 5
F

LSD MSD
137510=55F16 Exemplo 2: Converter o nmero decimal 1987,654310 para hexadecimal:

17

1 Converter a parte inteira:

1987 16 038 124 16 67 12 7 C 3 LSD MSD


198710=7C316 2 Converter a parte fraccionria: 1 etapa 2 etapa 3 etapa 4 etapa 0,6543 x 16 = 10,4688 10 = A MSB 0,4688 x 16 = 7,5008 7 0,5008 x 16 = 8,0128 8 0,0128 x 16 = 0,2048 0 LSB 0,654310=0,A78016 3 Juntar os dois resultados: 1987,654310=7C3,A78016

18

A importncia da Base Binria


O matemtico ingls George Boole (1815-1864) publicou em 1854 As leis do pensamento, obra em que criou uma forma de armazenar e processar informaes utilizando o cdigo binrio. Desta maneira, os bits no serviriam apenas para representar nmeros, mas para qualquer coisa que precise ser informada a um computador. Uma letra, uma vrgula, informaes sobre datas, horrios, programas de computador, tudo pode ser representado por sequncias de algarismos 0 e 1. Isto quer dizer que o cdigo binrio pode ser utilizado para representar qualquer tipo de informao. Cada informao pode ser transformada num cdigo binrio e interpretada pelo computador. A lgica binria (ou lgica booleana, em homenagem a George Boole) faz o uso dos algarismos 0 e 1, associados aos conceitos de falso e verdadeiro, para desenvolver um conjunto de operaes lgicas, como e, ou, negao, entre outras. As operaes lgicas so importantes para que os computadores tomem decises, como: Se o utilizador clicar um boto, mostre o resultado da operao de soma no monitor, se no clicar mostre uma mensagem de ajuda, Se o resultado da operao realizada for maior que 50, retorne o resultado, seno espere o prximo valor, Se o utilizador digitar uma tecla, mostre a letra correspondente no monitor, se no digitar no faa nada.

Porque os computadores usam o cdigo Binrio


Outro matemtico ingls, Charles Babbage (1792-1871), projectou o Calculador Analtico, aparelho muito prximo de um computador actual, porm era uma mquina totalmente mecnica. Ela era composta por uma memria, um engenho central, engrenagens, alavancas e dispositivos para entrada e sada de dados, que nada mais so do que informao. A partir da dcada de 30, foram feitas vrias tentativas de substituir as partes mecnicas dos equipamentos por partes elctricas, com o uso dos rels, equipamentos elctricos que funcionam como chaves, com posies aberta (sem corrente, ou seja, bit 0) ou fechada (com corrente, ou seja, bit 1). A vantagem de um

19

computador elctrico a sua velocidade, muito superior do computador mecnico. Isto ocorre porque a corrente elctrica muito mais rpida do que qualquer engrenagem mecnica. Quando os computadores passaram a funcionar atravs da energia elctrica, o cdigo binrio foi a melhor forma encontrada para representar os sinais elctricos atravs de algarismos. Isto porque h dois estados possveis para os componentes elctricos: com corrente elctrica ou sem corrente. Desta forma, o bit 0 representado pela falta da corrente elctrica, e o bit 1 pela presena da corrente. Pode-se entender o cdigo binrio comparando os bits a interruptores elctricos, em que 0 indica desligado e 1 ligado, como representado na seguinte figura. Um byte (sequncia de oito bits) pode ento ser imaginado como uma sequncia de oito interruptores, sendo que as posies em que se encontram os interruptores ligados e desligados indica qual o nmero ou letra representados.

Figura 1: representao dos Bits

Como o cdigo binrio a representao utilizada pelos computadores, toda informao, seja um nmero ou uma letra, precisa de ser representada atravs de um cdigo composto de uma sequncia de 0 e 1. So as diferentes combinaes entre os bits que so usadas para criar uma mensagem que a mquina (o computador, a calculadora, o relgio, etc) possa entender. Como j foi visto, o nmero nove representado pelo sistema binrio por 00001001. Observe que, para qualquer sistema de numerao zeros esquerda no possuem valor algum. A representao 00001001 vista pelo computador como uma lmpada acesa, seguida de duas apagadas, depois outra acesa e por fim quatro apagadas. Os computadores modernos (digitais) efectuam clculos (operaes aritmticas e lgicas) com preciso e rapidez, atravs do uso da lgica binria, desenvolvida por Boole no sculo XIX. Estas operaes so realizadas pelos circuitos integrados, ou chips, existentes nos computadores. Eles nada mais so que componentes electrnicos que realizam operaes lgicas.

20

Operaes Aritmticas
A adio e a subtraco de nmeros que usam bases no decimais seguem regras muito semelhantes s utilizadas para o sistema decimal. Por esse motivo, vamos comear por rever o processo que utilizamos para as operaes em decimal.

Adio e Subtraco em decimal


Considere o seguinte exemplo:

3047 + 7869 10916


Esta soma em decimal feita de acordo com o que est representado na figura seguinte:

1011 3047 + 7869 10916


Repare-se que, nesta figura, foi colocado sobre os nmeros um resultado intermdio da operao. Na soma, a que estamos habituados a referirmo-nos a este resultado intermdio como e vai um, ou seja, estamos a referir um resultado que no possvel representar no dgito actual e que por, esse motivo, tem que ser combinado com o dgito mais significativo ( sua esquerda) no passo seguinte da operao. Este bit adicional referido em ingls como o bit de carry. Sempre que esta situao acontece, necessrio somar o valor em acrscimo ao bit mais significativo seguinte. Deve tambm notar-se que o resultado desta soma de dois nmeros de 4 bits foi um nmero de 5 bits, o que significa que, por vezes, so necessrios bits adicionais para representar o resultado de uma operao. Na figura seguinte est representada a operao de subtraco de nmeros decimais.

11 8027 - 3864 4163

21

O processo semelhante soma mas, neste caso, quando o dgito a ser subtrado menor do que o dgito a subtrair, necessrio utilizar um valor emprestado do dgito seguinte. Repare-se no exemplo do segundo dgito: 2 menos 6, como no possvel a 2 retirar 6, opta-se por a 12 retirar 6, indo retirar um valor do dgito seguinte. A este carry negativo chama-se em ingls borrow. Este vaor emprestado pelo dgito seguinte , no passo seguinte, somado ao valor a subtrair. Desta forma, para os terceiros bits, necessrio a 0 tentar subtrair 9 (8+1 bit de borrow, o que origina novo bit de borrow para os quatro bits).

Adio e subtraco em binrio


A figura seguinte apresenta dois nmeros binrios de 8 bits com a indicao a negrito do carry. A soma pode ser feita como em decimal, somando cada um dos bits individualmente. Apenas no caso de o resultado exceder o valor da base, no sendo, portanto, representvel num nico dgito binrio, se torna necessrio tomar nota da existncia de carry.

1011011 101101102 + 100101112 1010011012


Repare-se que, no caso do segundo bit menos significativo, o resultado da soma 2, originando uma situao de carry. Este carry anotado sobre o bit seguinte, sendo necessrio para este conjunto de bits somar trs 1s. Nesta situao, o resultado directo da soma 1, existindo em simultneo um bit de carry a transportar para a soma seguinte. Representa-se outro exemplo da soma de dois nmeros binrios na figura seguinte:

111111 101111002 + 010101012 1000100012

A subtraco de dois nmeros em binrio esta representada na seguinte figura:

22

1000111 101111002 - 010101012 011001112


Na subtraco dos bits menos significativos, subtrair 1 a 0 implica uma necessidade de emprstimo do valor seguinte (assinalada com um 1 sobre o bit seguinte). Isto pode ser interpretado como subtrair 1 a 2 (10 em binrio). Para o par de bits seguinte, dois zeros, necessrio fazer uso do bit emprestado, somando-o ao subtractor. Assim sendo, est a fazer-se a subtraco de 1 a 0, o que origina uma nova situao de borrow. Nos terceiros bits menos significativos esto dois 1s e um bit de borrow. Isto implica somar o bit de borrow ao subtractor e subtrair 2 a 3 (11 em binrio devido a um novo emprstimo), resultando em 1 como resultado directo da subtraco. Este processo repetido at a operao de subtraco estar terminada. A figura seguinte apresenta um novo exemplo de subtraco em binrio.

111011 101011012 - 011101112 001101102


Neste caso, merece ateno o stimo bit em que se pretender subtrair 1 a 0, existindo um bit de borrow. Esta situao corresponde a subtrair 2 a 2 (10 em binrio, com necessidade de um novo bit de borrow), resultando em 0 resultado directo da subtraco.

Adio e subtraco em Octal


As operaes de adio e subtraco em octal so muito semelhantes s feitas em binrio e em decimal. A figura seguinte apresenta um exemplo de uma soma de dois nmeros em octal. Devemos ter em ateno que, agora, o carry ocorre sempre que a soma parcial chegue, ou supere, o valor 8. Para este valor, a soma directa ser 0 e xistir um bit de carry que ser somado ao bit mais significativo seguinte. Nos bits menos significativos, a soma de 6 e 7 resulta em 13 em decimal. Este valor em octal 158, dando 5 na soma e um bit de carry. Para os seguintes bits somado 7, 0 e 1, logo, a soma d 0 e existe novo bit de carry.

23

11 2768 + 3078 6058


Um segundo exemplo de soma em octal est representado na figura seguinte:

111 36548 + 7258 46018

A figura seguinte apresenta um exemplo de subtraco em base octal:

11 7028 - 3768 3048


Embora semelhante ao processo dos casos anteriores, convm detalhar a operao, uma vez que se trata de uma base diferente. Para os bits menos significativos pretende-se subtrair 6 a 2. Isto corresponde a uma situao em que necessrio pedir um emprstimo ao bit mais significativo seguinte, ou seja, fazer a subtraco de 6 a 12 em octal. Habitualmente, pensamos em decimal e que 12 em octal corresponde a 10 em decimal. Assim sendo, o resultado directo desta operao 4, existindo um bit de borrow. Este bit adicionado ao 7 do bit seguinte, originando de imediato novo bit de borrow e sendo a operao directa 0 menos 0, de onde resulta 0. A subtraco dos bits mais significativos corresponde a 7 menos 4, devido ao bit de borrow anterior. A seguinte figura apresenta outro exemplo de subtraco em octal:

11 125238 - 76518 26528

24

Adio e subtraco em Hexadecimal


As operaes de adio e subtraco em hexadecimal so muito semelhantes s anteriores. Apresenta-se a seguir um exemplo de uma soma de dois nmeros em hexadecimal:

1101 9 A0816 + CA3916 1644116


A soma dos dois dgitos menos significativos, 8 e 9, corresponde em decimal a 17, que em hexadecimal corresponde a 11 e necessita de mais do que um dgito para ser representado, originando por isso um bit de carry e resultado directo 1. A soma seguinte, dos dgitos 0 e 3, resulta na soma directa de 4, devido ao carry anterior e no origina novo carry. Os terceiros dgitos menos significativos so ambos A, ou seja, a soma em decimal tem valor de 20, o que representado com dois dgitos de hexadecimal (14), tendo como soma directa 4 e originando um carry para a soma seguinte. No caso dos dgitos mais significativos, 9 e C, a soma directa atendendo ao carry anterior , em decimal, de 22, o que corresponde em hexadecimal a 16. Nesta situao, o carry pode ser utilizado directamente como um dgito de hexadecimal, uma vez que se trata do dgito mais significativo. Um outro exemplo de soma em hexadecimal est na figura seguinte:

1101 BA0 E16 + E8 A716 1A2 B516

A figura seguinte apresenta um exemplo de subtraco em base hexadecimal:

1 F 7 AB16 - 1C 6316 DB 4816


Nos dgitos menos significativos, B e 3, o resultado da subtraco 11-3=8, no havendo lugar a valor de borrow. Para os seguintes dgitos menos significativos, A e 6, a subtraco 10-6=4, no havendo tambm lugar a borrow. Para os terceiros dgitos, 7 e C, a operao correspondente 7-12. Como no possvel, com nmeros

25

positivos, fazer esta subtraco, torna-se necessrio usar um valor de borrow. Ao retirar um valor ao dgito seguinte, dado que se est a trabalhar em hexadecimal, passa a fazer-se a seguinte subtraco: 23-12=11, valor que representado por B. Finalmente, para os dgitos mais significativos, F e 1, atendendo ao borrow do passo anterior, faz-se a operao 15-2=13, ou seja, D. Apresenta-se a seguir um outro exemplo de subtraco em hexadecimal:

1 7 A4 F16 - 56 DB16 237416


Neste segundo exemplo pode verificar-se que a situao de borrow ocorre apenas no segundo dgito menos significativo. Neste caso, pretende-se subtrair D a 4. Como tal no possvel, usa-se um valor emprestado pelo dgito seguinte, passando agora a fazer-se, em decimal: 20-13=7.

26

Representao de nmeros positivos e negativos


As operaes de subtraco podem ter como resultado um valor negativo. Por este motivo, importante saber como so representados os valores negativos em binrio. Este tipo de representao pode ser feito de diversas formas: complemento para 1, complemento para 2, entre outras, pelo que importante conhecer as vantagens e desvantagens de cada uma.

Representao em complemento para 1


A representao em complemento para 1 de um nmero negativo de n bits obtida subtraindo-o a 2n-1. Em termos prticos, isto corresponde a negar todos os bits. Ou seja, todo bit 0 passa a ser bit 1 e todo bit originalmente 1 passa a ser 0. Neste tipo de notao, o bit mais significativo representa o sinal, isto , se for 0 positivo e se for 1 negativo. Vejamos alguns exemplos da representao neste tipo de notao para 8 bits. 2110=000101012 -2110=111010102 A representao de -21 obtida negando a totalidade dos bits da representao do correspondente valor positivo. Um novo exemplo apresentado a seguir: 9710=011000012 -9710=100111102 A principal vantagem desta representao a facilidade em obter o nmero negativo correspondente. A representao apresenta, no entanto, alguns problemas. Um deles diz respeito representao do valor 0: 010=000000002 Existe, no entanto, uma outra representao possvel para o valor 0, obtida a partir do valor -0: -010=111111112

27

Outro problema aparece quando se pretende fazer operaes com nmeros nesta representao. Observe-se a tabela seguinte: Decimal -7 -6 -5 -4 -3 -2 -1 0 1 2 3 4 5 6 7 Binrio 1000 1001 1010 1011 1100 1101 1110 0000 ou 1111 0001 0010 0011 0100 0101 0110 0111

Nesta tabela esto representados os valores de complemento para 1 dos nmeros de 4 bits. Repare-se que, ao percorrer a tabela, quando necessrio passar pelo valor 0, a mudana no corresponde ao acrscimo de um valor, como acontece em decimal, mas ao acrscimo de dois valores. Resulta daqui uma sugesto para fazer a soma em complemento para 1 correctamente: realizar a soma binria normal e somar 1 sempre que a contagem ultrapasse 2n-1. Este facto, resultante da dupla representao para o valor 0, cria problemas adicionais mesmo para operaes em binrio, mas quando se utilizam nmeros negativos surgem algumas limitaes desta notao. Vejamos alguns exemplos:

110011 011001102

102 + ()72 30

+ +

101101112 1000111012 12 000111102

28

Neste caso pretende-se somar 102 com -72. O resultado directo desta operao um nmero negativo, cujo valor absoluto 29. Analisando a tabela anterior, pode corrigirse esta situao adicionando o bit que sobrou da soma directa (e transbordou para alm do bit de sinal) ao resultado da soma, como est ilustrado na figura anterior. Esta correco corresponde passagem por 0. Outro exemplo destas situaes:

52 + ()72 - 20

110011 001101002 + 101101112 111010112

Neste caso no necessrio efectuar qualquer correco. O resultado est correcto, uma vez que no ultrapassou 2n-1. Vejamos outro exemplo:

110011 110010112

- 52 + 72 20

+ 010010002 1000100112 + 12 000101002

No caso anterior, a soma ultrapassou o valor 2n-1, pelo que se torna necessrio somar este bit adicional para obter o valor correcto.

110011 110010112

- 52 - 72 -124

+ +

101101112 1100000102 12 100000112

Na figura anterior est apresentada uma nova operao. Neste caso trata-se de somar dois nmeros negativos e, tal como no caso anterior, a contagem ultrapassou 2n-1, sendo tambm necessrio somar o bit adicional. A representao em complemento para 1, tal como a representao em sinal e magnitude, no permite efectuar, mesmo as operaes mais simples de forma directa.

29

Por esse motivo, surgiram outras formas de representar nmeros negativos. A notao de complemento para 2 um desses exemplos e resolve alguns dos problemas.

Representao em complemento para 2


Na representao em complemento para 2 existe tambm um bit de sinal, mas a transformao dos nmeros negativos um pouco mais complexa, enquanto os nmeros positivos se mantm inalterados, tal como nas outras representaes. A notao em complemento para 2 de um nmero de n bits pode ser obtida subtraindo-o ao valor 2n. Vejamos um exemplo: Complemento para 2 de 01010111: 100000000-01010111=10101001 Conclui-se que o complemento para 2 de 87 dado por 101010012. Deve notar-se que para este valor ser interpretado correctamente necessrio saber que se trata de um nmero em complemento para 2. Caso contrrio, este valor, que corresponde a -87, pode ser interpretado como sendo o nmero positivo 169. Nota: Devemos ter a noo de que a informao contida, por exemplo, num disco rgido, est toda ela em binrio. Apenas possvel distinguir entre um ficheiro criado pelo utilizador, uma fotografia ou um programa, se a informao relativa ao tipo de dados estiver guardada numa parte especfica desse mesmo disco rgido. Caso contrrio, tudo se resume a binrio que pode ser interpretado de diversas formas e que facilmente perde o significado original.

A representao em complemento para 2 pode ser obtida sem o recurso subtraco indicada anteriormente. Existem duas outras regras prticas que permitem obter o complemento para 2. Qualquer uma das regras vlida. A primeira dessas regras consiste em negar todos os bits que compem a representao positiva do nmero e, em seguida, adicionar-lhe um bit. Vejamos um exemplo desta regra na figura seguinte:

011101012 dos bits 11710

negao

100010102

adicionar 1

100010112 -11710

30

A segunda possibilidade de converso para complemento para 2 uma variante da regra anterior. Consiste em percorrer a representao binria do nmero a converter, da direita para a esquerda, mantendo todos os bits at ao primeiro 1, inclusive, e negando todos os bits a partir da. 010101002
negar

8410

101011002

-8410

Como foi explicado, qualquer destas regras permite obter a representao em complemento para 2 correcta. Optamos por aquela que nos parecer mais fcil de utilizar. Nesta representao, caso seja necessrio fazer uma extenso do nmero de bits, pode repetir-se o bit de sinal. Para o nmero decimal 66, 1000010 em binrio, a representao positiva de 8 bits : 01000010. A representao de 16 bits, quer a binria simples, quer a binria de complemento para 2 : 0000000001000010. Para o mesmo valor negativo, a representao em complemento para 2 de 8 bits 10111110. A representao correspondente de 16 bits pode obter-se repetindo o bit de sinal esquerda 1111111110111110. Esta notao permite, para n bits, representar os valores do seguinte intervalo: -2n-1 a (2n-1-1)

Soma e subtraco em complemento para 2


A grande vantagem da representao em complemento para 2 est na simplificao das operaes. A subtraco com nmeros em complemento para 2 reduz-se a uma soma onde apenas necessrio ignorar os dgitos que ultrapassam o nmero de bits previsto para a representao. Vejamos alguns exemplos:

8 + ()5 3

1 010002 + 110112 1000112

A figura anterior apresenta um exemplo muito simples de soma de um nmero positivo com um negativo. Esta operao equivalente a uma subtraco mas, para a efectuar, necessrio obter previamente a representao de -5. Repare-se que, neste caso, necessrio eliminar um bit que excede os 5 bits usados na representao, mas o bit de sinal est correcto.

31

Vejamos mais alguns exemplos: 1)

71 + 30 101

010001112 + 000111102 011001012

Neste caso, so somados dois nmeros positivos, pelo que o bit de sinal do resultado, como seria de esperar, est a zero.

2)

121 + (-)70 51

011110012 + 101110102 1001100112

Neste caso necessrio eliminar um dgito que cresce ao somar os valores em complemento para 2.

3)

63 + (-)112 - 49

001111112 + 100100002 110011112

Neste exemplo so novamente somados dois nmeros, sendo que um positivo e o outro negativo, mas desta vez o maior valor o do nmero negativo. Obtm-se o resultado 11001111. Como o bit de sinal 1, significa que o nmero negativo.

4)

- 26 + (-)72 - 98

111001102 + 101110002 1100111102

Neste exemplo, o resultado negativo e cresce novamente um bit da operao, que eliminado. O valor obtido 10011110, o que, uma vez tomado o seu complemento para 2, d 01100010, correspondendo a 98.

32

Вам также может понравиться