capitulo i sistemas de numeracao

31
Professor Edino Mariano Lopes Fernandes Nota importante: Existem materiais incluídos neste documento de outros autores e fontes bibliográficas quase todos devidamente identificadas (algumas fontes não foi possível de serem identificadas, trechos de textos, questões soltas, pinçadas aqui e ali, etc. – Caso o usuário conheça alguma fonte não identificada no texto, por favor, comunique para que se efetue os devidos créditos). Algumas questões foram retiradas de sites de Internet, sendo de uso livre. Para informações mais completas, deve-se recorrer aos livros ou Web sites citados na bibliografia fornecida na apostila da disciplina. UNIVERSIDADE DO ESTADO DE SANTA CATARINA CENTRO DE CIÊNCIAS TECNOLÓGICAS – CCT Departamento de Ciência da Computação

Upload: edilsonlucena1993

Post on 07-Aug-2015

115 views

Category:

Documents


5 download

TRANSCRIPT

Page 1: Capitulo I Sistemas de Numeracao

Professor Edino Mariano Lopes Fernandes

Nota importante: Existem materiais incluídos neste documento de outros autores e fontes bibliográficas quase todos devidamente identificadas (algumas fontes não foi possível de serem identificadas, trechos

de textos, questões soltas, pinçadas aqui e ali, etc. – Caso o usuário conheça alguma fonte não identificada no texto, por favor, comunique para que se efetue os devidos créditos). Algumas questões

foram retiradas de sites de Internet, sendo de uso livre. Para informações mais completas, deve-se recorrer aos livros ou Web sites citados na bibliografia fornecida na apostila da disciplina.

UNIVERSIDADE DO ESTADO DE SANTA CATARINA

CENTRO DE CIÊNCIAS TECNOLÓGICAS – CCT

Departamento de Ciência da Computação

Page 2: Capitulo I Sistemas de Numeracao

Arquitetura e Organização de Computadores Página 2

I – SISTEMAS DE NUMERAÇÃO

1.1 Introdução (1)

Um sistema de numeração é um conjunto finito de símbolos organizados através de uma lei de formação que permite representar qualquer quantidade numérica.

No início dos tempos conhecidos os habitantes das cavernas costumavam pintar animais nas paredes, provavelmente para armazenar informações que obtinham no seu cotidiano.

Nota: A palavra que usamos hoje, cálculo, é derivada da palavra latina calculus, que significa pedrinha.

Posteriormente, os Sumérios criaram um sistema para representar sua linguagem através de

desenhos, gravados em placas de argila. Mais tarde, os egípcios usavam representar sua linguagem através dos hieróglifos gravados em papiros. Os chineses gravavam mensagens nos cascos de tartarugas, os incas usavam fios com nós (os quipos). Gradativamente o homem foi aperfeiçoando sua forma de comunicação através da escrita.

Os conceitos gerais de linguagem tem uma representação muito complexa - por exemplo, como representar um objeto, uma ação ou um sentimento. Presume-se que o homem encontrou mais facilidade para representar quantidades. Inicialmente, as quantidades eram representadas com os dedos. Assim, desde o princípio nosso entendimento de quantidades sempre foi digital (vem de "digitus" = dedos). Os mais antigos registros encontrados representam quantidades através de entalhes em ossos. Diversas civilizações antigas criaram alguma forma de representação de quantidades, mas cada número n era sempre representado por n símbolos da unidade. Para facilitar a contagem, as unidades eram agrupadas em grupos de 5 (uma mão-cheia) ou 10 (duas mãos-cheias).

Os símbolos numéricos atualmente utilizados são conhecidos como Arábicos e foram desenvolvidos pelos árabes. Ao grego Pitágoras se atribui a divisão dos números em ímpares e pares. Ele concebeu que todas as manifestações da Natureza se fazem com números ou proporções matemáticas.

Hoje, existem vários sistemas numéricos, dentre os quais, para este estudo, destacam-se o sistema decimal, o sistema binário, o sistema octal e o sistema hexadecimal.

1.2 Sistemas de Numeração (2)

Os sistemas de numeração têm por objetivo prover símbolos e convenções para representar

quantidades, de forma a registrar a informação quantitativa e poder processá-la. A representação de quantidades se faz com os números . Na antigüidade duas formas de representar quantidades foram inventadas. Inicialmente, os egípcios, criaram um sistema em que cada dezena (uma mão-cheia de nosso exemplo anterior) era representada por um símbolo diferente. Usando por exemplo os símbolos # para representar uma centena, & para representar uma dezena e @ representando uma unidade (símbolos escolhidos ao acaso), teríamos que ###&&@ representaria 321.

Mais tarde, no pastoreio, o pastor usava várias formas para controlar o seu rebanho. Pela manhã, ele soltava os seus carneiros e analisava ao final da tarde, se algum tinha sido roubado, fugido, se perdido do rebanho ou se havia sido acrescentado um novo carneiro ao rebanho. Para fazer isso, ele guardava pedrinhas dentro de um saco. Assim ele tinha a correspondência um a um, onde cada carneiro correspondia a uma pedrinha que era armazenada em um saco.

Page 3: Capitulo I Sistemas de Numeracao

Arquitetura e Organização de Computadores Página 3

Sistemas de Numeração não-posicional Uma das primeiras tentativas de sistema de numeração bem sucedida é o sistema romano. Ele

usa um conjunto de sete símbolos {I,V,L,C,D,M} e é capaz de representar uma grande variedade de números.

Observe que há um conjunto finito de símbolos e uma lei de formação. Contudo ele não consegue representar qualquer quantidade como o zero por exemplo.

Eram usados símbolos (letras) que representavam as quantidades, como por exemplo: I ( valendo 1), V (valendo 5), X (valendo 10), C (valendo 100), etc. A regra de posicionamento determinava que as letras que representavam quantidades menores e precediam as que representavam quantidades maiores, seriam somadas; se o inverso ocorresse, o menor valor era subtraído do maior (e não somado). Assim, a quantidade 128 era representada por:

CXXVIII = 100 + 10 + 10 + 5 + 1 + 1 + 1 = 128.

Um grande problema desse sistema é a dificuldade de realizar operações com essa representação. Assim, posteriormente foram criados sistemas em que a posição dos algarismos no número passou a alterar seu valor (sistemas de numeração posicionais).

Sistemas de Numeração Posicionais

Nos sistemas de numeração posicionais, o valor representado pelo algarismo no número

depende da posição em que ele aparece na representação. O primeiro sistema desse tipo foi inventado pelos chineses . Eram usados palitos, sendo 1 a 5 palitos dispostos na vertical para representar os números 1 a 5; de 6 a 9 eram representados por 1 a 4 palitos na vertical, mais um palito na horizontal (valendo 5) sobre os demais. Cada número era então representado por uma pilha de palitos, sendo uma pilha de palitos para as unidades, outra para as dezenas, outra para as centenas, etc. Esse sistema, com as pilhas de palitos dispostas em um tabuleiro, permitia a realização das quatro operações aritméticas. Não existia representação para o zero (o espaço relativo ficava vazio).O tabuleiro aritmético (chamado swan-pan), além das quatro operações, era usado na álgebra e na solução de equações. Essa técnica era chamada de Método do Elemento Celestial.

