• Nenhum resultado encontrado

Universidade Federal de Santa Catarina Depto de Informática e de Estatística. Curso de Graduação em Sistemas de Informação. Prof.

N/A
N/A
Protected

Academic year: 2021

Share "Universidade Federal de Santa Catarina Depto de Informática e de Estatística. Curso de Graduação em Sistemas de Informação. Prof."

Copied!
94
0
0

Texto

(1)

Depto de Informática e de Estatística

Curso de Graduação em Sistemas de Informação

Prof. Roberto Willrich

(2)
(3)

Conceitos Básicos de Informática

1.1 Índice Geral

1.1 Índice Geral ... 1 1.2Introdução ... 3 1.3Computador ... 3 1.3.1Modelo de Von Neumann

... 4 1.4Evolução histórica das arquiteturas de computador

... 4 1.4.1Precursores

... 4 1.4.2Geração zero (século XVII)

... 5 1.4.3As máquinas de primeira geração (1930-1958)

... 9 1.4.4Computadores de segunda geração (1955-1965)

... 11 1.4.5Computadores de terceira geração (1965-1980)

... 12 1.4.6Computadores de quarta geração (1980 - ...)

... 13 2.1 Sistemas Numéricos ... 1 2.1.1Sistema Binário ... 1 2.1.2 Sistema Octal ... 2 2.1.3 Sistema Hexadecimal ... 2 2.2 Operações Aritméticas ... 3 2.2.1 Aritmética Binária ... 3 2.2.2 Aritmética Hexadecimal ... 6 2.3Operações Lógicas ... 9 2.3.1 Operações lógicas com bits

... 9 2.3.2 Operações Lógicas com números

... 10 2.4 Tipos de Dados Tratados pelo Computador

... 10 2.5 Representação Interna de Caracteres

... 11 2.5.1 Código de 6 bits

... 11 2.5.2 Códigos de 7 bits (ASCII)

... 11 2.5.3 EBCDIC ... 13 2.5.4 ASCII Estendido ... 13 2.5.5IS O Latin-1 ... 14 2.5.6 Caracteres ANSI ... 14 2.5.7 Caracteres Unicode ... 15 2.6 Representação Interna de Números

... 15 2.6.1 Representação de Números Inteiros

... 15 2.6.2 Vírgula fixa (Fixed Point)

... 16 2.6.3 Ponto Flutuante

... 17 2.7Representação Digital de Áudio, Imagem e Vídeo

... 21 2.7.1 Sinais Analógicos para representar informações

... 21 2.7.2 Porque Digitalizar?

... 22 2.7.3 Digitalização, Amostragem e Quantificação

... 23 2.7.4 Áudio

... 25 2.7.5 Vídeos e Imagens Analógicos

... 26 2.7.6 Representação digital de imagens e vídeos

... 27 2.7.7 Especificação da Cor ... 28 2.7.8 Sistema RGB ... 29 3.1 Introdução ... 1 3.2 Componentes básicos de um computador

... 1 3.3 Processador

... 2 3.3.1 Unidade Lógica e Aritmética

... 3 3.3.2 Unidade de Controle (UC)

... 5 3.3.3 Registradores

... 5 3.3.4 Clock

(4)

3.4 Processadores CISC e RISC ... 6 3.5 Memória ... 6 3.5.1 Memória Principal ... 7 3.5.2 Tecnologias de memória RAM

... 9 3.5.3 Memória Secundária ... 13 3.5.4 Memória Cache ... 17 3.6 Barramentos ... 19 3.6.1 Barramento do processador ... 19 3.6.2 Barramento de Cache ... 20 3.6.3 Barramento da Memória ... 20 3.6.4 Barramento de E/S ... 21 3.6.5 Barramento ISA ... 21 3.6.6 Barramento MCA ... 22 3.6.7 Barramento EISA ... 22 3.6.8 Local bus ... 22 3.6.9 VESA Local Bus

... 24 3.6.10 Barramento PCI

... 24 3.6.11 Barramento PC-Card (PCMCIA)

... 25 3.6.12 USB ... 26 3.6.13 Firewire (IEEE 1394) ... 26 3.7 Dispositivos de Entrada/Saída ... 26 4.1 Programação de Computadores ... 1 4.1 Níveis de Linguagens de Programação

... 1 4.1.1 Linguagem de Máquina ... 1 4.1.2 Linguagem Hexadecimal ... 2 4.1.3 Linguagem Assembly ... 2 4.1.4 Linguagem de Alto Nível

... 4 4.1.5 Linguagens estruturadas ... 5 4.2 Execução de Programas ... 5 4.3 Desenvolvimento de Programas ... 7 4.3.1Geração do código fonte (codificação)

... 7 4.3.2Tradução do Código Fonte (código objeto)

... 7 4.3.3 Editores de ligação ... 11 4.3.4 Depuradores ou debuggers ... 12 4.4 Paradigmas de programação ... 12 4.4.1 Programação não-estruturada ... 12 4.4.2 Programação Procedural ... 12 4.4.3 Programação Modular ... 13 4.4.4 Programação Orientada a Objetos

... 13 4.4.5 Linguagens de programação e seus paradigmas

... 13 4.5 Linguagens Interpretadas

... 13 4.5.1 Compilador Versus Interpretador

... 14 4.5.2 Máquina Virtual

... 14 4.5.3 Java

(5)

1.2Introdução

A Informática engloba toda atividade relacionada ao desenvolvimento e uso dos computadores que permitam aprimorar e automatizar tarefas em qualquer área de atuação da sociedade. Podemos definir a informática como a “ciência do tratamento automático das informações”. Muito mais que visar simplesmente a programação de computadores para executar tarefas específicas, a informática estuda a estrutura e o tratamento das informações sob suas mais variadas formas: números, textos, gráficos, imagens, sons, etc.

O computador em si intervém apenas como um instrumento para agilizar o tratamento da informação, e não como seu objetivo final. A informática busca criar uma abstração da realidade dentro de um sistema de computação, com o objetivo de reproduzila mais fielmente possível e assim poder substituila, ou melhorar sua compreensão.

O profissional de Informática vai atuar basicamente no desenvolvimento do que se pode chamar de um Sistema Computacional, o qual abrangem a combinação de hardware (circuitos), software (programas) e outros elementos essenciais.

A crescente evolução na área de Informática, particularmente no que diz respeito ao desenvolvimento de equipamentos de informática (processadores cada vez mais velozes, o surgimento de novas tecnologias de armazenamento de dados e novos periféricos), aliada às constantes quedas nos preços do hardware, possibilitou um avanço das atividades relacionadas à informática na quase totalidade das atividades humanas, iniciando pelas Engenharias e atingindo as mais diversas áreas como a Medicina, as Artes, o Entretenimento, a Economia, etc...

Como conseqüência disto, é real a necessidade de que em cada área, os profissionais desenvolvam um conhecimento da tecnologia de Informática que seja útil na solução dos problemas relacionados com o seu eixo profissional.

Neste capítulo inicial, serão apresentados os conceitos básicos da Informática, partindo dos principais conceitos relacionados às arquiteturas de computadores até introduzir os primeiros aspectos relativos à programação e das linguagens utilizadas na programação de computadores.

1.3Computador

O computador é uma máquina capaz de receber, armazenar, tratar e produzir informações de forma automática, com grande rapidez e precisão. A evolução dos sistemas de computação teve seu início no século 16, mas estes somente mostraramse úteis neste século, e sua vulgarização se deu graças à recente evolução na micro-eletrônica.

Tipos de Computadores Digitais

Atualmente, as famílias de computadores podem ser classificadas em 5 grupos distintos: os computadores pessoais (PCs), os minicomputadores, os superminicomputadores, os computadores de grande porte (mainframes) e os supercomputadores. A tabela a seguir dá um exemplo das máquinas comerciais que se enquadram nestes grupos e as suas aplicações típicas.

GRUPO MÁQUINA APLICAÇÃO

Computador pessoal IBM Pentium Tratamento de texto, aplicações científicas, etc

Minicomputador PDP-11/84 Tempo real

Supermini Sun SPARC Pesquisa, servidor de arquivos Mainframes IBM 3090/300 Banco, Universidade

(6)

1.3.1Modelo de Von Neumann

