Capítulo 2: Números e Aritmética Binária · O uso do sistema binário apresenta vantagens...

20
25 Capítulo 2: Números e Aritmética Binária Os computadores armazenam e manipulam a informação na forma de números. Instruções de programas, dados numéricos, caracteres alfanuméricos, são todos representados por meio de combinações de algarismos numéricos, as quais são interpretadas, manipuladas e trasformadas em formatos reconhecíveis pelo Ser Humano, a medida que o computador executa suas tarefas. Embora o sistema numérico padrão seja o decimal, onde dez algarismos (0 a 9) são usados para representar todos os números, os computadores adotam internamente o sistema binário, onde apenas os algarismos 0 e 1 são usados na composição dos números. O uso do sistema binário apresenta vantagens importantes sob o ponto de vista da construção e operação dos computadores: Cada um dos algarismos binários, 0 e 1, é representado por um valor de tensão especí- fico nos circuitos eletrônicos dos computadores. Desta forma o armazenamento e a manipulação de informação em um computador é feito apenas com dois valores de tensão elétrica. Os programas de computadores são escritos por meio de sentenças matemáticas (expressões algébricas), as quais expressam a lógica das tarefas a serem executadas pela máquina, e delimitam os resultados numéricos que podem ser obtidos a partir dos valores de entrada. A forma algébrica mais eficiente de representação de expressões lógicas, conhecida como álgebra booleana, é baseada no sistema binário de numeração. Deste modo, por razões tecnológicas e conceituais, os números binários e a álgebra bool- e-ana formam a base de operação dos computadores atuais. Sistema Binário de Numeração Embora use apenas um sub-conjunto dos algarismos decimais, o sistema binário adota as mesmas regras do sistema decimal para a representação de grandezas numéricas e para as operações aritméticas. De fato, o uso de sistemas numéricos diferentes na escrita de um mesmo número, não altera a quantidade representada, desde que os sistemas adotem uma notação consistente, conforme descrito a seguir.

Transcript of Capítulo 2: Números e Aritmética Binária · O uso do sistema binário apresenta vantagens...

Page 1: Capítulo 2: Números e Aritmética Binária · O uso do sistema binário apresenta vantagens importantes sob o ponto de vista da construção e ... Converter o número ... A conversão

25

25BCapítulo 2: Números e Aritmética Binária

Os computadores armazenam e manipulam a informação na forma de números. Instruções de programas, dados numéricos, caracteres alfanuméricos, são todos representados por meio de combinações de algarismos numéricos, as quais são interpretadas, manipuladas e trasformadas em formatos reconhecíveis pelo Ser Humano, a medida que o computador executa suas tarefas.

Embora o sistema numérico padrão seja o decimal, onde dez algarismos (0 a 9) são usados para representar todos os números, os computadores adotam internamente o sistema binário, onde apenas os algarismos 0 e 1 são usados na composição dos números. O uso do sistema binário apresenta vantagens importantes sob o ponto de vista da construção e operação dos computadores: • Cada um dos algarismos binários, 0 e 1, é representado por um valor de tensão especí-

fico nos circuitos eletrônicos dos computadores. Desta forma o armazenamento e a manipulação de informação em um computador é feito apenas com dois valores de tensão elétrica.

• Os programas de computadores são escritos por meio de sentenças matemáticas (expressões algébricas), as quais expressam a lógica das tarefas a serem executadas pela máquina, e delimitam os resultados numéricos que podem ser obtidos a partir dos valores de entrada. A forma algébrica mais eficiente de representação de expressões lógicas, conhecida como álgebra booleana, é baseada no sistema binário de numeração.

Deste modo, por razões tecnológicas e conceituais, os números binários e a álgebra bool-e-ana formam a base de operação dos computadores atuais.

0BSistema Binário de Numeração

Embora use apenas um sub-conjunto dos algarismos decimais, o sistema binário adota as mesmas regras do sistema decimal para a representação de grandezas numéricas e para as operações aritméticas. De fato, o uso de sistemas numéricos diferentes na escrita de um mesmo número, não altera a quantidade representada, desde que os sistemas adotem uma notação consistente, conforme descrito a seguir.

Page 2: Capítulo 2: Números e Aritmética Binária · O uso do sistema binário apresenta vantagens importantes sob o ponto de vista da construção e ... Converter o número ... A conversão

26

3BO Conceito de Número

Números são expressões de quantidades. Por definição, um número é uma relação que existe entre qualquer quantidade e uma outra, tomada como termo de comparação, a que se chama unidade.

14BNumerais