Porém o sistema mais bem sucedido foi o sistema decimal. Ele usa dez símbolos {0,1,2,3,4,5,6,7,8,9} e uma regra de formação capaz de representar qualquer quantidade finita.

Este sistema foi originalmente inventado pelos matemáticos hindus aproximadamente em 400 D.C. Os árabes começaram a usar o sistema em 800 D.C. aproximadamente, quando ficou conhecido como o Sistema Numérico Arábico.

Após ele ter sido introduzido na comunidade da Europa por volta de 1200 D.C., o sistema logo adquiriu o título de "sistema numérico decimal".(3)

Os Egípcios da Antiguidade criaram um sistema muito interessante para escrever números, baseado em agrupamentos.

No sistema de numeração egípcia os números são representados por símbolos especiais para 1, 10, 100, 1000 e de uma forma aditiva:

1 era representado por uma marca que se parecia com um bastão | ; 2 era representado por duas marcas || ; E assim por diante...

3 4 5 6 7 8 9 ||| |||| ||||| |||||| ||||||| |||||||| |||||||||

Qualquer semelhança com código de barras não é coincidência. Fonte:http://www.portalsaofrancisco.com.br/alfa/sistema-de-numeracao-egipcia/

Page 4: Capitulo I Sistemas de Numeracao

Arquitetura e Organização de Computadores Página 4

1.3 Base de um Sistema de Numeração (2)

A base de um sistema é a quantidade de algarismos disponível na representação. A base 10 é

hoje a mais usualmente empregada, embora não seja a única utilizada. No comércio pedimos uma dúzia de rosas ou uma grosa de parafusos (base 12) e também marcamos o tempo em minutos e segundos (base 60).

Os computadores utilizam a base 2 (sistema binário) e os programadores, por facilidade, usam em geral uma base que seja uma potência de 2, tal como 24 (base 16 ou sistema hexadecimal) ou eventualmente ainda 23 (base 8 ou sistema octal). 1.4 Sistema Decimal

Abaixo ilustra-se a representação de um número no sistema decimal e na forma equivalente, de notação posicional, a cada dígito (símbolo) do número decimal é atribuído um certo peso em função da sua posição no número. O número 10 é definido como a base deste sistema.

(Forma Posicional ) 3475 = 3000 + 400 + 70 + 5 (Forma Polinomial ) = 3 x 103 + 4 x 102 + 7 x 101 + 5 x 100 onde, 10 é a base do sistema, e 103 , 102 ,101 e 100 representam os pesos. Outro exemplo: 123,456 = 100 + 20 + 3 + 0,4 + 0,005 + 0,0006 = 1 x 102 + 2 x 101 + 3 x 100 + 4 x 10-1 + 5 x 10-2 + 6 x 10-3

O princípio da atribuição de pesos, observado na notação posicional, pode ser estendido a

qualquer sistema numérico.Na base 10, dispõe-se de 10 algarismos para a representação do número: 0, 1, 2, 3, 4, 5, 6, 7, 8 e 9. Na base 2, seriam apenas 2 algarismos: 0 e 1. Na base 16, seriam 16: os 10 algarismos aos quais estamos acostumados, mais os símbolos A, B, C, D, E e F, representando respectivamente 10, 11, 12, 13, 14 e 15 unidades. Generalizando, temos que uma base b qualquer disporá de b algarismos, variando entre 0 e (b-1).

A representação 125,3810 (base 10) significa 1x102 + 2x101 + 5x100 + 3x10-1 + 8x10-2 : Ou seja, , podemos representar uma quantidade N qualquer, numa dada base b, com um

número tal como segue: Nb = an.b

n + .... + a2.b2 + a1.b

1 + a0.b0 + a-1.b

-1 + a-2.b-2 + .... + a-n.b

-n , sendo que, an.b

n + .... + a2.b2 + a1.b

1 + a0.b0 é a parte inteira e

a-1.b-1 + a-2.b

-2 + .... + a-n.b-n é a parte fracionária.

Intuitivamente, sabemos que o maior número que podemos representar, com n algarismos, na base b, será o número composto n vezes pelo maior algarismo disponível naquela base (ou seja, b-1). Por exemplo, o maior número que pode ser representado na base 10 usando 3 algarismos será 999 (ou seja, 103 - 1 = 999).

Podemos ver que o maior número inteiro N que pode ser representado, em uma dada base b, com n algarismos (n "casas"), será N = bn - 1. Assim, o maior número de 2 algarismos na base 16 será FF16 que, na base 10, eqüivale a 25510 = 162 - 1.

Page 5: Capitulo I Sistemas de Numeracao

Arquitetura e Organização de Computadores Página 5

1.5 Base diferente de 10 [2]

A regra de formação de nosso sistema de numeração não está, de forma alguma, atada ao

número de símbolos usados. Assim, podemos pensar em sistemas de numeração com qualquer quantidade de símbolos ou qualquer base.

Imagine que temos, apenas, três símbolos {0,1,2}. Neste caso os números seriam repre-

sentados da seguinte forma:

Na base 10

Na base 3

0 0 1 1 2 2 3 10 4 11 5 12 6 20 7 21

Na base

10 Na base

3 8 22 9 100

10 101 11 102 12 110

Se, em vez dos símbolos 0, 1 e 2, tivéssemos os símbolos {Ο, � , ∇} isto, em nada,

mudaria as coisas. Pois os numerais seriam:

Na base 10

Na base 3

Na base 3 com ΟΟΟΟ, ���� e ∇∇∇∇

0 0 Ο 1 1 � 2 2 ∇ 3 10 � Ο 4 11 � � 5 12 � ∇ 6 20 ∇Ο

Algumas bases particularmente importantes para nós são as bases 2, 8 e 16 ditas binária, octal

e hexadecimal respectivamente. 1.6 Sistema Binário

Criado por um matemático alemão do século dezessete, Golttfried Wilhelm von Leibniz foi o advogado do sistema binário de numeração que tem por base o número 2, usando apenas os

Page 6: Capitulo I Sistemas de Numeracao

Arquitetura e Organização de Computadores Página 6

símbolos 0 e 1. As razões que o levaram a este sistema parece ter sido mística onde havia grande beleza na analogia entre zero representando o vazio e um representado a divindade.

Os computadores modernos utilizam apenas o sistema binário, isto é, todas as informações armazenadas ou processadas no computador usam apenas DUAS grandezas, representadas pelos algarismos 0 e 1. Essa decisão de projeto deve-se à maior facilidade de representação interna no computador, que é obtida através de dois diferentes níveis de tensão. Havendo apenas dois algarismos, portanto dígitos binários, o elemento mínimo de informação nos computadores foi apelidado de bit (uma contração do inglês binary digit ).

Representação Binária Potência Repr.Decimal 1 20 1 1 0 21 2 1 0 0 22 4 1 0 0 0 23 8 1 0 0 0 0 24 16 1 0 0 0 0 0 25 32 1 0 0 0 0 0 0 26 64 1 0 0 0 0 0 0 0 27 128 1 0 0 0 0 0 0 0 0 28 256 1 0 0 0 0 0 0 0 0 0 29 512

1 0 0 0 0 0 0 0 0 0 0 210 1.024 A representação binária é perfeitamente adequada para utilização pelos computadores. No