A grande maioria dos computadores existentes atualmente segue um modelo proposto pelo matemático americano Von Neumann, por volta de 1940. Nesse modelo, um elemento processador segue as instruções armazenadas em uma memória de programas, para ler canais de entrada, enviar comandos sobre canais de saída e alterar as informações contidas em uma memória de dados. A 1.3.1 indica a estrutura desse modelo. Entradas P Prroocceessssaaddoorr Memória de Programas Memória de Dados Saídas

Φιγυρα 1.Modelo de Von Neuman

Esse modelo inicial evoluiu para uma estrutura em barramento (1.3.1), que é a base dos computadores modernos. Nessa estrutura, as memórias de dados e de programa são fundidas em uma memória única, e as comunicações entre elementos são efetuadas através de uma via comum de alta velocidade:

Memória PPrroocceessssaaddoorr Periféricos

Barramento

Φιγυρα 2.Estrutura em Barramento

1.4Evolução histórica das arquiteturas de computador

A história dos computadores começou no momento em que o homem sentiu a necessidade de efetuar cálculos complexos de maneira automática.

1.4.1Precursores

O primeiro elemento com que o homem contou para fazer seus cálculos foi o conjunto de dedos de suas mãos, daí veio a palavra digital, vindo de dígito, que significa dedo. Com a evolução da humanidade fez-se necessário novas invenções para auxiliar os cálculos:

Ábaco (aprox. 3500 a.C.).

A palavra CÁLCULO tem sua origem no termo latino CALCULUS. Que a milhares de anos servia para denominar pequenas pedras que eram usadas para contar deslizando-se por sulcos cavados no chão. Essa espécie de Ábaco foi descoberta em recentes escavações arqueológicas.

A partir desse elemento de cálculo, outros similares apareceram em diversos lugares do mundo, sendo chamados de ábaco. O mais antigo data de aproximadamente 3500 a.C., no Vale entre os rios Tigre e Eufrates. Por volta do ano 2600a.C. apareceu o ábaco

(7)

chinês que evoluiu rapidamente e foi chamado em sua forma final de Suan-Pan, de modo semelhante apareceu no Japão, o Soroban.

O ábaco constituiu portanto o primeiro dispositivo manual de cálculo; servia para representar números no sistema decimal e realizar operações com eles. A 1.4.1 apresenta um ábaco, que consiste numa moldura dividida em 2 partes; possui uma vareta vertical para cada dígito, sendo que cada vareta tem em sua parte inferior 5 anéis que em repouso ficam para baixo, e na parte superior 2 anéis que em repouso ficam para cima. Cada unidade acrescentada a um dos dígitos do número é representada pelo movimento para cima de um dos anéis da parte inferior da vareta. Quando os 5 estão na parte de cima devem ser movidos para baixo. O mesmo deve ser feito com os mesmo anéis na parte superior da mesma vareta, se os dois anéis da parte superior estão para baixo, devem ser movidos para cima acrescentando-se uma unidade a vareta seguinte, à esquerda dessa vareta. O maior número que pode ser cálculado depende do número de varetas.

EMBED Word.Picture.8

Φιγυρα 3.Ábaco

Bastões de Napier (1610 - 1614)

Passaram-se séculos sem que qualquer invenção ficasse registrada até que fossem criados tais bastões. Eram tabelas móveis de multiplicação e divisão feitas de marfim. O responsável foi um nobre escocês chamado John Napier, inventor também dos logaritmos. Apesar de dispositivos semelhantes aos bastões terem sido usados desde o final do século XVI, eles só apareceram documentados a partir de 1614. Um conjunto completo de bastões de Napier consiste em 9 peças: uma para cada dígito de 1 a 9. Cada uma destas hastes é essencialmente uma coluna de uma tabela de multiplicação. Para obter o produto, os dígitos de cada diagonal são somados da direita para a esquerda.

Réguas de Cálculo (1621)

As tabelas de Napier influenciaram diretamente a invenção da régua de cálculo, concretizada pelo matemático inglês William Oughtred com uma forma circular considerada como um dos primeiros dispositivos analógicos de computação. A Régua de Cálculo e as calculadoras mecânicas foram largamente utilizadas até 1970, quando surgiram as calculadoras eletrônicas.

1.4.2Geração zero (século XVII)

Os primeiros computadores, ou de geração zero, apareceram no século XVII e eram compostos exclusivamente por elementos mecânicos. Além disso, caracterizavam-se por uma grande rigidez no que diz respeito aos programas a executar, a grande parte delas sendo o que se chama hoje de máquinas dedicadas.

Calculadora de Pascal (1642)

Dos trabalhos conhecidos deste período, destaca-se o trabalho de Blaise Pascal, que em 1642 desenvolveu uma máquina de calcular totalmente mecânica. A máquina, também chamada de Pascaline (1.4.2), era baseada na existência de um disco para cada potência de 10, cada disco sendo dotado de 10 dígitos (de 0 a 9). Embora fosse capaz de realizar apenas adições e subtrações, outras operações, como multiplicações e divisões podiam ser realizadas através da combinação das primeiras.

Pascal esperava comercializar sua máquina, mas foi um fracasso comercial, apesar de ser uma importante invenção.

(8)

Φιγυρα 4.Pascaline

Calculadora de Leibnitz (1671)

Em 1671, o filósofo e matemático alemão de Leipzig, Gottfried Wilhelm von Leibnitz (21/06/1646 - 14/11/1716) introduziu o conceito de realizar multiplicações e divisões através de adições e subtrações sucessivas. Em 1694, a máquina foi construída e apresentava uma certa evolução em relação à Calculadora de Pascal. Através de somas repetidas era capaz de efetuar multiplicações, também era capaz de realizar divisões, assim sendo capaz de executar as quatro operações básicas da matemática. Sua operação apresentou-se muito deficiente e sujeita a erros, tendo sido, portanto, abandonada.

Φιγυρα 5.Máquina de Leipzig

Placa Perfurada (1801)

Joseph Marie Jacquard introduziu o conceito de armazenamento de informações em placas perfuradas, que não eram usadas especificamente em processamento de dados, mas para controlar uma máquina de tecelagem. Esse processo despertou, já nessa época, temor pelo desemprego, provocando uma grande reação popular contra essa espécie de pré-automação.

Arithmometer (1820)

Em 1820, Charles Xavier Thomas (1785-1870, conhecido como Thomas de Colmar, Paris - FR) projetou e construiu uma máquina capaz de efetuar as 4 operações aritméticas básicas: a Arithmometer. Esta foi a primeira calculadora realmente comercializada com sucesso: até 1850 vendeu-se cerca de 1500 Arithmometers. Ela fazia multiplicações com o mesmo princípio da calculadora de Leibnitz e com a assistência do usuário efetuava as divisões.

(9)

Máquina Diferencial de Babbage (1823)

Entre 1802 e 1822, Charles Babbage (1792-1871), um matemático e engenheiro britânico, construiu uma máquina - a máquina de diferenças — que baseava-se também no princípio de discos giratórios e era operada por uma simples manivela. Babbage é considerado o precursor dos modernos computadores eletrônicos

digitais.

Esta máquina de diferenças surgiu devido a preocupação de Babbage com os erros contidos nas tabelas matemáticas de sua época. Esta máquina permite calcular tabelas de funções (logaritmos, funções trigonométricas, etc.) sem a intervenção de um operador humano. Ao operador cabia somente iniciar a cadeia de operações, e a seguir a máquina tomava seu curso de cálculos, preparando totalmente a tabela prevista. Em 1823, o governo britânico financiou a construção de uma nova versão mas não obteve resultado satisfatório, devido os limites do ferramental industrial da época. Babbage se viu obrigado a desenhar peças e

ferramentas, retardando o desenvolvimento do projeto. Após 10 anos de trabalho, tudo que Babbage havia conseguido era uma pequena máquina de 3 registros e 6 caracteres, sendo que deveria ser, de acordo com o projeto, uma máquina de 7 registros e 20 caracteres cada, além de apresentar seus resultados impressos!

Φιγυρα 7.Máquina de Diferenças

Máquina Analítica

Em 1833, Babbage projetou uma máquina bastante aperfeiçoada (com o auxílio de Ada Lovelace), que chamou de Máquina Analítica. Ada é uma das poucas mulheres a figurar na história do computador. Matemática talentosa, compreendeu o funcionamento da Máquina Analítica e escreveu os melhores relatos sobre o processo. Ela criou programas para a máquina, tornando-se a primeira programadora de computador do mundo.