Os símbolos usados para representar os números são chamados numerais. De forma geral, os sistemas numéricos possuem um conjunto limitado de numerais primitivos, chamados de “numerais de valor próprio”, ou simplesmente de algarismos, com os quais é possível gerar os numerais para todos os números. A quantidade de algarismos de um sistema é chamada de “base” do sistema, como no sistema decimal onde a base é 10 porque este possui dez algarismos: 0, 1, 2, ..., 9.

15BSistemas Numéricos

O sistema decimal é um sistema posicional, significando que o valor representado por cada algarismo de um numeral deve ser multiplicado por uma potência da base, a qual é função da posição ocupada pelo algarismo no numeral . Seja por exemplo, o número 6903:

6903 = 6 x 103 + 9 x 102 + 0 x 101 + 3 x 100

6903 = 6.000 + 900 + 0 + 3

Atualmente apenas os sistemas posicionais têm uso comercial corrente, mas existem sistemas com regras de representação diferentes, como por exemplo o sistema romano de numeração.

4BNúmeros Binários

O sistema binário é um sistema com notação posicional que usa somente os algarismos 0 e 1. Quando um número é escrito no sistema binário, os dígitos individuais representam os coeficientes de potências de 2, de modo análogo ao feito para as potências de 10 no sistema decimal. Seja um número qualquer escrito em binário, como por exemplo 101:

101b = 1 x 22 + 0 x 21 + 1 x 20

101b = 4 + 0 + 1 = 5d

Nas fórmulas acima, por questão de clareza, adicionamos aos números o prefixo “b”, para indicar a base binária e o prefixo “d” no caso de representação em decimal. Notamos que ambas as representações “101” e “5” expressam a mesma quantidade, usando porém sistemas numéricos diferentes, como nos exemplos adicionais da tabela a seguir, onde os dezesseis primeiros números decimais são representados em binário.

Page 3: Capítulo 2: Números e Aritmética Binária · O uso do sistema binário apresenta vantagens importantes sob o ponto de vista da construção e ... Converter o número ... A conversão

27

Tabela 1: Correspondência entre entre os dezesseis primeiros numerais decimais e binários.

DECIMAL BINÁRIO DECIMAL BINÁRIO 0 0 8 1000 1 1 9 1001 2 10 10 1010 3 11 11 1011 4 100 12 1100 5 101 13 1101 6 110 14 1110 7 111 15 1111

16BNúmeros Reais e Conversões de Bases

Um número que não é inteiro pode ser expresso usando a notação de vírgula decimal. O decimal 1,8125 tem o significado numérico:

1,8125 = 1 x 100 + 8 x 10-1 + 1 x 10-2 + 2 x 10-3 + 5 x 10-4

1,8125 = 1 + 0,8 + 0,01 + 0,002 + 0,0005

Do mesmo modo, podemos expressar um número binário fracionário, usando a notação de vírgula binária:

1,1101 = 1 x 20 + 1 x 2-1 + 1 x 2-2 + 0 x 2-3 + 1 x 2-4

Assim, dígitos a direita da vírgula binária são coeficientes de 2-n, onde “n” é a distância do algarismo à direita da vírgula binária. Em aritmética decimal, movendo-se a vírgula decimal “k” casas para a esquerda ou direita, divide-se ou multiplica-se, respectivamente, o número por 10k. No sistema binário, este deslocamento divide ou multiplica por 2k.

5BConversão entre Binário e Decimal

Tendo em vista que as representações binária e decimal não alteram a quantidade repre-sentada, é possível converter números expressos em decimal para seu equivalente com numerais binários e vice-versa.

17BConversão para Decimal

A conversão de um número binário para um número decimal é obtida usando a aritmética ilustrada nas fórmulas anteriores.

Ex.1: Converter o número binário 1001 para a base 10: 1001b  = 1 x 23 + 0 x 22 + 0 x 21 + 1 x 20 

= 8 + 0 + 0 + 1 = 9d 

Page 4: Capítulo 2: Números e Aritmética Binária · O uso do sistema binário apresenta vantagens importantes sob o ponto de vista da construção e ... Converter o número ... A conversão

28

Ex.2: Converter 1,0110b para a base 10:

1,0110b   = 1 x 20 + 0 x 2‐1 + 1 x 2‐2 + 1 x 2‐3 + 0 x 2‐4 = 1 + 0 + 0,25 + 0,13 + 0 = 1,38d 

18BConversão para Binário

A conversão de um número decimal “N” para binário é feita facilmente usando as seguintes regras:

Caso “N” seja inteiro, por exemplo, N = ... x8x4x2x1,000... 

Onde os x’s são 0’s e 1’s e os índices indicam a significância numérica a ser atribuída a cada dígito binário, de acordo com sua posição. Divide-se N por 2, mantendo o quociente na forma inteira. Como cada divisão move a vírgula binária uma casa para a esquerda, temos:

N/2  =  ...x8x4x2x1,/2  =  ...x8x4x2 + resto x1 Assim, o dígito menos significativo x1 é o resto, e o quociente é um novo número N’ = ...x8x4x2, onde x2 passou a ser o dígito menos significativo. Uma seqüência de divisões por 2 resultará na forma binária de N através dos restos.

Ex.: Converter o decimal 19 para a base 2: 19  2           1  9  2           1  4  2           0  2  2           0  1  2           1  0               19d  =  10011b 

Caso N seja menor que 1, por exemplo N = ...000,x1/2x1/4x1/8...

Pode-se testar se x1/2 é 0 ou 1 multiplicando-se N por 2. Se x1/2 for 1, o produto 2N será maior que 1; se x1/2 for 0, 2N será menor que 1. A multiplicação por 2 move a vírgula binária uma casa para a direita, movendo conseqüentemente, x1/4 para a posição de x1/2. A representação binária pode ser encontrada através de sucessivas multiplicações por 2. Ex.: Converter o decimal 0,69 para a base 2: 0,69 x 2 = 1,38 

                                                             0,38 x 2 = 0,76                                                              0,76 x 2 = 1,52                                                              0,52 x 2 = 1,04                                                              0,04 x 2 = 0,08                                                                   0,08 x 2 = 0,16         0,69d = 0,101100...b 

Page 5: Capítulo 2: Números e Aritmética Binária · O uso do sistema binário apresenta vantagens importantes sob o ponto de vista da construção e ... Converter o número ... A conversão

29

Caso N seja fracionário e maior que 1

A conversão, neste caso, é feita separadamente, conforme as regras dos casos anteriores, e os resultados são combinados.

Ex.: Converter o decimal 19,69 para a base 2: • Converter a parte inteira

19d = 10011b, conforme visto no item 1.

• Converter a parte fracionária 0,69d = 0,101100b, conforme visto no item 2.

• Unir as partes 19,69d = 10011,101100b

6BOutras Bases Numéricas

Pode-se definir de um número ilimitado de sistemas, além dos sistemas decimal e binário vistos. Os mais úteis entretanto, para uso em computação, são os sistemas com bases octal e hexadecimal.

19BSistema Octal

Neste sistema são usados os algarismos decimais de 0 a 7. Todo número neste sistema é expresso como uma soma de potências de 8 multiplicadas por coeficientes apropriados, que são os próprios dígitos do número.

20BSistema Hexadecimal

No sistema hexadecimal a base é 16, sendo usados os dez algarismos decimais 0, 1, 2, ...,9 para representar os dez primeiros algarismos hexadecimais, com os outros seis algarismos adicionais sendo representados pelas letras A, B, C, D, E e F. Todo número neste sistema é expresso como uma soma de potências de 16 multiplicadas por coeficientes apropriados, que são os próprios dígitos do número.

A relação especial entre os sistemas octal e hexadecimal e o sistema binário resulta do fato de que três dígitos binários podem representar exatamente oito (23) números diferentes e que quatro dígitos binários podem representar dezesseis (24) números diferentes. Conversões do Sistema Hexadecimal As conversões deste sistema segue as mesmas regras do sistema octal, lembrando que: cada dígito hexadecimal corresponde a quatro dígitos binários e cada dígito octal corresponde a três dígitos binários.

Page 6: Capítulo 2: Números e Aritmética Binária · O uso do sistema binário apresenta vantagens importantes sob o ponto de vista da construção e ... Converter o número ... A conversão

30

Ex.: UCorrespondência das bases 2, 8 e 16: 2 3 7 4 , 6 4 5 2 => octal ---- ------ ------ ------ ------ ----- ------ ------ 1 0 0 1 1 1 1 1 1 0 0 , 1 1 0 1 0 0 1 0 1 0 1 0 => binário ------ -------- -------- -------- --------- -------- 4 F C , D 2 A => hexadecimal UDe Hexadecimal para decimal Ex.: Converter 7AB016 para a base 10. Lembrar que A=10, B=11, C=12, D=13, E=14 e F=15. 7AB016 = 7 x 163 + 10 x 162 + 11 x 161 + 0 x 160 = 28.672 + 2.560 + 176 + 0 = 31.40810 UDe Decimal para hexadecimal Ex.: Converter 198910 para a base 16: 1989 | 16 ------ 5 124 | 16 ------ 12 7 => ou seja, 198910 = 7C516 UDe Hexadecimal para octal Neste caso, passa-se primeiro para a base binária e a seguir para a base octal. Ex.: Converter 1F16 para a base 8: 1 F ----- ------ 0001 1111 = 00 011 111 --- ----- ---- 0 3 7 ==> 1F16 = 378 UDe Octal para Hexadecimal Ex.: Converter 558 para a base hexadecimal: 5 5 ---- ---- 101 101 = 10 1101 --- ------ 2 D => 558 = 2D16