entanto, um número representado em binário apresenta muitos bits, ficando longo e passível de erros quando manipulado por seres humanos normais como por exemplo os programadores, analistas e engenheiros de sistemas (bem, não tão normais assim ...). Para facilitar a visualização e manipulação por programadores de grandezas processadas em computadores, são usualmente adotadas as representações octal (base 8) e principalmente hexadecimal (base 16). Ressaltamos mais uma vez que o computador opera apenas na base 2 e as representações octal e hexadecimal não são usadas no computador, elas se destinam apenas à manipulação de grandezas pelos programadores.

A seguir apresentam-se números representados no sistema binário e na notação posicional. 10012 1011011.10012 No sistema binário, o ponto (.) é equivalente à vírgula do sistema decimal.

1.7 Sistema Octal e Sistema Hexadecimal

Em projetos de informática (isto é, nos trabalhos realizados pelos programadores, analistas e engenheiros de sistemas), é usual representar quantidades usando sistemas em potências do binário para reduzir o número de algarismos da representação e consequentemente facilitar a compreensão da grandeza e evitar erros. No sistema octal (base 8), cada três bits são representados por apenas um algarismo octal (de 0 a 7). No sistema hexadecimal (base 16), cada quatro bits são representados por apenas um algarismo hexadecimal (de 0 a F). Neste sistema, usam-se os dígitos 0,1,2,3,4,5,6,7,8,9 e as letras A, B, C, D, E e F, que correspondem aos algarismos decimais 10,11,12,13,14 e 15, respectivamente.

A seguir, apresentamos uma tabela com os números em decimal e sua representação correspondente em binário, octal e hexadecimal:

Page 7: Capitulo I Sistemas de Numeracao

Arquitetura e Organização de Computadores Página 7

Base 10 Base 2 Base 8 Base 16 0 0 0 0 1 1 1 1 2 10 2 2 3 11 3 3 4 100 4 4 5 101 5 5 6 110 6 6 7 111 7 7 8 1000 10 8 9 1001 11 9

10 1010 12 A 11 1011 13 B 12 1100 14 C 13 1101 15 D 14 1110 16 E 15 1111 17 F

Nota : a base 16 ou sistema hexadecimal pode ser indicada também por um "H" ou "h" após o número; por exemplo: FFH significa que o número FF (ou 255 em decimal) está em hexadecimal. Não confundir o "H" ou "h" com mais um dígito, mesmo porque em hexadecimal só temos algarismos até "F" e portanto não existe um algarismo "H". Exemplo: Como seria a representação do número 1610 em binário, octal e hexadecimal? Solução: Seria respectivamente 100002, 208 e 1016.

Exemplos: 7268 54,378 145H 5A3 EF4

1.8 Conversões de Bases Mudança de Base de Números Inteiros Base, como já foi dito, é número de símbolos usados em um sistema de numeração posicional.

Para todos os efeitos, a base determina unicamente o sistema de numeração posicional. Não importa se usa-se 0, 1 e 2 ou Ο, � e ∇, ambos formam um sistema de numeração posicional de base três.

Assim, mudar de base é representar um número dado em um sistema de numeração posi-cional em um outro sistema de numeração posicional com uma base diferente.

Como, na maioria das vezes usamos os mesmos algarismos para as diversas bases, fica difícil decidir, só por olhar, em que base está representado um determinado número. Para contornar este problema, convenciona-se indicar em subescrito o valor da base. Assim, o número dezessete em diversas bases seria: 1710, 178 ou 1716 etc.

Da base 10 para uma base b

Para transformar um número decimal inteiro em um número em uma base b qualquer basta

fazer divisões inteiras sucessivas do número por b e, depois, reunir os restos em ordem inversa.

Page 8: Capitulo I Sistemas de Numeracao

Arquitetura e Organização de Computadores Página 8

Por exemplo, qual será a representação de 1310 na base 2? Executando divisões sucessivas até encontrar quociente 0, obtemos:

13 ÷ 2 = 6 r = 1 6 ÷ 2 = 3 r = 0 3 ÷ 2 = 1 r = 1 1 ÷ 2 = 0 r = 1 Assim, tomando os restos das divisões em ordem contrária a que eles aparecem concluímos que: 1310 = 11012

De uma base b para a base 10

Para transformar um número representado em um base b na base 10 basta expandir o

polinômio que representado por este número. Assim, se temos o número Nb = αβγb , onde α, β e γ são algarismos da base b, basta expandir e calcular o polinômio para determinar N10.

N10 = α × b2 + β × b1 + γ × b0

Por exemplo, qual o valor de N2 = 11012 na base 10? Para tanto, basta calcular:

N10 = 1 × 23 + 1 × 22 + 0 × 21 + 1 × 20

N10 = 8 + 4 + 0 + 1 N10 = 13

De uma base “a” para uma base “b”

Para fazer a mudança de uma base “a” para uma base “b” basta passar da base “a” para a

base 10 e depois passar da base 10 para a base “b”. Coisas que já sabemos fazer. Por exemplo, 314 correspondo ao que na base 6? Primeiro, passamos 314 para a base 10: N10 = 3 × 41 + 1 × 40 = 12 + 1 = 1310

Depois, passamos o 1310 para a base 6: 13 ÷ 6 = 2 r = 1 2 ÷ 6 = 0 r = 2 o que dá o número 216. Portanto, concluímos que 314 é igual a 216.

De base 10 para base 2.

Exemplo 1 : Converter o número 40010 para binário.

Page 9: Capitulo I Sistemas de Numeracao

Arquitetura e Organização de Computadores Página 9

De base 2 para base 10. 1001101 = 1 x 26 + 0 x 25 + 0 x 24 + 1 x 23 + 1 x 22 + 0 x 21 + 1 x 20 = 64 + 0 + 0 + 8 + 4 + 0 + 1 = 7710

De base 2 para base 8. Para transformar um número binário em octal, basta separá-lo em grupos de três algarismos a

partir da direita, por exemplo: Tomemos o número binário 110010. Separando, 110 010 Faz-se então a conversão para o sistema decimal. Como o maior número que se pode formar

com três algarismos é 7, a conversão irá resultar diretamente no número no sistema octal. 1102 = 68 0102 = 28

Portanto, 1100102 = 628

De base 8 para base 2. Desmembra-se o número e transforma-se cada algarismo no correspondente binário. 278 2 = 010 e 7 = 111, portanto 278 = 0101112

De base 2 para base 16. É análogo à conversão do sistema binário para octal, sendo que nesse caso, agrupamos de 4

em 4 algarismos da direita para a esquerda. Exemplo: Converter o binário 10011000 em hexadecimal.

Page 10: Capitulo I Sistemas de Numeracao

Arquitetura e Organização de Computadores Página 10

1001 = 9 1000 = 8 Portanto 100110002 = 98H De base 16 para base 2. É análogo à conversão do sistema octal para binário, sendo que nesse caso, necessitamos de

4 algarismos binários para representar o número hexadecimal. Exemplo: Converter o número C13 em binário. C = 1100 1 = 0001 3 = 0011 Portanto, C13H = 1100000100112

De base 10 para base 8. Exemplo: Converter 12510 para base 8. O mesmo raciocínio vale para conversão da base 10 para uma base r , menor que 10. De base 8 para base 10 Exemplo: Converter 1748 para decimal. 1748 = 1 x 82 + 7 x 81 + 4 x 80 = 64 + 56 + 4 = 12410