A Máquina Analítica poderia ser programada para calcular várias funções diferentes, era constituída de unidade de controle de memória aritmética e de entrada e saída. Sua

operação era governada por conjunto de cartões perfurados, de modo que, de acordo com os resultados dos cálculos intermediários, a máquina poderia saltar os cartões, modificando dessa forma o curso dos cálculos.

(10)

Φιγυρα 8.Máquina Analítica

Babbage investiu toda sua fortuna pessoal e de seu filho, que com ele trabalhou durante anos, na construção de sua máquina Analítica, vindo a falecer em 1871, sem findar a construção.

Máquina de Hollerith (1886)

Aproximadamente em 1885, Herman Hellerith, funcionário do Departamento de Recenseamento dos E.U.A., percebeu que a realização do censo anual demorava cerca de 10 anos para ser concluído e que a maioria das perguntas tinha como resposta sim ou não. Em 1886 idealizou um cartão perfurado que guardaria as informações coletadas no censo e uma máquina capaz de tabular essas informações. Construiu então a Máquina de Recenseamento ou Máquina Tabuladora, perfurando-se cerca de 56 milhões de cartões.

A máquina Tabuladora era composta das seguintes unidades (1.4.2):

 Unidade de controle, que dirigiria a seqüência das operações de toda a máquina através de furos em cartões perfurados.

 Entrada de dados, que utilizava também cartões perfurados.

 Saída, que perfuraria os resultados em cartões para uso posterior como entrada, aumentando assim a memória interna com armazenamento externo, indefinidamente grande.

 Saída impressa utilizada na apresentação dos resultados finais, tais como tabelas matemáticas, a qual de uma linotipo automática acoplada ao sistema.

Φιγυρα 9.Máquina Tabuladora

Foi Herman Hollerith, que concebeu a idéia de processar dados a partir de cartões perfurados (o problema a resolver era a computação de dados do censo dos Estados

(11)

Unidos). Com esta solução, Hollerith conseguiu que o tempo de processamento dos dados do censo baixasse de 8 para 3 anos. A tecnologia de cartões perfurados foi adotada rapidamente por diversos países da Europa, difundindo a utilização das máquinas Hollerith a nível mundial e por bastante tempo.

Dez anos mais tarde, Hollerith fundou uma companhia, a Tabulating Machine Company. Em 1924, esta firma mudou de nome, tornando-se a International Business Machines Corporation, hoje mais conhecida como IBM. No início, as vendas da IBM eram baseadas na linha de equipamentos de escritório e, em particular, máquinas tabulares. Com isso a empresa orientou suas atividades para o mercado externo, abrindo sua primeira filial fora dos Estados Unidos, no Canadá em 1917.

1.4.3As máquinas de primeira geração (1930-1958)

Já no século XX, um grande número de projetos foram implementados, baseados na utilização de relés e válvulas eletrônicas (1.4.3) para a realização de cálculos automaticamente — eram os computadores de primeira geração. Relés são eletroímãs cuja função é abrir ou fechar contatos elétricos com o intuito de interromper ou estabelecer circuitos. Válvula é um dispositivo que conduz a corrente elétrica num só sentido.

Φιγυρα 10.Relé e Válvula

Uma das grandes vantagens das máquinas a relé sobre as máquinas de calcular mecânicas era, sem dúvida, a maior velocidade de processamento. Ainda, um outro aspecto positivo era a possibilidade de funcionamento contínuo, apresentando poucos erros de cálculo e pequeno tempo de manutenção.

Os computadores da primeira geração são todos baseados em tecnologias de válvulas eletrônicas. Normalmente quebravam após não muitas horas de uso. Tinham dispositivos de entrada/saída primitivos e calculavam com uma velocidade de milissegundos (milésimos de segundo). Os cartões perfurados foram o principal meio usado para armazenar os arquivos de dados e para ingressá-los ao computador. A grande utilidade dessas máquinas era no processamento de dados. No entanto tinham uma série de desvantagens como: custo elevado, relativa lentidão, pouca confiabilidade, grande quantidade de energia consumida e necessitavam de grandes instalações de ar condicionado para dissipar o calor gerado por um grande número de válvulas (cerca de 20 mil).

A seguir serão apresentados alguns destes computadores.

MARK I

O Mark I (1.4.3) foi criado entre 1937 e 1944, durante a II Guerra Mundial. Uma calculadora eletromecânica muito grande, idealizada por H. Aiken na Universidade de Harvard, foi considerado o primeiro projeto de computador. Utilizava muitas válvulas, as operações internas eram controladas por relés e os cálculos eram realizados mecanicamente. Integrava conceitos de computadores digitais e analógicos, pois tinha sistema eletrônico e mecânico na mesma máquina. Media 2,5 m de altura e 18 m de comprimento.

Com o apoio da IBM e da Marinha dos Estados Unidos, Howard Aiken, o pesquisador que desenvolveu Mark I, construiu outras versões deste computador (Mark II a Mark IV).

(12)

Φιγυρα 11.Mark I

ABC (Atanasoff Berry Computer)

Criado em 1939. Foi o primeiro a usar válvulas para circuitos lógicos e o primeiro a ter memória para armazenar dados, princípio no qual se baseiam os computadores digitais. Atanasoff levou 4 princípios em consideração em seu projeto de computador:

 usar eletricidade e eletrônica como meio;  recorrer à lógica binária para as operações;

 usar um condensador para memória que pudesse ser regenerado para evitar intervalos;  calcular por ação lógica direta, não por via convencional de numeração.

ENIAC (Electronic Numeric Integrator and Calculator)

Criado entre 1943 e 1946. Foi considerado o primeiro grande computador digital. Não usava um programa de armazenamento interno. Os programas eram introduzidos por meio de cabos, o que fazia sua preparação para cálculos demorar semanas. Ocupava 170 m², pesava 30 toneladas, funcionava com 18 mil válvulas e 10 mil capacitores, além de milhares de resistores a relé, consumindo uma potência de 150 Kwatts. Como tinha vários componentes discretos, não funcionava por muitos minutos seguidos sem que um deles quebrasse. Chega a ser, em algumas operações, mil vezes mais rápido que o MARK I.

Φιγυρα 12.ENIAC

A entrada de dados no ENIAC era baseada na tecnologia de cartões perfurados e os programas eram modificados através de reconfigurações no circuito. Apesar das dúvidas

(13)

com relação à sua confiabilidade, o ENIAC permaneceu operacional por mais de 10 anos.

Outra contribuição importante desta época foi o conceito de programa armazenado, introduzida por John Von Neuman. Von Neuman tinha sido consultor no projeto ENIAC e conhecia os problemas da programação destas máquinas. Os programas para os computadores da época eram feitos através de modificações nos circuitos, o correspondia a um trabalho de dias para um programa relativamente simples. A proposta de Von Neuman foi inspirada na tecnologia de entrada de dados utilizada na época, fazendo com que os programas fossem introduzidos através de cartões perfurados como se fazia com os dados. John Von Neuman assim desenvolveu a lógica dos circuitos, os conceitos de programa e operações com números binários. Estes conceitos, adotados nos computadores atuais, revolucionou o conceito de programação de computadores da época, tornando muito mais flexíveis e versáteis.

O novo conceito de programação introduzido por Von Neuman deu origem a muitos outros projetos nos quais ele próprio esteve envolvido, como por exemplo o EDVAC (Electronic Discrete Variable Automatic Computer), o IBM 650 (o primeiro computador da IBM), e o UNIVAC (Universal Automatic Computer), que foi o primeiro computador a ser fabricado em linha. Juntamente com o ENIAC, ocorreu também o desenvolvimento na área de periféricos de computador com o aparecimento de equipamentos tais como as unidades de fita magnética, impressoras, etc...

Em 1961 chegou o primeiro computador no Brasil: um UNIVAC 1105, ainda com válvulas, para o IBGE.

1.4.4Computadores de segunda geração (1955-1965)

Com a invenção do transistor em 1948, o mundo dos computadores é tomado de assalto por uma onda de novos projetos que dá origem, na década de 60 a empresas hoje mundialmente conhecidas no que diz respeito à fabricação destas máquinas — DEC e IBM.

Φιγυρα 13.Transistor