Page 7: Capítulo 2: Números e Aritmética Binária · O uso do sistema binário apresenta vantagens importantes sob o ponto de vista da construção e ... Converter o número ... A conversão

31

A tabela a seguir mostra as formas de se escrever a mesma quantidade, nos sistemas decimal, hexadecimal, octal e binário, para valores entre 0 e 15 (decimal)  decimal Hexadecimal Octal Binário 0 0 0 0

1 1 1 1

2 2 2 10

3 3 3 11

4 4 4 100

5 5 5 101

6 6 6 110

7 7 7 111

8 8 10 1000

9 9 11 1001

10 A 12 1010

11 B 13 1011

12 C 14 1100

13 D 15 1101

14 E 16 1110

15 F 17 1111

Page 8: Capítulo 2: Números e Aritmética Binária · O uso do sistema binário apresenta vantagens importantes sob o ponto de vista da construção e ... Converter o número ... A conversão

32

1BTipos de Informação

A informação é representada num computador através de seqüências binárias. Cada dígito binário é chamado de “bit” (UbiUnary digiUtU), o componente básico da representação de informação, sendo Os conjuntos de 4 e 8 bits chamados respectivamente de “nibble” e “byte”. A informação, para ser armazenada e utilizada em um computador, deve existir na forma de uma entidade, a qual pode ser composta por um número arbitrário de bits, ocupando uma ou mais palavras na memória do computador. Os tipos básicos de entidades são mostrados no diagrama a seguir. Instruções /Ponto fixo / / Informação Numéricos \ \ / \ \ \ / \ \ \ Dados \ \ \ \ Endereços \ Ponto Flutuante \

Não-numéricos (caracteres e outros)

Existe uma divisão fundamental em instruções (informação de controle) e dados. As instruções são conjuntos de bits definidos pelo fabricante do processador usado no com-putador, não seguindo nenhum padrão específico. Os dados, ao contrário, seguem padrões de representação definidos, como visto a seguir, pois devem ser intercambiados entre com-putadores de fabricantes diferentes.

7BDados Numéricos

Os padrões Para representação de números em computadores, foram definidos com base nos seguintes fatores: • Os tipos dos números a serem representados, isto é, inteiros, reais, complexos, etc. • A faixa de valores possíveis. Quanto maior a faixa, mais bits são necessários para rep-

resentar o número. • A precisão do número, ou seja quantas casas a direita da vírgula serão usadas na repre-

sentação de valores que não sejam inteiros.

• custo do hardware necessário para armazenar e processar os números.

Os formatos resultantes mais comuns são as representações em ponto fixo e ponto flutu-ante descritas a seguir.

Page 9: Capítulo 2: Números e Aritmética Binária · O uso do sistema binário apresenta vantagens importantes sob o ponto de vista da construção e ... Converter o número ... A conversão

33

21BNúmeros em Ponto Fixo

Este formato é derivado diretamente da representação decimal de um número como uma seqüência de dígitos separados por uma vírgula decimal (chamada de “ponto” devido a notação americana para os números). Os dígitos a esquerda da vírgula decimal represen-tam um inteiro; os dígitos a direita representam uma fração. Isto é a notação posicional, vista anteriormente, onde cada dígito tem um peso fixo de acordo com sua posição relativa à vírgula decimal:

O número decimal 192,73 é equivalente a:

1 x 102 + 9 x 101 + 2 x 100 + 7 x 10-1 + 3 x 10-2

Se o número for binário temos um formato análogo, como no exemplo a seguir:

1,1101 = 1 x 20 + 1 x 2-1 + 1 x 2-2 + 0 x 2-3 + 1 x 2-4

Os computadores guardam na memória apenas sequências de bits, não representando vír-gulas ou sinais. Desta forma, o número 1,1101 deve ser dividido em duas partes, inteira e fracionária, para ser armazenado, como na figura a seguir, onde ambas as partes são guardadas na memória com 8 bits de precisão.

1,1101 é representado como:

00000001 (parte inteira)

11010000 (parte fracionária)

Cabe a instrução de programa que faça uso do número armazenado na memória, reconstituí-lo internamente ao processador quando do seu uso. Se quisermos representar um número com sinal, um bit (o mais significativo) é acrescentado à esquerda do número para indicar o sinal, segundo a convenção:

Bit mais a esquerda = 1. Número negativo

Bit mais a esquerda = 0. Número positivo