De base 10 para base 16

Page 11: Capitulo I Sistemas de Numeracao

Arquitetura e Organização de Computadores Página 11

De base 16 para base 10 1C3 = 1 x 162 + C x 161 + 3 x 160 = 1 x 162 + 12 x 161 + 3 x 160 = 45110

De base 16 para base 8

Para fazer transformações entre as bases 8 e 16, que não são potências uma da outra,

usamos a base 2 como intermediária nestas transformações.

Por exemplo, para transformar 1BC416 na base 8, primeiro transformamo-lo para a base 2. Então: 1BC416 = 0001.1011.1100.01002

reagrupando o agora número binário de três em três temos:

0.001.101.111.000.1002 = 157048 Portanto

1BC416 = 157048.

De base 8 para base 16

Por outro lado, se tivermos, por exemplo, o número 2358 para transformá-lo para a base 16, primeiro passamo-lo para a base 2. 2358 = 010.011.1012

Em seguida grupamos os algarismos binários de quatro em quatro.

0.1001.11012 = 9D16

Portanto 2358 = 9D16.

1.9 Conversão de números fracionários Não são apenas os números inteiros que têm representação em outras bases. Os números

com parte fracionária também podem ser mudados de base. As regras para estas mudanças são muito semelhantes as dos números inteiros. A principal diferença é que os números inteiros têm potências positivas enquanto os fracionários têm potências negativas.

1.9.1 Da base 10 para uma base b

Para passar um número fracionário da base 10 para uma base b, basta multiplicá-lo

sucessivamente pela base de destino, guardando a parte inteira, até alcançar zero. Por exemplo, qual a representação de 0,12510 na base 2? Para determinar isto, multiplicamos sucessivamente 0,125 por 2: 0,125 × 2 = 0,25 i = 0 0,25 × 2 = 0,5 i = 0 0,5 × 2 = 1 i = 1 Assim, concluímos que 0,12510 é igual a 0,0012.

Page 12: Capitulo I Sistemas de Numeracao

Arquitetura e Organização de Computadores Página 12

Algumas vezes, não é possível alcançar o fim da parte fracionária porque a representação na base de destino tem uma quantidade muito grande de dígitos decimais. Neste caso, paramos o processo em algum ponto e assumimos um erro de aproximação.

Por exemplo, qual o valor de 0,3710 na base 2? Como antes fazemos as multiplicações sucessivas: 0,37 × 2 = 0,74 I = 0 0,74 × 2 = 1,48 I = 1 0,48 × 2 = 0,96 I = 0 0,96 × 2 = 1,92 I = 1 0,92 × 2 = 1,84 I = 1 0,84 × 2 = 1,68 I = 1 ... Com isto vemos que 0,3710 corresponde aproximadamente a 0,0101112,

1.9.2 De uma base b para a base 10

Da mesma forma que nos números inteiros, para se passar de uma base b para a base 10, bastar expandir e calcular o polinômio representado pelo número em questão.

Por exemplo, para encontrar o valor na base 10 do número 0,0101112 expande-se o polinômio:

0 2 1 2 0 2 1 2 1 2 1 2

01

21

1

20

1

21

1

21

1

21

1

21

4

1

16

1

32

1

64

16 4 2 1

64

23

640 35 93 75

1 2 3 4 5 6

1 2 3 4 5 6

× + × + × + × + × + × =

× + × + × + × + × + × =

+ + + =+ + +

= ≅

− − − − − −

,

que da um resultado aproximado de 0,35937510. Como você pode notar acima, o numero 0,0101112 é a representação aproximada de 0,3710.

Agora que sabemos o valor exato da representação de 0,0101112 podemos determinar o erro que cometemos ao parar de fazer as multiplicações.

Este erro é de 0,3710 - 0,35937510 = 0,01062510 ou 2,87%. Quanto mais casas decimais colocássemos, menor seria o erro relativo.

1.9.3 De uma base “a” para uma base “b”

Para trocar de uma base “a” para uma base “b” qualquer, o processo é exatamente igual ao

dos números inteiros. Isto é, passa-se da base “a” para a base 10 e, em seguida, da base 10 para a base “b”.

1.10 Mudança de Base de Números Mistos A mudança de base dos números mistos é feita tratando-se a parte inteira e a parte fra-cionária separadamente. Transforma-se uma, depois outra e, finalmente, juntam-se as partes. Por exemplo, para transformar 12,062510 para a base 2, primeiro transformamos a parte in-teira:

Page 13: Capitulo I Sistemas de Numeracao

Arquitetura e Organização de Computadores Página 13

12 ÷ 2 = 6 r = 0 6 ÷ 2 = 3 r = 0 3 ÷ 2 = 1 r = 1 1 ÷ 2 = 0 r = 1 De onde se conclui que a parte inteira 1210 é igual a 11002. Em seguida, transformamos a parte fracionária: 0,0625 × 2 = 0,125 i = 0 0,125 × 2 = 0,25 i = 0 0,25 × 2 = 0,5 i = 0 0,5 × 2 = 1 i = 1 Com isto, vemos que a parte fracionária fica 0,062510 igual a 0,00012. Portanto, o número completo transformado é:

12,062510 = 1100,00012

Exemplos: 1. Converter 101.1012 para base 10. 101.1012 = 1 x 22 + 0 x 21 + 1 x 20 + 1 x 2-1 + 0 x 2-2 + 1 x 2-3 = 5,62510 2. Converter 8,37510 para a base 2. Neste caso, transformamos primeiramente a parte inteira do número: 8 = 1000 Então, a seguir, utilizamos a seguinte seqüência: 0,375 x 2 = 0, 750 o primeiro algarismo após a vírgula é o primeiro dígito do binário 0,750 x 2 = 1,500 o primeiro algarismo após a vírgula é o segundo dígito do binário, sendo 1,

e a parte do número após a vírgula não for nula, separamos o que fica depois da vírgula e reiniciamos

0,500 x 2 = 1,000 neste caso, a parte depois da vírgula é nula, o processo termina, e o binário

fica sendo: 8,37510 = 1000.011

1.11 Operações aritméticas no sistema binário 1.11.1 Adição

A adição binária é realizada como a adição decimal. Se dois números decimais 56719 e 31863, são adicionados, a soma 88582 é obtida. Você pode analisar os detalhes desta operação da seguinte maneira.

Page 14: Capitulo I Sistemas de Numeracao

Arquitetura e Organização de Computadores Página 14

A adição no sistema binário é realizada como numa adição convencional no sistema decimal. 0 + 0 = 0 0 + 1 = 1 1 + 0 = 1 1 + 1 = 10

1 + 1 + 1 = 11 Como no sistema decimal, 1 + 1 = 2, no sistema binário representamos o 2 por 10, o 3 por 11, e assim por diante. Na soma, portanto, usamos o transporte, como fazemos no sistema decimal quando a soma passa de 9.

1.11.2. Subtração O método é análogo ao do sistema decimal.

0 – 0 = 0 1 – 0 = 1 1 – 1 = 0 0 – 1 = 1 e empresta 1 Exemplo: 1000 – 111

1.11.3. Multiplicação