Com a segunda geração apareceram as memórias com anéis ferromagnéticos. As fitas magnéticas foram a forma dominante de armazenamento secundário: permitiam capacidade muito maior de armazenamento e o ingresso mais rápido de dados que as fitas perfuradas.

Também nesse período houve avanços no que se refere às unidades de memória principal, como por exemplo, a substituição do sistema de tubos de raios catódicos pelo de núcleos magnéticos, utilizado até hoje nos “chips” de memória RAM. Os dispositivos de memória auxiliar introduzidos na primeira geração continuam a ser utilizados.

Esses computadores, além de menores, eram mais rápidos e eliminavam quase que por completo o problema do desprendimento de calor, característico da geração anterior. Exemplos de computadores dessa geração são o IBM 1401 e o Honeywell 800. O IBM 1401 apareceu na década de 60 e com ele a IBM assumiu uma posição dominante na industria de computadores.

A Digital Equipment Corporation tinha então uma posição proeminente no setor com sua linha PDP. O primeiro minicomputador foi o PDP-1, criado em 1959 e instalado em 1961. O primeiro produzido comercialmente foi o PDP-5.

(14)

Um dos computadores mais comercializados nesta época foi o IBM 7090, que eram comercializados a um custo de três milhões de dólares. Já no início dos anos 60, a IBM passou a produzir os computadores da linha IBM 7040, que eram menos poderosos que seus predecessores, mas de custo bastante inferior.

1.4.5Computadores de terceira geração (1965-1980)

Essa geração é marcada pela substituição dos transistores pela tecnologia dos circuitos integrados (transistores e outros componentes eletrônicos miniaturizados e montados numa única pastilha de silício - o chip). Entrou no mercado em 1961 pela Fairchild Semiconductor e pela Texas Instruments, localizadas no Vale do Silício na região de Palo Alto e Stanford, na Califórnia. A tecnologia dos circuitos integrados, que permitiu a substituição de dezenas de transistores numa única peça de silício, permitiu o surgimento de computadores de menores dimensões, mais rápidos e menos caros. Com esses circuitos integrados o tempo passou a ser medido em nanossegundos (bilionésimos de segundos).

Φιγυρα 14.Transistores, integrados e válvulas

A tecnologia utilizada na época era a de pequena escala de integração (SSI -Small Scale of Integration) com a qual ao redor de mil transistores podiam-se integrar no circuito de uma pastilha. Com isso os computadores eram menores, mais confiáveis, com maior velocidade de operação e um custo bem mais baixo do que as máquinas das gerações anteriores. Também eram usados discos magnéticos para armazenamento, o que permitiu o acesso direto à arquivos muito grandes.

O exemplo típico dessa geração foi o IBM 360 (1.4.5), série que introduziu o conceito de família de computadores compatíveis, facilitando a migração dos sistemas quando é necessário mudar para um computador mais potente. Esta estratégia permitiu que a IBM se posicionasse, já neste período, como líder do mercado de computadores. Essa família era composta por seis modelos básicos e várias opções de expansão que realizava mais de 2 milhões de adições por segundo e cerca de 500 mil multiplicações. Outra novidade introduzida por esta classe de computadores foi o conceito de multiprogramação, na qual diversos programas poderiam estar residentes na memória da máquina. No caso em que um programa entrasse em espera para uma operação de entrada/saída de dados, a unidade central passava a executar a parte de um outro programa.

(15)

Um outro computador desta geração que conheceu grande sucesso, particularmente nas universidades e centros de pesquisa foram os minicomputadores da série PDP-11 (DEC), apresentado na 1.4.5.

Φιγυρα 16.PDP 11

1.4.6Computadores de quarta geração (1980 - ...)

Durante a década de 70, com a tecnologia da alta escala de integração (LSI - Large

Scale of Integration) pôde-se combinar até 65 mil componentes em uma só pastilha de

silício (chip). Os anos 80, com o grande desenvolvimento da tecnologia de circuitos integrados, o número de transistores podendo ser integrados numa pastilha de silício atingiu a faixa dos milhares e, logo em seguida, dos milhões. Foi assim que surgiram os novos computadores, ainda menores, mais velozes e mais poderosos que aqueles da geração anterior. Na segunda metade da década de 90, houve a passagem da LSI para a VLSI (Very Large Scale of Integration - muito alta escala de integração). As máquinas de todas as gerações têm como característica comum a existência de uma única CPU para executar o processamento. Porém, mais recentemente, já existem computadores funcionando com mais de uma CPU.

Desde o início da década de 80 os preços haviam caído de tal maneira que já começava a ser possível a uma pessoa ter o seu próprio computador — começava então a era da informática pessoal. Os computadores pessoais passaram então a ser utilizados de uma maneira relativamente distinta dos grandes computadores de então.

No início dessa geração nasceu a Intel, que começou a desenvolver o primeiro microprocessador, o Intel 4004 (1.4.6) de 4 bits, um circuito integrado com 2250 transistores, equivalente ao ENIAC.

O 4004 foi seguido pelo Intel 8008 de 8 bits e, mais tarde, pelo Intel 8080. O primeiro microcomputador da história foi o Altair 8800 (1.4.6), que usava o chip Intel 8088, tornou-se padrão mundial da época para os microcomputadores de uso pessoal, abrindo uma nova era na história da informática.

(16)

Φιγυρα 18.Altair

Sthephen Wozniak e Steve Jobs formaram em 1976 uma pequena empresa, a Apple, onde construíram, numa garagem de fundo de quintal, o Apple I (1.4.6). Um ano depois, com um novo e melhor projeto, surge o Apple II, primeiro microcomputador com grande sucesso comercial e, mais tarde, o Apple III. Em 1983 entra no mercado o Lisa e em 1984 o Macintosh, com tecnologia de 32 bits.

Φιγυρα 19.Apple I

Em 1981, a IBM entrou no mercado de micros, introduzindo o PC, um microcomputador com tecnologia de 16 bits (Intel 8088) que em pouco tempo se tornou um padrão. Os principais modelos de PC são:

 PC: possui cinco slots, dos quais dois são ocupados na configuração mínima - um para o controlador de disco flexível e o outro para a placa de vídeo e impressora, um PC tem a seguinte configuração típica - 256 a 640 K de memória RAM na placa principal, duas unidades de disco flexível de 360 K, controlador de vídeo gráfico, monitor monocromático e interface serial ou paralela para a impressora. Seu clock era de 4,77 MHz.

 PX-XT: possui oito slots, sendo dois ou três ocupados na configuração inicial - placa controladora de vídeo mais uma ou duas placas para controlar discos (flexível e winchester). A configuração típica de um XT é 512 a 768 K de memória RAM na placa principal, um drive de 360 K, um winchester de 10, 20 ou 30 Mb, placa controladora de vídeo gráfica, monitor monocromático e interface paralela ou serial. Seu clock era de 8,10 até 12 MHz.

 PC-XT 286: modelo intermediário entro o PC-XT e o PC-AT ou, como era chamado, um AT simplificado, uma vez que usa o microprocessador do AT o Intel 80286. Esse era três vezes mais rápido que o XT e podia executar várias tarefas ao mesmo tempo. É um PC-XT com o 80286.

 PC-AT: usa o microprocessador da Intel 80286 de 32 bits e possui maior capacidade de processamento, com memória principal de até 4 Mbytes. Sua configuração inicial típica é: 1 Mbyte de RAM, um drive de 5,25 polegadas de alta capacidade, winchester de 20 ou 30 Mbytes com alta velocidade de acesso, interface paralela e serial RS-232, controlador de

(17)

vídeo e monitor monocromático. Sua velocidade de processamento alcançava entre 16 e 20 Mhz. A grande importância do AT está na maior capacidade do 80286, que resulta em um desempenho duas a três vezes maior que os XT.

 PC-386: É um PC-AT com o microprocessador da Intel, o 80386. Com isso adquiriram grande velocidade de processamento e era capaz da multitarefa em 32 bits. O 80386 foi o grande marco da popularização da computação pessoal.

 PC 486 utiliza o microprocessador Intel 80486, com um co-processador aritmético embutido e mais de 1,2 milhão de transistores encolhidos em um chip.