Deste modo, um número com “n” bits, é composto por um sinal (bit mais a esquerda) e por uma mantissa, onde estão as partes inteiras e fracionária. Normalmente, ao ser arma-zenado em memória, o sinal é colocado junto a parte inteira do número.

xn-1xn-2...x2x1x0

| \__________/

sinal magnitude (partes inteira e fracionária)

Page 10: Capítulo 2: Números e Aritmética Binária · O uso do sistema binário apresenta vantagens importantes sob o ponto de vista da construção e ... Converter o número ... A conversão

34

Números inteiros são um caso particular dos números em ponto fixo, onde não há parte fracionária, não havendo necessidade da vírgula decimal que no entanto estaria implícita. Com um número inteiro que tenha magnitude de “n” bits pode-se representar todos os inteiros “N” na faixa

0 <= |N| <= 2n - 1

O formato da fração permite números com magnitude na faixa

0 <= |N| <= 1 ‐ 2‐n. 

Em geral, o ponto fixo permite uma faixa limitada de valores e tem necessidade de hard-ware relativamente simples.

22BNúmeros em Ponto flutuante

A faixa de números que podem ser representados por um código numérico ponto fixo é insuficiente para muitas aplicações, particularmente cálculos científicos onde números muito grandes e muito pequenos são freqüentemente encontrados. A notação científica permite que tais números sejam representados usando, relativamente, poucos dígitos:

1,0 x 1018 = 1.000.000.000.000.000.000 pto. flutuante ponto fixo

Um número ponto flutuante tem a forma M x BE onde M = mantissa B = base E = expoente

Em 1,0 x 1018 => M = 1,0 B = 10 E = 18

Para implementação no computador, a mantissa e o expoente são codificados como números ponto fixo na base numérica r, onde r é usualmente 2 ou 10. A base B é alguma potência de r. Desde que a base é uma constante, ela não precisa estar incluída em um código numérico. Um número em ponto flutuante é portanto armazenado na memória do computador como um par de números ponto fixo - uma mantissa M, que é usualmente uma fração ou um inteiro; e um expoente E, que é um inteiro.

A precisão de M x BE é determinada pelo número de bits usados para representar M. A faixa de valores possíveis é determinada por B e E. Formatos ponto flutuante são usados para representar números reais sobre um intervalo contínuo +/- R. Desde que apenas um conjunto finito de números pode ser representado (no máximo 2n, onde n é o tamanho da palavra ponto flutuante), estes números são distribuídos sobre um intervalo +/-R. Aumentando E, aumenta-se enormemente a faixa dos números que podem ser representa-dos mas resulta numa distribuição mais esparsa dos números dentro dessa faixa

Page 11: Capítulo 2: Números e Aritmética Binária · O uso do sistema binário apresenta vantagens importantes sob o ponto de vista da construção e ... Converter o número ... A conversão

35

Normalização : A representação de números ponto flutuante é inerentemente redundante no sentido que o mesmo número pode ser representado em mais de uma forma. Por exemplo, 1,0 x 1018, 0,1 x 1019, 1000000 x 1012, e 0,000001 x 1024 são equivalentes. Geralmente é desejável especificar uma forma única (normal) para a representação de números ponto flutuante num computador. Só a parte fracionária da mantissa é representada internamente no computador. A intenção da normalização é garantir o máximo de bits possíveis da mantissa para representar o número, procurando não deixar, na medida do possível, zeros a direita da vírgula binária. A normalização restringe a magnitude |M| de uma mantissa fracionária à faixa (para números com B = 2): 0,5 <= |M| < 1 ou M = 0 Vejamos, por exemplo, a regra de Normalização do Padrão IEEE 754:

Para a representação interna de um número ponto flutuante, pode-se não ter a representação exata do número. Na maioria das vezes tem-se uma aproximação. Esta aproximação é tanto mais real quanto maior for o número de bits reservados para a representação da mantissa fracionária (precisão).

Page 12: Capítulo 2: Números e Aritmética Binária · O uso do sistema binário apresenta vantagens importantes sob o ponto de vista da construção e ... Converter o número ... A conversão

36