Procede-se como na multiplicação decimal. 0 x 0 = 0 0 x 1 = 0 1 x 0 = 0

-1-1-1

1000 - 111

0001

Por exemplo:

Somando a primeira coluna, números decimais 9 e 3, resulta o dígito 2 com um transporte de 1. O transporte é então somado à próxima coluna. Adicionado à segunda coluna, (1+1+6), resulta o número 8, sem transporte. Este processo continua até que todas a colunas (incluindo os transportes) tenham sido somadas. A soma representa o valor numérico das parcelas.

Page 15: Capitulo I Sistemas de Numeracao

Arquitetura e Organização de Computadores Página 15

1 x 1 = 1 Exemplo: 11010 x 10

1.11.4. Divisão

A divisão binária, por sua vez, utiliza processo análogo ao sistema decimal, como mostra o exemplo:

Seja efetuar a operação: 101100 : 100

1.12 Números negativos no sistema binário I Métodos possíveis:

� Sinal-módulo (bit de sinal); (método mais simples) � Complemento de 2; (método utilizado computacionalmente)

a) Método Sinal-módulo Usualmente, reserva-se um bit (colocado à esquerda do número, na posição do algarismo mais significativo). Se o número for positivo, o bit de sinal será 0, se for negativo, será 1. Exemplos: 3510 = 1000112 ⇒ +3510 = +1000112 ⇒ 01000112 ⇒ -3510 = -1000112 ⇒ 11000112 7310 = 10010012 ⇒ +7310 = +10010012 ⇒ 010010012 ⇒ -7310 = - 10010012 ⇒ 110010012

Page 16: Capitulo I Sistemas de Numeracao

Arquitetura e Organização de Computadores Página 16

Bit de sinal 0: número positivo; 1: número negativo; b) Método do complemento de 2

O método usado para representar números com sinal em microprocessadores é chamado complemento de dois . Números positivos são representados exatamente como eram com o método do sinal e magnitude e o método do complemento de um . Entretanto, números negativos são representados como complemento de dois dos números positivos.

O complemento de dois de um número é formado tomando-se o complemento de um e somado-se um. Por exemplo se você trabalha com números de 8 bits e usa o sistema de complemento de dois, +410 é representado por 000001002. Para achar -410 você deve achar o complemento de dois deste número. Você faz o complemento de um , o que é 111110112 e soma 1. Assim a representação em complemento de dois de -410 é 111111002. Faz uso de dois passos distintos:

a) Obtenção do complemento de 1 (inversor) A obtenção do complemento de 1 dá-se pela troca de cada bit do número pelo seu inverso ou complemento. Exemplo:

100110112 ⇒ 011001002 (*) (*) O número de bits precisa ser fixo (no caso 8)

a) Obtenção do complemento de 2

Page 17: Capitulo I Sistemas de Numeracao

Arquitetura e Organização de Computadores Página 17

c) Complemento de 2 na aritmética binária

Na eletrônica digital de dispositivos tais como computadores, circuitos simples custam menos e operam mais rápido do que circuitos mais complexos. Logo números em complementos de dois são usados na aritmética pois eles permitem os circuitos mais simples, baratos e rápidos.

Os computadores não conseguem realizar as subtrações do mesmo modo que o ser humano, eles apenas somam.

O somador na ALU (Unidade Lógica e Aritmética) sempre soma padrões de bits como se eles fossem números binários sem sinal. É a nossa interpretação destes padrões que decide se números com ou sem sinal estão sendo indicados. Isto nos permite trabalhar como números com e sem sinal sem requerer diferentes circuitos para cada padrão.

A aritmética de complemento de dois também simplifica a ALU em outro ponto. Todo o microprocessador tem uma instrução de subtração. Assim, a ALU deve ser capacitada a subtrair um número de outro. Entretanto, se isto necessitar de um circuito de subtração separado, a complexidade e o custo da ALU seria aumentado. Felizmente, a aritmética de complemento de dois permite a ALU, realizar operações de subtração usando um circuito somador. Ou seja, a CPU usa o mesmo circuito tanto para soma como para subtração.

Assim, para fazermos uma subtração usando complemento de 2:

Caso 1: A > B A: 1011 (decimal 11) 1011 B: 0110 (decimal 6) -> compl.de 2 -> 1010

Caso 2: A < B A: 0110 (decimal 6) 0110 B: 1011 (decimal 11) -> compl. de 2 -> 0101

Page 18: Capitulo I Sistemas de Numeracao

Arquitetura e Organização de Computadores Página 18

2. Código BCD A sigla BCD representa as iniciais de ‘Binary-Coded-Decimal”, que significa uma

codificação do sistema decimal em binário. A formação deste código, já conhecida é:

Decimal BCD 0 0000 1 0001 2 0010 3 0011 4 0100 5 0101 6 0110 7 0111 8 1000 9 1001

10 1010 11 1011 12 1100 13 1101 14 1110 15 1111

LSB Least Significant Bit

MSB Most Significant Bit

Page 19: Capitulo I Sistemas de Numeracao

Arquitetura e Organização de Computadores Página 19

O número de “bits” (binary digit ) de um código é o número de dígitos binários que ele possui. Notamos, então, que o código BCD é um código de 4 bits.

2.1 Representação de Dados

Um programa (a seqüência de instruções) deverá manipular diferentes tipos de dados. Os dados podem ser:

•••• Numéricos •••• Ponto fixo (números inteiros) •••• Ponto flutuante (números reais ou fracionários) •••• BCD (representação decimal codificada em binário) •••• Alfabéticos •••• Letras, números e símbolos (codificados em ASCII e EBCDIC)

O tipo de dado que está sendo fornecido ao programa deverá ser informado pelo programador, através de declarações, fazendo com que o programa interprete o dado fornecido de acordo com a declaração. Por exemplo, na linguagem C, declarações tipo

int num; (inteiro) ou

float sal (real); indicam que a variável num é um número inteiro (int) e a variável sal é um número real (float),

representação científica, isto é, representado na forma [(Sinal) Valor x Base (elevada a Expoente)]. Declarações tipo char letra ; indicam que a variável é um caractere. A forma mais intuitiva de representar números seria através da conversão do número decimal

para seu correspondente em binário. Como os computadores operam sempre em binário, essa seria a forma mais imediata e eficiente.

No entanto, quando queremos representar números muito grandes, essa forma se torna insuficiente. A faixa de números que podem ser representados em ponto fixo é insuficiente para a maioria das aplicações científicas, onde existe a necessidade de representar-se números muito grandes e/ou números muito pequenos. Para contornar este problema, desenvolveu-se a notação científica, onde um quintilhão é representado por 1,0 x 1018, em vez de escrevê-lo por extenso (1 000 000 000 000 000 000). A representação de números em ponto flutuante é basicamente a versão binária da notação científica.

Um número em ponto flutuante, representado em binário, deve fornecer as informações relativas ao significando (seu sinal e sua magnitude) e ao expoente (também seu sinal e sua magnitude). Diversas representações podem ser utilizadas para isto (sinal/magnitude, complemento de dois, etc). Devido a isto, existem diversos formatos adotados para representar os números em ponto flutuante. Muitos deles são específicos para uma determinada família de computadores ou para um determinado fabricante.