Em 1993 chegou ao mercado o Pentium, cuja versão Pentium III possui cerca de nove milhões de transistores, possibilitando. O Pentium trouxe um novo fôlego às chamadas estações de trabalho (microcomputadores poderosos usados em tarefas pesadas, como computação gráfica e aplicações científicas). Uma das novidades dele é que possibilita a simulação de dois processadores, ou seja, um princípio de paralelização antes possível apenas em supercomputadores e que agora está ao alcance dos usuários de microcomputadores.

Supercomputadores

A história dos supercomputadores começa, de fato, no final de 1975 com o Cray-1. As aplicações para esses computadores são muito especiais e incluem laboratórios e centros de pesquisa aeroespaciais, empresas de altíssima tecnologia, previsão do tempo e a produção de efeitos e imagens computadorizadas de alta qualidade. Os supercomputadores são os mais poderosos, mais rápidos e de maior custo. Utilizam o conceito de processamento paralelo e são máquinas vetoriais, isto é, podem executar a mesma operação em diversas variáveis simultaneamente. Como exemplos de supercomputadores podemos citar: Cray-1, Cyber 205, Fujitsu Facon-APU, Hitachi M200HIAP, Galaxy, Cray-2, Cray-3.

(18)
(19)

Sistemas Numéricos e a Representação Interna

dos Dados no Computador

2.1 Sistemas Numéricos

Sistemas numéricos são sistemas de notação usados para representar quantidades

abstratas denominadas números. Um sistema numérico é definido pela base que utiliza. A base é o número de símbolos diferentes, ou algarismos, necessários para representar um número qualquer, dos infinitos possíveis no sistema. Por exemplo, o sistema

decimal, utilizado hoje de forma universal, utiliza dez símbolos diferentes ou dígitos para

representar um número e é, portanto, um sistema numérico na base 10.

Valores posicionais

Em um sistema de número posicional, um número é representado por uma seqüência de dígitos onde cada posição de dígito tem um peso associado. Tomando como exemplo o sistema decimal, ou base 10, que é sistema numérico que utilizamos diariamente (0, 1, 2, ... 9), o valor D de um número decimal de 4 dígitos d3d2d1d0 é D = d3*103 + d2*102+ d1*101

+ d0*100. Cada dígito di tem um peso de 10i. Por exemplo, o número 3.098.323 (base 10)

é a representação de 3*106 + 0*105 + 9*104 + 8*103 + 3*102 + 2*101 + 3*100.

2.1.1Sistema Binário

O sistema binário, ou base 2, apresenta unicamente dois dígitos: 0,1. Neste sistema a contagem é realizada como segue: 0, 1, 10, 11, 100, 101, 110, 111, 1000, ...

Conversão Binário para Decimal

Sendo binário um sistema de número posicional, o valor B de um número binário de 8 dígitos b7b6b5b4b3b2b1b0 é B = b7*27 + b6*26+ b5*25 + d4*24 + d3*23 + d2*22+ d1*21 + d0*20.

Cada dígito bi tem um peso de 2i. Assim o valor binário 10101010b é calculado como

segue 10101010b = 0*1+1*2+0*4+1*8+0*16+1*32+0*64+1*128 = 170d. Esta é a

conversão de um número binário para decimal. Outro exemplo 10011001b =

1+8+16+128=153d

Conversão Decimal para Binário

No sistema decimal, por exemplo, o número 654 corresponde a 4 unidades, 5 dezenas e 6 centenas. Para verificar isto, divide-se o número pela sua base (que é 10):

654/10 = 65 Resto 4 (*1) /10 = 6 Resto 5 (*10)

/10 Resto 6 (*100)

Para a conversão de decimal para binário utilizamos o mesmo processo. Por exemplo, para obtermos o correspondente binário do número 200d, dividimos primeiramente este

valor por 2 e anotamos o resto de cada divisão. Em seguida, dividimos novamente o dividendo da operação anterior por 2 e anotamos novamente o resto da divisão. Isto é repetido até que o resto da divisão seja 0, conforme abaixo:

200/2=100 Resto 0 100/2= 50 Resto 0 50/2 = 25 Resto 0 25/2 = 12 Resto 1 12/2 = 6 Resto 0 6/2 = 3 Resto 0

(20)

3/2 = 1 Resto 1 1/2 = 0 Resto 1

O correspondente binário de 200d é obtido unindo-se os restos da divisão por 2 na ordem

inversa, assim 200d=11001000b.

2.1.2 Sistema Octal

O sistema binário ou base 8 apresenta oito dígitos: 0, 1, 2, 3, 4, 5, 6, 7. Neste sistema, a contagem é realizada como segue: 0, 1, 2, 3, 4, 5, 6, 7, 10, 11, 12, 13, 14, 15, 16, 17, 20,...

Conversão Octal para Decimal

Sendo o sistema octal um sistema de número posicional, o valor O de um número octal de 4 dígitos o3o2o1o0 é O = d3*83 + d2*82+ d1*81 + d0*80. Cada dígito oi tem um peso de 8i.

Assim o valor octal 1758 é calculado como segue 1758 = 5*1+7*8+1*64 = 12510. Esta é a

conversão de um número octal para decimal.

Conversão Decimal para Octal

Para a conversão de decimal para octal utilizamos o mesmo processo da conversão do sistema decimal para binário. Por exemplo, para obtermos o correspondente octal do número 200d, dividimos primeiramente este valor por 8 e anotamos o resto de cada

divisão. Em seguida, dividimos novamente o dividendo da operação anterior por 8 e anotamos novamente o resto da divisão. Isto é repetido até que o resto da divisão seja 0, conforme abaixo:

200/8= 25 Resto 0 25/8 = 3 Resto 1 3/8 = 0 Resto 3

O correspondente octal de 200d é obtido unindo-se os restos da divisão por 8 na ordem

inversa, assim 200d=310o.

2.1.3 Sistema Hexadecimal

Na base hexadecimal tem-se 16 dígitos que vão de 0 à 9 e da letra A até F. Estas letras representam os números 10d a 15d. Assim nós contamos os dígitos hexadecimais da

seguinte forma: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F, 10, 11, 12, ..., 19, 1A, 1B, 1C, 1D, 1E, 1F, 20, 21, ...

Conversão Binário para Hexadecimal

A conversão entre números binários e hexadecimais é simples. A primeira coisa a fazer é dividir o número binário em grupos de 4 bits, começando da direita para a esquerda, os lugares que faltam são complementados por zeros. Por exemplo, o número 101011b

(1+2+8+32=43d), nós dividimos este em grupos de 4 bits e nós temos 10;1011. Nós

completamos o último grupo com zeros: 0010;1011. Após nós tomamos cada grupo como um número independente e nós convertemos estes em dígitos decimais: 0010;1011=2;11. Mas desde que nós não podemos representar o número hexadecimal como 211 porque isto é um erro, nós temos que substituir todos os números decimais maiores que 9 pelas suas respectivas representações em hexadecimal, com o que nós obtemos: 2Bh. A tabela abaixo pode auxiliar na conversão de números binário para

hexadecimal.

Binário Hexadecimal Decimal

0000 00 0 0001 01 1 0010 02 2 0011 03 3 0100 04 4 0101 05 5 0110 06 6

(21)

0111 07 7 1000 08 8 1001 09 9 1010 0A 10 1011 0B 11 1100 0C 12 1101 0D 13 1110 0E 14 1111 0F 15

Afim de obter um número hexadecimal em binário é apenas necessário inverter os passos.

Conversão Hexadecimal em Decimal

Para converter um número hexadecimal em decimal, nós utilizamos a mesma fórmula utilizada na conversão binário para decimal, sendo que a base 2 é trocada por 16. Por exemplo, para converter B2Ah em decimal:

B -> 11*162 = 2816 d 2 -> 2*161 = 32 d A -> 10*160 = 10 d 2858d Conversão Decimal para Hexadecimal

Para converter um número decimal em hexadecimal, nós utilizamos a mesma fórmula utilizada na conversão de um número decimal para binário, dividindo por 16 em vez de 2. Por exemplo, para converter 1069d em hexadecimal:

1069/16= 66 Resto 13d = Dh 66/16 = 4 Resto 2d = 2h 4/16 = 0 Resto 4d = 4h 1069d = 42Dh

2.2 Operações Aritméticas

2.2.1 Aritmética Binária

Esta seção apresenta as quatro operações básicas no sistema binário: adição, subtração, divisão e multiplicação.

Adição