Qual seria a precisão e a faixa de valores possíveis para um número ponto flutuante representado no formato dos exemplos acima? Como se representaria o número zero neste formato? As respostas para essas perguntas são as seguintes: a precisão do número é dada pela mantissa. Pois bem, se para a mantissa são reservados 24 bits, então a precisão da número seria de 224 = 16.777.216. A faixa de valores possíveis é dada pela Base e pelo expoente. Tem-se 7 bits para o expoente com sinal, logo, tirando o bit de sinal, sobra 6 bits para o expoente, que pode estar na faixa de -26 até +26-1 = -64 até +63. Logo, a faixa de valores possíveis, que inclui a Base fica de 2-64 até 2+63. A representação do zero tem alguns problemas. A mantissa, claro, deve ser zero, mas o expoente pode ter qualquer outro valor pois 0 x BE = 0 para todos os valores de E. Freqüentemente, o que acontece devido aos erros de arredondamento, quando se quer computar o zero, a mantissa é muito pequena, mas não exatamente zero. Para o número inteiro ser próximo de zero, seu expoente deve ser um número negativo grande. Se k bits são reservados para o expoente, incluindo seu sinal (no caso 7), então todos os números entre -2k-1 e +2k-1 -1 podem ser representados (no caso entre -64 e +63). O expoente -2k-1 seria usado no formato normal para o zero. Uma segunda complicação vem do fato de que é desejável que o zero seja representado por uma seqüência de bits 0 apenas, a princípio para facilitar a implementação de instruções que testam o zero. Ao expoente, consistindo de uma seqüência de zeros, deve então ser atribuído o valor -2k-1. Isto sugere que os expoentes sejam codificados em um código excesso-2k-1 similar ao código excesso-3 (ver próximo sub-item), onde o campo do expoente contém o expoente real mais 2k-1. A quantidade 2k-1 é chamada de polarizador, e um expoente codificado desta maneira é chamado de expoente polarizado ou característica. A figura abaixo mostra todos os valores de um expoente de 4 bits com polarização 8 (código excesso-8): Expoente Número representado 1111 +7 1110 +6 1101 +5 1100 +4 1011 +3 1010 +2 1001 +1 1000 0 0111 -1 0110 -2 0101 -3 0100 -4 0011 -5 0010 -6 0001 -7 0000 -8

Page 13: Capítulo 2: Números e Aritmética Binária · O uso do sistema binário apresenta vantagens importantes sob o ponto de vista da construção e ... Converter o número ... A conversão

37

Complementos A desvantagem do desperdício de um bit, apenas para armazenamento de sinal, foi resolvida adotando-se as chamadas notações de complemento onde o dígito mais significativo é usado ao mesmo tempo para representação do sinal (segundo a convenção de sinal e magnitude), e de parte do número. A convenção adotada é que números positivos têm sua representação em complemento idêntica a representação normal (devem ser sempre no entanto iniciados com zero); no caso da representação negativa é que existirão diferenças, mas sempre um número negativo deverá começar com 1.

23BComplemento de 1 Seja, por exemplo, um número inteiro positivo N com b bits, onde o bit mais significativo deve ser zero. O seu equivalente negativo representado em complemento de 1 é calculado subtraindo-se cada dígito de N de 1: 510 = 01012 => complemento de 1 => 11112 01012 - ------ 10102 = -510 Por estar em base binária, o complemento de 1 também pode ser obtido de forma mais simples do que pela definição, simplesmente complementando-se (invertendo-se) os bits do número, substituindo-se “zeros” por “uns” e vice-versa. O complemento de 1 não resolve o problema da dupla representação do zero, representado por 0000 e 1111, mas permite operações aritméticas mais simples do que com números representados em sinal e magnitude. - 410 1 0 1 12 + 110 0 0 0 12 + ------ ---------- - 310 1 1 0 02 = - 310, correto! A resposta obtida é o número negativo -3, representado em complemento de 1. Entretanto quando dois números negativos são somados, o bit de carry deve ser adicionado ao resultado para obtenção do valor correto, como no exemplo a seguir: - 210 1 1 0 12 - 410 1 0 1 12 ------ ----------- - 610 1 1 0 0 02 ( = - 710 = errado!!) somando-se o carry ao resultado tem-se: 1 0 0 02 0 0 0 12 + (bit de carry) ---------- 1 0 0 12 ( = -610 = correto.)

Page 14: Capítulo 2: Números e Aritmética Binária · O uso do sistema binário apresenta vantagens importantes sob o ponto de vista da construção e ... Converter o número ... A conversão

38

24BComplemento de 2 A solução para os problemas do dupla representação do zero e de aritmética com números negativos surgiu com a definição do complemento de 2, obtido através dos passos:

• Calcule o complemento de 1 do número • Some 1 ao valor calculado para obter o complemento de 2.

O uso do complemento de 2 elimina a necessidade de subtrações nos computadores, simplificando o hardware. A subtração é feita somando-se ao minuendo o complemento de 2 do subtraendo. O bit de carry final do resultado deve ser desprezado. 7110 0 1 0 0 0 1 1 12 3510 - 1 1 0 1 1 1 0 12 + ----- -------------------- 3610 1 0 0 1 0 0 1 0 02 = 3610 Quando o resultado for negativo, o que se obtém é o seu complemento de 2. 3510 0 0 1 0 0 0 1 12 7110 - 1 0 1 1 1 0 0 12 + ----- -------------------- - 3610 1 1 1 0 1 1 1 0 02 = DC16 (complemento de 2 de - 3610)