Assim, um número em notação científica pode ser representado por um produto de dois fatores: o primeiro fator indica o sinal do múmero mais a sua parte significativa, sua precisão, e a segunda parte indica a grandeza do número, representada por uma potência; é justamente o valor do expoente que marca essa grandeza. Portanto, temos:

N = + M x B+ E

Onde,

Page 20: Capitulo I Sistemas de Numeracao

Arquitetura e Organização de Computadores Página 20

N – número que se deseja representar

+ - sinal do número

M – dígitos significativos do número (significando)

B – base de exponenciação

+ E – valor do expoente, com seu sinal

Dessa forma é possível manipular precisão (número de dígitos significativos do significando) e grandeza (expressa pelo expoente) do número.

2.2 Representação normalizada

Existem diferentes maneiras de escrever o mesmo número. A forma normalizada é aquela que apresenta um único dígito, diferente de zero, antes da vírgula.

Exemplo: 110101 = 1,10101x25 ou, escrevendo-se o próprio 5 também na base dois, 1,10101x2101.

A base 2 está sendo mantido na forma decimal, 2 , e não na binária 10 , porque ela não precisará ser representada, por ser implícita.

Chama-se significando ao número 1,10101 e expoente ao número 101, deste exemplo.

Seguem-se outros exemplos:

• 1110,01 ou 1,11001 x 23 ou 1,11001 x 211 , que corresponde a 14,25, em decimal.

• 0,0011 ou 1,1 x 2-3 ou 1,1 x 2-11 , que corresponde a 0,1875 em decimal.

• 0,1001 ou 1,001 x 2-1 , que corresponde a 0,5625 em decimal.

Pode-se observar que, para se representar um número real, é necessário armazenar o significando e o expoente, sendo dispensável representar o "1,", por estar sempre presente, sendo, também, desnecessário, armazenar o dois, base do sistema.

2.3 Conversão para Ponto Flutuante

Para um dado sistema, a representação em Ponto Flutuante é especificada a partir da identificação dos seguintes elementos:

1. Quantidade de palavras de dados (total de bits/bytes da representação). 2. Modo de representação do significando (normalizado, etc.,). 3. Modo de representação do expoente. 4. Quantidade de bits definida para o significando e para o expoente. 5. A posição, no formato, do sinal do número, do significando e do expoente. 6. O valor da base de exponenciação

Como exemplo, considere o formato a seguir:

Page 21: Capitulo I Sistemas de Numeracao

Arquitetura e Organização de Computadores Página 21

Considerando o formato acima, como seria a representação interna de 407,37510?

1. Conversão direta para a base:

• N = 407,37510 = 110010111,0112 = 110010111,011 x 20.

2. Significando normalizado:

• N = 1,10010111011 x 28.

3. Determinação dos valores:

• S= 0 (número positivo).

• E= 0001000.

• M= 10010111011000000000000, pois não há necessidade de representar o 1 antes da vírgula, que na forma normalizada sempre estará presente.

3. Representação interna: 0 0001000 100101110110000000000000

Faixa de Representação

Page 22: Capitulo I Sistemas de Numeracao

Arquitetura e Organização de Computadores Página 22

Como vimos anteriormente, a representação em ponto flutuante tem limites de alcance e de precisão. O alcance é limitado pelo número de bits do expoente. A precisão é determinada pelo número de bits do significando.

Ocorre overflow quando o valor absoluto do dado a ser representado excede a capacidade de representação, porque o número de bits do expoente (neste caso, positivo) é insuficiente para representar o dado.

Um outro problema ocorre na região de números próximos de zero, que tem o maior expoente negativo possível. Ocorre underflow quando o valor absoluto do dado a ser representado é tão pequeno que fica menor que o menor valor absoluto representável. Nesse caso, o expoente é negativo mas não representa os números muito próximos de zero e ocorre uma descontinuidade na representação, com os números próximos a zero não sendo representados.

Underflow não é o mesmo que imprecisão. Dados na faixa de underflow não podem ser representados, ocorrendo estouro no expoente. No caso de imprecisão, a normalização permite que o dado seja representado, porém com perda de precisão.

Observe que temos sete regiões distintas, conforme o quadro:

Exemplo:

E= 2 dígitos, B= 10, M= 3 dígitos.

• mNN= -0,999 x 1099.

• MNN= -0,100 x 10-99.

• mNP= 0,100 x 10-99.

• MNP= 0,999 x 1099.

2.4 CARACTERÍSTICA

Característica (também chamada de REPRESENTAÇÃO POLARIZADA) é o expoente, representado na forma de excesso de n ( ou Polarização) , ou seja, CARACTERÍSTICA = EXPOENTE + EXCESSO

Page 23: Capitulo I Sistemas de Numeracao

Arquitetura e Organização de Computadores Página 23

Para se definir a maneira como o computador armazenará o número real em ponto flutuante, é preciso definir o número de bits que ele usará para representar o significando e o número de bits para o expoente.

Suponha-se que um determinado computador reserve 1 byte, isto é, 8 bits, para representar os números reais. Admita-se que usa o primeiro bit para sinal do número, três bits seguintes para o expoente e os últimos quatro bits para o restante do significando.

bit 0 bit 1 bit 2 bit 3 bit 4 bit 5 bit 6 bit 7

O bit 0 indica o sinal do número: 0 positivo , 1 negativo .

Os bits 1, 2 e 3 constituem o expoente e precisam representar tanto expoentes positivos quanto expoentes negativos. Com esses três bits, há 8 possibilidades: 000, 001, 010, 011, 100, 101, 110, 111, que representariam números de 0 até 7. Isso não serviria pois precisamos de expoentes negativos, além dos positivos.

Deram-se aos expoentes 000 e 111 significados especiais, a serem tratados daqui a pouco.

Como devemos representar expoentes tanto negativos, para os números menores que zero, quanto positivos, para números maiores que zero, vamos assumir que o número 3, isto é, 011 represente o expoente zero. Os anteriores representarão os expoentes negativos e os posteriores os expoentes positivos. Dessa maneira, o número que representa o expoente será o número em binário menos três, conforme tabela a seguir.

Bits 001 010 011 100 101 110

valor 1 2 3 4 5 6

expoente -2 -1 0 1 2 3

É importante observar que num número diferente de zero, normalizado na base 2, o significando sempre começará por 1. Assim sendo, não há necessidade de se representar o (1. ) pois isso ficaria implícito, bastando representar os dígitos que aparecem depois da vírgula. Sendo m o número de bits representados do significando, o número representado terá, sempre, m+1 dígitos.

Observem-se os exemplos a seguir:

3,5 .… 11,1 … 1,11 x 21 … 1,1100 x 21 … 01001100

2,75 …. 10,11 … 1,0110 x 21 … 01000110

7,5 .… 111,1 … 1,1110 x 22 … 1,1110 x 210 … 01011110

-7,25 .… -111,01 … -1,1101 x 22 … -1,1101 x 210 … 11011101

-0,375.… -0, 011 … -1,1000 x 2-2 … -1,1000 x 2-10 … 10011000

Page 24: Capitulo I Sistemas de Numeracao

Arquitetura e Organização de Computadores Página 24

Como se pode ver, o maior número positivo que pode nele ser representado é:

0 1 1 0 1 1 1 1

que corresponde a 1,1111 x 23 , isto é: 1111,1, ou 15,5.