Para somar dois números binários, fazem-se as contas coluna a coluna, da direita para a esquerda, como de costume, fazendo o transporte de um (<e vai um>) quando for o caso. Para isto, observe as seguintes operações básicas:

 0 + 0 = 0  0 + 1 = 1

 1 + 1 = 10 (1 mais 1 é igual a 0 e vai 1)

 1 + 1 + 1 = 11 (1 mais 1 mais 1 é igual a 1 e vai 1) Exemplos: + 111 1100111 111110 + 1101 100100 11001 101110 + 1101 + 1001011111+ 10011 + 1110 10010 110110 101100 111100 Subtração

(22)

 Como o conjunto de símbolos contém apenas 2 dígitos, ao se efetuar a subtração parcial entre 2 dígitos, um do diminuendo e outro do diminuidor, se o segundo (diminuidor) exceder o primeiro (diminuendo), subtrai-se uma unidade ao dígito imediatamente à esquerda no diminuendo (se existir e o seu valor for 1), convertendo-o a 0. Em seguida, substituímos o diminuendo por 2, que corresponde à equivalência 1*2, da unidade extraída. Se o dígito imediatamente à esquerda for 0, procura-se nos dígitos consecutivos.

Exemplos: 11101 - 111 02 02 021 -11101 -11101 -11101 -111 -111 -111 10010 11010 10110 Exemplos: 11000 - 111 1 0112 1 0112 1 0120 1 0120 -10200 1 0200 -11000 -11000 -111 -111 1001 10001

 A segunda forma de realizar a subtração, por exemplo de a-b, e realizar a soma de a por -b. Esta subtração é feita pelo chamado método do complemento de dois. O complemento de dois transforma um número positivo em negativo. Neste método, o diminuendo (a) é somado com o complemento de dois do diminuidor (-b). Note que o número de dígito dos operandos devem ser o mesmo: para isto complemente o operando com menor número de dígitos com zeros a esquerda (antes do complemento). Para realizar o complemento de dois, basta trocar os uns pelos zeros e vice-versa e adicionar um ao resultado. Por exemplo, a subtração de 1110-101 é feita da seguinte maneira:

1 . Completa-se o número de dígitos do diminuidor: 0101 2. Realiza-se o complemento de dois do diminuidor: 1010+1=1011. 3. Soma-se os dois operandos 1110+1011=11001

4. Despreza-se o transporte final: 1001

Multiplicação

A multiplicação na base 2 - ou em qualquer outra base - pode fazer-se por adições sucessivas; para calcular A*B basta somar A a si própria B vezes.

Exemplo: 101b * 100b = ? Lembrado que 100b = 4b, então

101 * 100 =

Uma forma, e a ideal, é fazer a operação semelhante à multiplicação decimal, exceto pelo fato da soma final dos produtos se fazer em binário. Para tal, as seguintes igualdades devem ser respeitadas:

 0*0=0; 0*1=0; 1*0=0; 1*1=1 Exemplos:

(23)

 Multiplicar os números 1001 e 1101.

Divisão

Analogamente, a divisão pode ser feita por subtrações sucessivas, até obtermos uma diferença igual a zero (no caso de uma divisão exata), ou um número menor que o divisor.

Exemplo:

Mas esta divisão pode ser feita de maneira idêntica à divisão decimal, exceto pelo fato das multiplicações e subtrações internas ao processo serem feitas em binário.

Exemplo:  Dividir 11011 e 101.

(24)

 Dividir 1010101 e 101.

A prova é:

2.2.2 Aritmética Hexadecimal

Adição

Como exemplo, suponha a adição de 8h+5h, se somada em decimal o valor seria 13. Em

hexadecimal, o valor 13 é representado por Dh. Deve-se reparar que, tal como nos

habituamos a fazer na Escola Primária, sempre que o resultado iguala ou ultrapassa a base, subtraímos esta ao resultado, e fazemos um transporte para a coluna seguinte («e vai um», neste caso). Suponha agora a adição de 19 por 9:

 Em decimal, o resultado seria 28;

 Em hexadecimal, inicialmente somamos os dígitos menos significativos: 9h+9h = 18; como o

resultado é maior que a base (16), então 18-16 = 2 e vai um para o dígito mais significativo. Portanto, 19h+9h=22h;

Não é preciso converter os números F8h e A34h para decimal, somá-los e reconverter o

resultado para a base 16. Podemos fazer a conta coluna a coluna. Então F8h + A34h é

calculado da seguinte forma:

Subtração

Vamos ver a subtração a partir de um exemplo: 27H-1EH. Efetuamos a operação de subtração coluna a coluna. Na primeira coluna, o diminuidor (E) é superior ao diminuendo (7). Então, adicionamos a base ao diminuendo, executamos a subtração, e há transporte de uma unidade que somamos ao diminuidor da coluna seguinte.

(25)

retirando o número transportado do diminuendo da coluna da esquerda, 2-1, obtemos 1, e subtraindo 1 do diminuidor, obtemos 0:

Multiplicação

Esta operação pode fazer-se facilmente por meio da tabela de dupla entrada apresentada:

Como se vê, temos todos os algarismos hexadecimais (exceto o zero) nas entradas verticais e horizontais da tabela. Se quiséssemos calcular 5h*9h, por exemplo,

encontraríamos o resultado na intercessão da coluna 5 com a linha 9. Então, 5h*9h = 2Dh.

Uma vez que a multiplicação é comutativa, então, o mesmo resultado se verifica na intercessão da coluna 9 com a linha 5.

 1º. Exemplo:

Ah* 2h = _______ (complete)

2h*7h = _______ (complete)

 2º. Exemplo:

Procedendo como de costume, vamos começar pelo produto do multiplicando pelo algarismo mais à direita do multiplicador:

(26)

Calculamos em seguida o produto do multiplicando pelo 2º. algarismo (contando a partir da direita) do multiplicador.

Agora é só somar os produtos parciais. Fica:

 Fazer o produto dos seguintes números hexadecimais: B12H e 3FCH

Divisão

Esta é a operação mais difícil de fazer sem recorrermos à tabela anterior. Veja alguns exemplos:

 1º. Exemplo: dividir os números hexadecimais 2F por 12.

(27)

 2º. Exemplo: Dividir os números hexadecimais 3F4 por A1

2.3Operações Lógicas

Existem quatro tipos de operações lógicas que se podem operar sobre números binários: AND, OR, XOR (ou exclusivo), e NOT.

2.3.1 Operações lógicas com bits

AND

A operação lógica AND é uma operação que aceita dois operandos. Estes operando são binários simples (base 2). A operação AND é

0 and 0 = 0 0 and 1 = 0 1 and 0 = 0 1 and 1 = 1

Uma maneira compacta de representar a operação lógica AND é com a tabela verdade, apresentada abaixo. As duas colunas a esquerda representam os dois operandos da operação AND Op1 OP2.

Op1 Op2 AND Op1 Op2

0 0 0

0 1 0

1 1 1

Em português, a operação lógica AND é: “se o primeiro operando é 1 e o segundo operando é 1, o resultado é 1, senão o resultado é 0”.

OR

A operação lógica OR também é uma operação com dois operandos. Ela é definida como:

0 or 0 = 0 0 or 1 = 1 1 or 0 = 1 1 or 1 = 1

A tabela verdade da operação OR tem a seguinte forma:

Op1 Op2 OR Op1 Op2

0 0 0

0 1 1

1 0 1

1 1 1

A operação lógica OR significaria: “Se o primeiro operando ou o segundo operando (ou os dois) forem 1, o resultado é 1, senão o resultado é 0. Esta operação também é conhecida como ou inclusivo (inclusive-OR).

XOR

A operação lógica XOR (ou exclusivo) também é uma operação com dois operandos. Ela é definida como:

(28)

0 xor 0 = 0 0 xor 1 = 1 1 xor 0 = 1 1 xor 1 = 0

A tabela verdade da operação XOR tem a seguinte forma:

Op1 Op2 XOR Op1 Op2

0 0 0

0 1 1

1 0 1

1 1 0

Em português a operação lógica XOR significaria: “Se o primeiro operando ou o segundo operando, mas não os dois, for 1, o resultado é 1, senão o resultado é 0.

NOT

A operação lógica XOR (ou exclusivo) também é uma operação com um operando. Ela é definida como:

not 0 = 1 not 1 = 1

A tabela verdade da operação NOT tem a seguinte forma:

Op1 NOT Op1