Page 15: Capítulo 2: Números e Aritmética Binária · O uso do sistema binário apresenta vantagens importantes sob o ponto de vista da construção e ... Converter o número ... A conversão

39

8BCaracteres

A necessidade de armazenamento e transmissão de informações textuais entre computadores levou a definição de códigos em que combinações de bits representam letras, algarismos numéricos usados em texto, pontuação, etc, e onde cada valor de código corresponde a um caractere. Os primeiros códigos de caracteres usavam combinações de 6 bits, pois 6 era o valor mínimo de bits para criar combinações de números em quantidade suficiente para representar as 26 letras do alfabeto inglês, e os 10 dígitos decimais (com 6 bits temos 26 = 64 combinações diferentes, cada caracter sendo representado por um número de 6 bits). Os 6 bits também permitiam um número razoável (28) de caracteres especiais como ponto, vírgula e símbolos matemáticos. Mais recentemente têm predominado o uso de seqüências de 7 e 8 bits para representação de caracteres, pois permitem caracteres adicionais, como alfabeto maiúsculo e minúsculo, e mais caracteres simbólicos, de acentuação, e de controle (+ ‐ / , : ; LF CR EOT). O código mais usado para representar caracteres é o ASCII (“American Standard Code for Information Interchange”) desenvolvido para caracteres não acentuados, sumariado a seguir. Em português é preferível usar o código ASCII estendido, que inclui caracteres acentuados. Outro código padrão de caracteres de 8 bits é o EBCDIC (Extended Binary Coded Decimal Interchange Code) desenvolvido pela IBM. 9BCódigos de Caracteres Decimais Vimos que, como nós usamos no dia a dia aritmética decimal, os números para serem entrados num computador, devem ser primeiro convertidos da representação decimal para a binária. Similarmente, a conversão Ubinária-decimalU faz parte do processo de saída de um computador. O armazenamento de números decimais no formato de texto ( 1 dígito decimal em cada byte ), usando por exemplo a tabela ASCII, também requer a conversão Udecimal-bináriaU. Muitos códigos numéricos são usados para permitir uma conversão rápida de números binários para números decimais. São os códigos decimais:

Page 16: Capítulo 2: Números e Aritmética Binária · O uso do sistema binário apresenta vantagens importantes sob o ponto de vista da construção e ... Converter o número ... A conversão

40

Dígito CÓDIGO DECIMAL Decimal BCD EBCDIC ASCII Excesso-3 2-entre-5 0 0000 11110000 00110000 0011 11000 1 0001 11110001 00110001 0100 00011 2 0010 11110010 00110010 0101 00101 3 0011 11110011 00110011 0110 00110 4 0100 11110100 00110100 0111 01001 5 0101 11110101 00110101 1000 01010 6 0110 11110110 00110110 1001 01100 7 0111 11110111 00110111 1010 10001 8 1000 11111000 00111000 1011 10010 9 1001 11111001 00111001 1100 10100 BCD - Binary Coded Decimal: cada dígito di é representado por seu equivalente de 4 bits bi.3bi.2bi.1bi.0 na forma binária padrão: 971 em BCD é 1001 0111 0001 . EBCDIC - Extended BCD Interchange Code: representa os 10 dígitos decimais num campo de 4 bits da mesma forma que em BCD. Os outros 4 bits (o campo "zonado") não são usados para representação de dados numéricos. ASCII - usa o mesmo princípio de EBCDIC. 25 em ASCII é: 00110010 00110101 Excesso-3: É formado adicionando 0011 (3) ao correspondente número BCD, daí o nome. Este código tem a vantagem de poder ser processado usando a mesma lógica usada para códigos binários. Algumas operações aritméticas são difíceis de implementar usando código excesso-3, principalmente porque é um código "sem-peso" (não posicional). 2-entre-5: cada dígito decimal é representado por uma seqüência de 5 bits contendo dois 1's e três 0's. Existe exatamente 10 seqüências distintas deste tipo. O maior mérito deste código é ser um detetor de erro simples, pois mudando-se qualquer bit, resulta numa seqüência que não tem correspondente válido no código. Suas desvantagens é que é um código "sem peso" e usa 5 ao invés de 4 bits por código decimal. A principal vantagem dos códigos decimais é a facilidade de conversão entre a representação interna do computador que permite apenas os símbolos 0 e 1 e representações externas que usam os dez símbolos decimais 0,1,2,...,9. Os códigos decimais têm suas desvantagens: a) Eles usam mais bits para representar um número do que os códigos binários, portanto