O menor número positivo seria:

0 0 0 1 0 0 0 0

que corresponde a 1,0000 x 2-2 , isto é: 0,25.

Lembremo-nos que os expoentes 000 e 111, não foram considerados, até agora; eles tem tratamento especial.

Usa-se o expoente 000 , quando se quer indicar que o número não está normalizado, ficando o 000 como o menor expoente, isto é, -2 , no nosso exemplo. O significando passa a ser 0, _ _ _ …. Onde, depois da vírgula, estão os dígitos do significando, só que, agora, sem a precedência do (1, ) , como era antes, e sim (0, ). Neste caso, não teremos, mais, m+1 dígitos significativos, como tínhamos quando os números eram normalizados.

O expoente 111 é reservado para representar mais infinito, com zero na frente (01110000) e menos infinito com 1 na frente (11110000), em ambos os casos o significando sendo 0000.

O mesmo expoente 111 é ainda utilizado para caracterizar indeterminação, 11111000.

As demais combinações com o expoente 111 não são válidas, sendo consideradas (not a number).A representação substituindo expoente por característica acarreta que todas as características serão positivas, de forma que é possível eliminar a representação do sinal do expoente.

Se CARACTERÍSTICA = EXPOENTE + EXCESSO,

sendo M o número de bits para a representação da característica, temos:

Page 25: Capitulo I Sistemas de Numeracao

Arquitetura e Organização de Computadores Página 25

0 = - 2M-1 + EXCESSO logo: EXCESSO = + 2M-1

Ex: Para 8 bits, temos, EXCESSO = 2M-1 = 2 8-1 = 2 7 = 128

EXEMPLO DE REPRESENTAÇÃO EM PONTO FLUTUANTE Representação com base 2 (PDP 11- o primeiro computador/processador de 16 bits da DIGITAL EQUIPAMENT CORPORATION. O PDP-11 inaugurou o conceito de compatibilidade, que poupava tempo e dinheiro ao usuário. Permitia transportar aplicações de máquinas de menor porte para maior porte, e vice-versa; eliminava a necessidade de reescrever software e reduzia os investimentos em periféricos.)

Os microcomputadores podem representar os dados em ponto flutuante com base implícita = 2, no seguinte formato:

sendo SN = sinal do dado CARACTERÍSTICA = o expoente, representado na forma de excesso de n, ou seja, CARACTERÍSTICA = EXPOENTE + EXCESSO No caso, o excesso é de 12810, portanto: CARACTERÍSTICA = EXPOENTE + 12810

Exemplificando: expoente = - 28 logo característica = - 2810 + 12810 = 10010

Assim, uma característica entre 0 e 12710 significa que o expoente é negativo, enquanto uma característica entre 129 e 255 significa que o expoente é positivo (característica igual a 1280 significa expoente igual a 0).

Exemplo: Representar 25,510 Como a base implícita é 2, vamos converter para binário: 2510 = 110012 Parte fracionária: 0.5 x 2 = 1,0 Logo: 25,510 = 11001,12 x 20 Normalizando: 11001,12 x 20 = 1,100112 x 24.

Como o primeiro dígito do significando será sempre 1, no caso da base 2, economiza-se um bit no significando não armazenando o primeiro bit do significando , já que está implícito que todos os números terão significando iniciando com 1.

Em binário com 23 bits, o significando normalizada será (lembrando que o primeiro bit 1 não é representado): 100.1100.0000.0000.0000.0000 Obs.: Como o número 1,100112 será representado em 23 bits, os bits não representativos (à direita) serão preenchidos com zeros. Como o expoente é 4, a característica será: 410 + 12810 = 13210. Em binário com 8 bits, será: 1000 0100

Page 26: Capitulo I Sistemas de Numeracao

Arquitetura e Organização de Computadores Página 26

Portanto, a representação será:

2.5 O Padrão IEEE – 754

O Instituto de Engenharia Elétrica e Eletrônica ou IEEE é uma organização profissional e não-lucrativa, fundada nos Estados Unidos. É a maior (em número de sócios) organização profissional do mundo. A IEEE foi formada em 1963 pela fusão do Instituto de Engenheiros de Rádio (IRA) com o Instituto Americano de Engenheiros Elétricos (AIEE). O IEEE tem filiais em muitas partes do mundo, sendo seus sócios engenheiros elétricos, cientistas da computação, profissionais de telecomunicações, etc. Sua meta é promover conhecimento no campo da engenharia elétrica e eletrônica. Um de seus papéis mais importantes é o estabelecimento de padrões para formatos de computadores e dispositivos.

A norma IEEE 754, publicada em 1985, procurou uniformizar a maneira como as diferentes máquinas representam os números em ponto flutuante, bem como devem operá-los.

Essa norma define três formatos básicos para os números em ponto flutuante: o formato simples, com 32 bits, o duplo com 64 bits e o quádruplo com 128 bits (ainda existem o simples estendido e o duplo estendido). O primeiro bit é para o sinal: 0 representa número positivo e 1 representa número negativo. No formato simples o expoente tem 8 bits e o significando tem 23 bits; no formato duplo, o expoente tem 11 bits e o significando 52 bits e no formato quádruplo, o expoente tem 15 bits e o significando 111 bits, sendo o primeiro bit 1 normalizado representado neste formato.

No formato simples, o menor expoente é representado por 00000001, valendo -126, e o maior expoente é representado por 11111110, valendo +127. Em ambos os casos, o expoente vale o número representado em binário menos 127.

No formato duplo, o menor expoente é representado por 00000000001, valendo -1022, e o maior expoente é representado por 11111111110, valendo +1023. Em ambos os casos, o expoente vale o número representado em binário menos 1023.

Além dos formatos básicos, a norma ainda define o formato estendido, com 80 bits e o formato quádruplo, com 128 bits.

• Um significando normalizado começa com um ponto binário, seguido por um bit 1 e depois pelo resto do significando.

• padrão IEEE 754 consiste no primeiro 1 do significando oculto, um ponto oculto e

depois os bits da fração. Isto é denominado "significando". • Todos os números normalizados tem um significando S, no intervalo:

Page 27: Capitulo I Sistemas de Numeracao

Arquitetura e Organização de Computadores Página 27

1 ≤ S ≤ 2

Não é permitido ao número normalizado ter um expoente só de zeros, ou de só de uns.

FORMATOS Simples Duplo Largura do formato 32 64 Significando 23 52 Expoente Emáx +127 +1023 Emín -126 -1022 Característica +127 +1023 Largura 8 11

Exemplo : Mostrar a representação do valor -0,7510 no formato de ponto flutuante padrão IEEE 754 para precisão simples. O valor -0,7510 também pode ser representado como 1,12x2-1

Usando a forma geral de representação de números em ponto flutuante usando o padrão IEEE 754, em precisão simples:

1 01111110 10000000000000000000000

Page 28: Capitulo I Sistemas de Numeracao

Arquitetura e Organização de Computadores Página 28

Nesta notação, cinco grupos diferentes de números podem ser representados:

números normalizados, zero, números não-normalizados, infinito e não-números (NaN): 1. Os números normalizados utilizam um expoente que vai de 1 a 254 (ou 1 a 2046,

ou 1 a 32766), o primeiro bit do significando (L) é sempre um e por isto não é representado.