0 1

0 0

Em português a operação lógica NOT significaria: “Se o operando for 1, o resultado é 0, senão o resultado é 1”.

2.3.2 Operações Lógicas com números

As operações lógicas trabalham apenas com operandos com bit único. Para realizar estas operações sobre um número, por exemplo de 8, 16, 32 bits, é necessário realizar a operação bit-a-bit. Por exemplo se quisermos realizar a operação lógica AND com dois operandos de 8 bits cada, teríamos que executar a operação lógica AND sobre cada par de bits independentemente:

1011 0101 AND 1110 1110 1010 0100

Como as operações lógicas são definidas em termos de valores binários, deve-se converter os números decimais, hexadecimais, etc., para números binários antes de realizar as operações lógicas.

2.4 Tipos de Dados Tratados pelo Computador

Todos os dados e as instruções armazenados em memória são codificados sob a forma de sinais elétricos do tipo ligado e desligado, representado pelos números 1 e 0. Cada unidade de informação deste tipo é chamada de bit, abreviação de Binary digit. Assim o sistema numérico adotado em sistemas computacionais é o binário, ou base 2.

Os computadores podem receber valores decimais, através do teclado, e escrever valores decimais, através do vídeo, por exemplo. Mas internamente os valores são armazenados e processados no sistema binário.

Um bit pode representar dois valores: 1 ou 0, ou então verdadeiro ou falso. Como isto é muito pouco, nós podemos unir dois ou mais bits para representar mais de dois valores. Neste caso, a quantidade de valores representáveis por uma seqüência de n bits é de 2n.

Algumas strings de bits têm nomes próprio: uma seqüência de 8 bits são chamados de byte

(29)

uma seqüência de 4 bits é chamada de nibble. um grupo de 16 bits é chamado de word. um grupo de 32 bits é chamado de double word.um grupo de 64 bits é chamado de quad word.

Por razões de simplificação de hardware, o número 1024 foi o escolhido para representar o "k" da computação. Na vida cotidiana e na física, o "k" vale 1000:

 1 km = 1000 metros  1 kg = 1000 gramas  1 kV = 1000 volts

Entretanto, na informática, o multiplicador "k" (lê-se "quilo" ou "ká") vale 1024. Da mesma forma, o multiplicador "M" (lê-se "mega"), que normalmente vale 1.000.000, na computação vale: 1 M = 1024 k = 1024x1024 = 1.048.576. Portanto, 1 MB (lê-se "um megabyte") são exatamente 1.048.576 bytes. Mas para efeitos práticos, podemos dizer que 1 MB é aproximadamente 1 milhão de bytes.

O multiplicador "G" (lê-se "giga"), que normalmente vale 1 bilhão, na computação vale: 1 G = 1024 M = 1024x1024x1024 = 1.073.741.824. Portanto, 1 GB (lê-se "um gigabyte") são exatamente 1.073.741.824 bytes, mas para efeitos práticos podemos dizer que 1 GB é aproximadamente 1 bilhão de bytes.

2.5 Representação Interna de Caracteres

Os bytes são usados para representar caracteres, números, figuras, ou qualquer outro tipo de dado armazenado ou processado em um computador. Esta seção apresenta estas diversas formas de representação interna de caracteres.

Na maioria dos códigos alfanuméricos cada caractere é representado através de um byte. Por exemplo, no código ASCII (visto mais adiante) a letra 'A' é representada pelo byte "0100 0001". Uma seqüência de caracteres é expressa por uma cadeia de bytes sucessivos. Nem todos os tipos de códigos utilizam os 8 bits de um byte para a representação de caracteres.

2.5.1 Código de 6 bits

Os primeiros códigos utilizados foram os de 6 bits, que permitiam a representação de 26

= 64 caracteres (2.5.1), que correspondem a:  26 letras maiúsculas.

 10 algarismos ( 0 1 2 3 4 5 6 7 8 9 ).

 28 caracteres chamados especiais, incluindo SP (caractere em espaço em branco).

Φιγυρα 20.Código de 6 bits.

Por exemplo, a codificação da frase "OLA!" é: X010100 X010001 X000110 X010101.

2.5.2 Códigos de 7 bits (ASCII)

Com o desenvolvimento das linguagens de programação de alto nível começaram a ser utilizados os códigos de 7 bits que permitiam a representação de minúsculas e de

(30)

caracteres cujo significado são ordens de controle para periféricos. Um exemplo desse tipo de códigos é o ASCII de 7 bits (2.5.2).

Φιγυρα 21.Código ASCII de 7 bits. Os significados dos caracteres de controle são:

ASCII é uma codagem a 7 bits, mas muitos computadores manipula uma quantidade de 8 bits (byte). Portanto, os caracteres ASCII devem ser freqüentemente armazenados um por byte, com o bit mais significante igual a 0. O bit extra é algumas vezes usado para propósitos específicos, dependendo da aplicação. Por exemplo, algumas impressoras reconhecem um ASCII estendido, com os caracteres adicionais iniciando pelo bit mais significativo a 1. Estes caracteres habilitam a impressora a imprimir símbolos adicionais, como o alfabeto grego ou fontes do tipo itálico.

(31)

2.5.3 EBCDIC

O EBCDIC (Extended Binary Coded Decimal Interchange Code) é uma codagem de caracteres de 8 bits (2.5.3) e se trata de um padrão proprietário desenvolvido pela IBM.

Φιγυρα 22.Código EBCDIC de 8 bits. O significados dos caracteres de controle do EBCDIC são:

2.5.4 ASCII Estendido

É um conjunto de códigos que estende o conjunto ASCII básico. Os caracteres ASCII estendido usam 8 bits para representar os caracteres. Os caracteres extras representam caracteres de línguas mortas e caracteres especiais para desenhas figures. Veja estes caracteres na figura abaixo.

(32)

Φιγυρα 23.Caracteres ASCII estendidos

2.5.5IS O Latin-1

ISO Latin-1 é uma codificação de caracteres padronizada pela Organização Internacional de Padronização (ISO), que recebe o código ISO 8859-1. Ele é um conjunto de caracteres ASCII estendido e é muito similar aos caracteres ANSI usado pelo Windows, embora os dois não sejam idênticos. A linguagem HTML (Hypertext Meta Language) adota também esta representação de caracteres.

A figura abaixo apresenta os caracteres ISO Latin-1, com os caracteres adicionais propostos pelo Microsoft® Windows Latin-1 Added Characters (em claro).

Φιγυρα 24.Caracteres ISO Latin-1

2.5.6 Caracteres ANSI

O Windows 9x suporta o conjunto de caracteres ANSI (American National Standards

Institute), que é uma representação de 8 bits (256 caracteres), numerados de 0 a 255.

Os valores de 0 a 127 são os mesmos dos caracteres ASCII. Valores entre 128 a 255 são similares ao conjunto de caracteres ISO Latin-1, mas naturalmente tem extensões e incompatibilidades.

(33)

2.5.7 Caracteres Unicode

Windows NT usa o conjunto de caracteres Unicode 16-bits, que cobre grande parte dos caracteres das maiores línguas vivas, incluindo também caracteres de linguagens mortas que tem muito uso escolar. Veja detalhes em http://www.unicode.org.

2.6 Representação Interna de Números

Esta seção apresenta estas diversas formas de representação interna de números.

2.6.1 Representação de Números Inteiros

Para representar números positivos, utiliza-se normalmente o valor do próprio número binário. Por exemplo, o número 6 é representado por 0101 e o número 12 é representado por 1100.

Existem quatro maneiras de se representar números negativos: módulo e sinal (MS); complemento de 1 (C-1), complemento de 2 (C-2) e excesso de 2 elevado a (N-1)

Nessas representações de números utiliza-se o sistema binário e considera-se que temos um número limitado de bits para cada dado numérico. Esse número de bits disponíveis é representado nesta seção por N.

Módulo e Sinal (MS)

Neste sistema de representação, o bit que está situado mais à esquerda representa o sinal, e o seu valor será 0 para o sinal + e um para o sinal -. Os bits restantes (N-1) representam o módulo do número. Por exemplo, supondo que exista a limitação de 8 bits (N=8), o valor 00101010 representa o número +42 e o valor 10101010 representa o número -42.