requerem mais espaço de memória; b) Os circuitos necessários para implementar aritmética usando operandos decimais são mais

complexos do que para aritmética binária.

Page 17: Capítulo 2: Números e Aritmética Binária · O uso do sistema binário apresenta vantagens importantes sob o ponto de vista da construção e ... Converter o número ... A conversão

41

Ex.: 95 + 15 em BCD: 1001.0101 0001.0101 ------------ 1010.1010 ≠ 110 em BCD! Alguns comentários a respeito da estrutura dos códigos ASCII e EBCDIC são úteis. Note que em ambos os códigos, os 4 bits menos significativos dos códigos de caracteres decimais (0-9) são os códigos BCD já vistos. Isto facilita duas operações. Primeiro, a comparação de dois caracteres que representam dígitos decimais para determinar qual é o maior, pode ser feito com o mesmo tipo de circuito lógico que é usado para implementar as operações aritméticas padrões para números binários. Segundo, quando é determinado pelo contexto que o código de 7 ou 8 bits em alguma entrada representa um número decimal que está para ser armazenado e processado como uma entidade única, então é prático, algumas vezes, remover os 3 ou 4 bits mais significativos de cada código do dígito e comprimir o número, que vira um dígito BCD de 4 bits. Comentários similares valem para os caracteres alfabéticos. O fato de eles estarem em seqüência numérica facilita o arranjo em ordem alfabética. (Ver tabelas ASCII e EBCDIC).

 

 

Paridade Paridade de um caractere é um bit extra usado para detecção de erro simples (como no caso do código 2-entre-5). Existem dois tipos de paridade: paridade par e paridade ímpar. Quando o número de bits 1 do caractere é par, o bit de paridade par é 0 e o bit de paridade ímpar é 1.

Page 18: Capítulo 2: Números e Aritmética Binária · O uso do sistema binário apresenta vantagens importantes sob o ponto de vista da construção e ... Converter o número ... A conversão

42

 

Tabela ASCII  

 

Page 19: Capítulo 2: Números e Aritmética Binária · O uso do sistema binário apresenta vantagens importantes sob o ponto de vista da construção e ... Converter o número ... A conversão

43

2BAritmética Binária

10BAdição

A adição binária obedece às leis convencionais adotadas para o sistema de numeração dec-imal, conforme a tabela 4.1, onde estão as combinações possíveis para a adição de um par de bits. A última coluna diz respeito ao bit que é “carregado” (carry) ou “vai-um” para a casa binária seguinte.

ADENDO AUGENDO RESULTADO “VAI-UM” 0 0 0 0 0 1 1 0 1 0 1 0 1 1 0 1 Como exemplo de adição, seja a soma dos números binários equivalentes aos decimais 35 e 71:

3510 0 0 1 0 0 0 1 12 7110 + 0 1 0 0 0 1 1 12 + -------- ------------------ 10610 0 1 1 0 1 0 1 02 11BSubtração Também obedece às leis convencionais conforme a tabela abaixo, onde estão as combinações possíveis para a subtração de um par de bits. A última coluna refere-se ao bit “emprestado” da casa binária à esquerda também chamado de “borrow” ou de “vem-um” :

MINUENDO SUBTRAENDO RESULTADO “EMPRESTA-UM” 0 0 0 0 0 1 1 1 1 0 1 0 1 1 0 0 Como exemplo, seja a subtração dos mesmos números usados no exemplo anterior. Note que é necessária a inversão dos valores colocando-se o número maior em módulo (no caso um número negativo) como minuendo.

7110 0 1 0 0 0 1 1 12 3510 - 0 0 1 0 0 0 1 12 - -------- ------------------

3610 0 0 1 0 0 1 0 02

Page 20: Capítulo 2: Números e Aritmética Binária · O uso do sistema binário apresenta vantagens importantes sob o ponto de vista da construção e ... Converter o número ... A conversão

44

12BMultiplicação

Segue as regras vistas na tabela abaixo:

MUTIPLICANDO MULTIPLICADOR RESULTADO 0 0 0 0 1 0 1 0 0 1 1 1 Como exemplo de multiplicação, seja a multiplicação dos números 3 e 4 :

4 ...................... 1 0 0

3 ...................... 0 1 1 x

-------------

1 0 0

1 0 0 +

--------------

12 ................. 1 1 0 0

13BDivisão

Segue as regras vistas na tabela abaixo. A tabela não contém os casos de divisão por zero, proibidos.

DIVIDENDO DIVISOR QUOCIENTE 0 1 0 1 1 1

Exemplo: 1 1 0 0 1 0 / 101

1 1 0 0 1 0 1 0 1

- 1 0 1 1 0 1 0

____

0 0 1 0 1

- 1 0 1

________

0 0 0 0