2. O Zero é representado por um número todo em zero (E=F=L=0); note-se que o zero neste caso pode ter sinal.

3. Números não normalizados possuem o expoente em zero (E=0) e uma fração não zero. Seu uso é restrito para representação do números que não podem ser normalizados sem causar “underflow”.

4. O Infinito é representado pelo maior valor do expoente (E=255 ou 2047 ou 32767) e por uma fração em zero (F=L=0). Note-se que o infinito pode ter sinal.

5. Não-números (Not a Number) são representados pelo maior expoente e por uma fração diferente de zero. Seu uso previsto inclui a indicação de códigos de erro, situações imprevistas, etc.

O bit de sinal (S) é representado no bit mais significativo; os bits seguintes representam o expoente. Os bits menos significativos são destinados ao significando. Note-se que o bit L não é representado (exceto na notação quádrupla).

Page 29: Capitulo I Sistemas de Numeracao

Arquitetura e Organização de Computadores Página 29

2.6 Código ASCII (6)

O uso mais importante do byte (grupo de 8 bits 0 ou 1) é, provavelmente, para representar um código de caracter. Todos os caracteres digitados no teclado, mostrados na tela ou impressos numa impressora, possuem um valor numérico. Para padronizar estes valores, criou-se o conjunto de caracteres ASCII.

O conjunto ASCII básico possui 128 códigos. Os 128 restantes são utilizados com valores para caracteres adicionais como caracteres europeus, símbolos gráficos, letras gregas e símbolos matemáticos. Antes de maio de 1961 a maioria dos sistemas de computadores tinha uma maneira particular de representar os caracteres alfanuméricos. Assim, foi proposto o uso de um código comum, a fim de possibilitar a comunicação entre os computadores, objetivando permitir a troca de dados entre máquinas de diferentes tipos e fabricantes.

O "American National Standards Institute" aceitou a proposta de Robert W. Bemer e sua equipe para desenvolver o "American Standard Code for Information Interchange" (Código Padrão Norte-americano para Intercâmbio de Informações), hoje conhecido como código ASCII.

Assim, ASCII é um código numérico usado para representar os caracteres, entendido por quase todos os computadores, impressoras e programas de edição de texto, que usa a escala do decimal 0 a 127.

É baseado no alfabeto romano, como é usado no idioma inglês moderno, e visa padronizar a forma pela qual os computadores representam letras, números, acentos e sinais diversos ( por exemplo: <, {, ] ) e alguns códigos de controle ( <Crtl> ) que são utilizados para converter todos os símbolos em números binários, os quais efetivamente podem ser processados.

O código permite não só uma melhor compreensão sobre a lógica do funcionamento do computador mas, também, possibilita a utilização de caracteres, cujos símbolos não aparecem no teclado.

É importante notar que há apenas 95 caracteres que podem ser impressos. E eles são numerados de 32 a 126 pois os primeiros códigos (de 0 a a 31) foram reservados para caracteres de controle, ou seja, que controlam funções ou equipamentos. Esses caracteres de controle tiveram sua origem nos primórdios da computação, quando eram utilizadas máquinas Teletype (como máquinas de escrever eletro-mecânicas), fitas de papel perfurado e impressoras de cilindro, portanto muitos deles são dirigidos a estes equipamentos. Por exemplo:

- o caráter 10 representa a função "LINE FEED", que faz com que uma impressora avance seu papel;

- o caráter 27 representa a função "escape" determinada pela tecla <ESC>, encontrada no canto superior esquerdo nos teclados.

Page 30: Capitulo I Sistemas de Numeracao

Arquitetura e Organização de Computadores Página 30

Tabela ASCII

Binário D H G Binário D H G Binário D H G

0010 0000 32 20 vazio 0100 0000 64 40 @ 0110 0000 96 60 `

0010 0001 33 21 ! 0100 0001 65 41 A 0110 0001 97 61 a

0010 0010 34 22 " 0100 0010 66 42 B 0110 0010 98 62 b

0010 0011 35 23 # 0100 0011 67 43 C 0110 0011 99 63 c

0010 0100 36 24 $ 0100 0100 68 44 D 0110 0100 100 64 d

0010 0101 37 25 % 0100 0101 69 45 E 0110 0101 101 65 e

0010 0110 38 26 & 0100 0110 70 46 F 0110 0110 102 66 f

0010 0111 39 27 ' 0100 0111 71 47 G 0110 0111 103 67 g

0010 1000 40 28 ( 0100 1000 72 48 H 0110 1000 104 68 h

0010 1001 41 29 ) 0100 1001 73 49 I 0110 1001 105 69 i

0010 1010 42 2A * 0100 1010 74 4A J 0110 1010 106 6A j

0010 1011 43 2B + 0100 1011 75 4B K 0110 1011 107 6B k

0010 1100 44 2C , 0100 1100 76 4C L 0110 1100 108 6C l

0010 1101 45 2D - 0100 1101 77 4D M 0110 1101 109 6D m

0010 1110 46 2E . 0100 1110 78 4E N 0110 1110 110 6E n

0010 1111 47 2F / 0100 1111 79 4F O 0110 1111 111 6F o

0011 0000 48 30 0 0101 0000 80 50 P 0111 0000 112 70 p

0011 0001 49 31 1 0101 0001 81 51 Q 0111 0001 113 71 q

0011 0010 50 32 2 0101 0010 82 52 R 0111 0010 114 72 r

0011 0011 51 33 3 0101 0011 83 53 S 0111 0011 115 73 s

0011 0100 52 34 4 0101 0100 84 54 T 0111 0100 116 74 t

Page 31: Capitulo I Sistemas de Numeracao

Arquitetura e Organização de Computadores Página 31

0011 0101 53 35 5 0101 0101 85 55 U 0111 0101 117 75 u

0011 0110 54 36 6 0101 0110 86 56 V 0111 0110 118 76 v

0011 0111 55 37 7 0101 0111 87 57 W 0111 0111 119 77 w

0011 1000 56 38 8 0101 1000 88 58 X 0111 1000 120 78 x

0011 1001 57 39 9 0101 1001 89 59 Y 0111 1001 121 79 y

0011 1010 58 3A : 0101 1010 90 5A Z 0111 1010 122 7A z

0011 1011 59 3B ; 0101 1011 91 5B [ 0111 1011 123 7B {

0011 1100 60 3C < 0101 1100 92 5C \ 0111 1100 124 7C |

0011 1101 61 3D = 0101 1101 93 5D ] 0111 1101 125 7D }

0011 1110 62 3E > 0101 1110 94 5E ^ 0111 1110 126 7E ~

0011 1111 63 3F ? 0101 1111 95 5F _

Referências Bibliográficas: (1) Acessado em: http://www.users.rdc.puc-rio.br/rmano/comp1inf.html (2) Acessado em: http://www.inf.puc-rio.br/~francis/Organizacao.htm (3) Acessado em: http://icea.gov.br/ead/anexo/index.htm (4) Gonick, L. Introdução Ilustrada à Computação . Editora Harper & Row do Brasil, 1984. (5) Monteiro, M. Introdução à Organização de Computadores . Editora LTC, 2ª Edição. (6) Acessado em: http://www.ufpa.br/dicas/progra/arq-asc.htm