Denomina-se amplitude ou faixa (range) de representação num determinado método o conjunto de números que podem ser nele representados. Para o sistema módulo e sinal, a faixa de representação para N dígitos é de -2N-1+1 X 2N-1-1. Assim:

 Para o caso de 8 bits (byte), a faixa é: -127 ≤ X ≤ 127  Para 16 bits (word), a faixa é: -32767 ≤ X ≤ 32767

 Para 32 bits (double word), a faixa é: -2147483647 ≤ X ≤ 2147483647

A vantagem deste sistema em relação a outros é a de possuir faixa simétrica. Por outro lado, apresenta a inconveniência de possuir duas representações para o número 0. Para 8 bits o 0 tem as seguintes representações: 00000000 (+0) e 1000000 (-0).

Complemento de 1 (C-1)

Este sistema de representação também utiliza o bit mais à esquerda para o sinal, correspondendo o 0 ao sinal + e o 1 ao sinal -. Para os números positivos, os N - 1 bits da direita representam o módulo (assim como no MS). O simétrico de um número positivo é obtido pelo complemento de todos os seus dígitos (trocando 0 por 1 e vice-versa), incluindo o bit de sinal. Por exemplo, supondo que exista a limitação de 8 bits (N=8 ), o valor 00101010 representa o número +42 e o valor 11010101 representa o número -42.

Este método tem a mesma faixa de representação para N dígitos do método MC, que é de -2N-1+1 X 2N-1-1. E tem a mesma desvantagem do anterior, que é de ter duas

representações para o número 0: 00000000 (+0) e 11111111 (-0).

Complemento de 2 (C-2)

Este sistema também utiliza o bit mais à esquerda para o sinal, correspondendo o 0 ao sinal + e o 1 ao sinal -. Para os números positivos, os N-1 dígitos da direita representam o módulo (igualmente ao MS e C-1). O simétrico de um número é obtido em dois passos:

(34)

Primeiro passo: Obtém-se o complemento de todos os bits do número positivo (trocando 0 por

1 e vice-versa) incluindo o bit do sinal, isto é, executa-se o Complemento de 1.

Segundo passo: Ao resultado obtido no primeiro passo soma-se 1 (em binário),

desprezando-se o último transporte, desprezando-se existir.

Vejamos a representação em Complemento de 2 dos números 10 e -10 para 8 bits:

A faixa de representação neste caso é assimétrica, o que constitui o seu maior inconveniente, e é dada pela fórmula -2N-1 X 2N-1-1

 Para o caso de 8 bits (byte), a faixa é: -128 ≤ X ≤ 127  Para 16 bits (word), a faixa é: -32768 ≤ X ≤ 32767

 Para 32 bits (double word), a faixa é: -2147483648 ≤ X ≤ 2147483647

A principal vantagem é ter uma única representação para o número 0. Para 8 bits, teremos:

O último transporte é desprezado. Portanto, o 0 e o -0 têm uma mesma representação. O método C-2 é o mais utilizado para representar números negativos.

Excesso de 2 elevado a (N-1)

O método de representação em excesso não utiliza nenhum bit para o sinal, de modo que todos os bits representam um módulo ou valor. Esse valor corresponde ao número representado mais um excesso, que para N bits é igual a 2 elevado a N-1. Por exemplo, para 8 bits o excesso é 128 ( 27 = 128 ), logo, o número 10 é representado por 10+128 =

138 (10001010). O número -10 é representado por -10+128 = 118 (01110110). Neste método, o número 0 tem uma única representação, que para 8 bits corresponde a: 0+128 = 128 (10000000)

A faixa de representação é assimétrica (o que é um inconveniente) e é dada da mesma forma que o método C-2: -2N-1 X 2N-1-1

É interessante observar que todo o número representado em excesso é igual à sua correspondente representação em Complemento de 2, exceto que o bit de sinal é invertido.

2.6.2 Vírgula fixa (Fixed Point)

Este nome vem da posição em que se supõe estar situado o ponto decimal, que é uma posição fixa. A vírgula fixa é hoje utilizada exclusivamente para a representação de números inteiros, supondo-se a vírgula decimal implicitamente situada à direita dos dígitos.

(35)

Existem quatro maneiras de representar números com vírgula fixa: binário puro, decimal, decimal não compactado, decimal compactado.

Binário Puro

O número é representado através dos métodos vistos anteriormente. Por exemplo, considerando um computador com palavra de 32 bits que utiliza o método Complemento de 2 (C-2), qual é a sua faixa de representação e qual a configuração interna dos números 0, 10, -10, 2147483647 e -2147483648?

 A faixa de representação é: -231X231-1, ou então: -2147483648X2147483647.

 Representação de 0: 00000000000000000000000000000000  Representação de 10: 00000000000000000000000000001010  Representação de -10: 11111111111111111111111111110110

 Representação de 2147483647: 01111111111111111111111111111111  Representação de -2147483648: 10000000000000000000000000000001

Decimal não Compactado

Neste sistema um número é armazenado com um byte para cada um de seus algarismos. Cada byte contém no seu quarteto da esquerda quatro 1's denominados bits de zona, e no quarteto da direita, o algarismo em BCD (Binary-coded display - codificado em binário ), que é um número entre 0 e 9. Esses quatro bits são denominados bits de dígito. O quarteto da esquerda do último algarismo do número dado representa o sinal, e pode conter 1100 para o sinal + e 1101 para o sinal - (C e D em hexadecimal, respectivamente).

Por exemplo, a representação do número 1234 é 11110001 11110010 11110011 11000100, e a representação do número -2345 é 11110010 11110011 11110100 11010101.

Decimal Compactado

Cada dígito é representado num quarteto (sem bits de zona), exceto o primeiro quarteto da direita que representa o sinal com os mesmos valores (C e D).

Por exemplo, a representação do número 1234 é 00000001 00100011 11000100, e a representação do número -2345 é 00000010 00110100 11010101.

2.6.3 Ponto Flutuante

Uma vez que número de bits que representa um número real é limitado, os números reais sofrem truncamento na sua parte fracionária. É importante lembrar de que, por utilizar a vírgula flutuante, nem todos os números têm representação, razão pela qual estes números são representados de forma aproximada, acarretando pequenos erros de representação.

Números de ponto flutuante tem duas partes. A primeira parte contem a fração (algumas vezes chamada de mantissa) e a segunda parte define a posição do ponto decimal e é chamada de expoente. Por exemplo, o número decimal +6132,789 é representado em ponto flutuante como:

 Fração: +.6132789  Expoente: +04

O valor do expoente indica que a posição real do ponto decimal é quatro pontos a direita do ponto decimal indicado na fração. Esta representação é equivalente a notação científica: +.6132789 x 10+4.

Generalizando, os números decimais ponto flutuante são representados na forma Fx10E,

onde F é a fração e E o expoente. Apenas a fração e o expoente são fisicamente representados em termos computacionais. A base 10 e o ponto decimal da fração são assumidos e não são mostrados explicitamente. Um número binário ponto flutuante é representado de uma maneira similar, exceto que ele usa a base 2 para o expoente. Por

Referências

Documentos relacionados

de endereços requisição DMA confirmação DMA barramento de ends barramento de dados controle de escrita controle de leitura Controlador de DMA interrupção=1 Quando o DMAC verifica que

de endereços requisição DMA confirmação DMA barramento de ends barramento de dados controle de escrita controle de leitura R=1 ou W=1 Controlador de DMA Operação BG=1

O processo de Determinação de Equivalência é definido como a fase do BInXs que analisa todos os conceitos contidos nos esquemas-fonte locais, e através de sucessivos cálculos,

A partir disso, grandes indústrias surgiram, fazendo com que as pequenas manufaturas quebrassem ou fossem engolidas pela concorrência. O investimento na industrialização era muito

A lealdade à marca surge progressivamente do posicionamento da marca na mente do consumidor, sendo que o alto nível de lealdade do consumidor de luxo é um dos principais fatores

Além deste comportamento, é importante ressaltar que o Centro é o bairro que mais possui tweets (30% do total da base de Florianópolis) e, portanto, houve consultas que

• São otimizados para realizar o conjunto de instruções para o qual são projetados (e não um algoritmo ou uma classe de algoritmo) • Exemplos: microprocessadores... Projeto

Diante dessa afirmação, Humblé ([2002]) acredita que a sintaxe e a colocação pressupõem um conhecimento da ‘conduta’ das palavras que envolvem a palavra