Buscar

Apostila de Arquitetura e Organização de Computadores

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 204 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 204 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 204 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Professor Edino Mariano Lopes Fernandes 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
UNIVERSIDADE DO ESTADO DE SANTA CATARINA 
CENTRO DE CIÊNCIAS TECNOLÓGICAS – CCT 
 
Departamento de Ciências da Computação 
Nota importante: Existem materiais incluídos nesta apostila de outros autores e fontes bibliográficas quase todos 
devidamente identificados (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. 
 
 
 
 2 
 
 
 
CAPÍTULO I – SISTEMAS DE NUMERAÇÃO 
 
1.1 Introdução 
 
 
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 os habitantes das cavernas costumavam pintar animais nas 
paredes, provavelmente para armazenar informações que obtinham no seu cotidiano. Já no 
período historicamente conhecido 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). O problema 
seguinte foi ―lembrar‖ as quantidades que foram contadas. 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 
 
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. 
 
Sistemas de Numeração não-posicional 
Uma das primeiras tentativas de sistema de numeração bem sucedida é o sistema ro-
mano. Ele usa um conjunto de sete símbolos {I,V,L,C,D,M} e é capaz de representar uma 
grande variedade de números. 
 
 
 3 
 
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. 
 
Por outro lado, a quantidade 94 era representada por XCIV = (-10 + 100) + (-1 + 5) = 94. 
Nesses sistemas, os símbolos tinham um valor intrínseco, independente da posição que 
ocupavam na representação (sistema numérico não-posicional). 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) 
 
 
1.3 Base de um Sistema de Numeração 
 
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 
 
 
 
 4 
 
O sistema numérico ao qual estamos acostumados é o sistema numérico decimal. 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". 
Uma característica particular de um sistema numérico é a sua base. 
A base indica o número de caracteres ou dígitos usados para representar quantidades 
naquele sistema numérico. O sistema numérico decimal tem basedez pois são usados os 
dez dígitos de 0 até 9 para representar quantidades. Quando um sistema numérico é usado 
onde à base não é conhecida, um índice é usado para mostrar a base. 
Por exemplo: o número 460310 é proveniente de um sistema numérico com base dez. 
Notação Posicional 
O sistema numérico decimal é posicional ou ponderado. Isto significa que cada posição dos 
dígitos num número possui um peso particular o qual determina a magnitude daquele 
número. 
 
Cada posição tem um peso 
característico determinado pela 
potenciação da base do sistema 
numérico, neste caso o número 
dez. Os pesos posicionais são 
100(unidades), 101(dezenas), 
102(centenas); etc. Observe a 
tabela ao lado para uma lista 
condensada das potências de dez. 
Potências de 10 
10 
0
 = 1 105 = 100.000 
10
 1
 = 10 106 = 1.000.000 
10 
2
 = 100 107 = 10.000.000 
10
 3
 = 1.000 108 = 100.000.000 
10 
4
 = 10.000 109 = 1.000.000.000 
 
 
Nós determinamos o valor total de um número considerando os dígitos específicos e os 
pesos de suas posições. Por exemplo, o número decimal 4603 está escrito na notação 
habitual. Este número também pode ser escrito na notação posicional. 
Para determinar o valor de um número devemos multiplicar cada dígito pelo peso de sua 
posição e somar os resultados. 
 
Notação Posicional de um Número 4603 na Base 10 
( 4 x 10
3
) + ( 6 x 102) + ( 0 x 101) + ( 3 x 100 ) 
( 4 x 1000 ) + ( 6 x 100 ) + ( 0 x 10 ) + ( 3 x 1 ) 
 
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. 
 
 
 5 
 
 
 
(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). 
 
Números Fracionários 
Até agora, apenas números inteiros ou números completos foram discutidos. Um inteiro é 
qualquer um dos números naturais, os negativos destes números, ou zero (ou seja, 0, 1, 4, 
7, etc...). 
Assim, um inteiro representa um número completo. Mas, é geralmente necessário expressar 
quantidades em termos de partes fracionárias de um número completo. 
 
Frações decimais são números cujas posições tem pesos 
que são potências negativas de dez tais como: 
10
-1
 = 1/10 = 0,1; 
10
-2
 = 1/100 = 0,01, etc... 
 
A tabela fornece uma lista 
condensada 
das potências negativas de dez 
(frações decimais). 
Potências Negativas de 10 
10-1 = 0,1 10-5 = 0,00001 
10-2 = 0,01 10-6 = 0,000001 
10-3 = 0,001 10-8 = 0,0000001 
10-4 = 0,0001 10-9 = 0,00000001 
 
Um ponto base (ponto decimal para números na base dez) separa a parte inteira da parte 
fracionária de um número. A parte inteira fica à esquerda do ponto decimal e tem os pesos 
posicionais de unidades, dezenas, centenas, etc. A parte fracionária do número fica à direita 
do ponto decimal e tem os pesos posicionais de décimos, centésimos, milésimos, etc. Para 
exemplificar, o número decimal 278,94 pode ser escrito com notação posicional como 
mostrado abaixo. 
Notação Posicional de um Número 278,94 na Base 10 
( 2 x 10
2
) + ( 7 x 101) + ( 8 x 100) + ( 9 x 10-1 ) ( 4 x 10-2 ) 
( 2 x 100 ) + ( 7 x 10 ) + ( 8 x 1 ) + ( 9 x 1/10 ) ( 4 x 1/100 ) 
200 + 70 + 8 + 0.9 = 0.04 = 278,9410 
 
 
 
 6 
 
Neste exemplo, o dígito mais a esquerda (2x102) é o dígito mais significativo ou MSD 
("most significant digit") pois, ele tem o maior peso na determinação do valor do número. O 
dígito mais a direita, chamado o dígito menos significativo ou LSD ("least significant digit") 
tem o menor peso na determinação do valor do número. Portanto, conforme o nome diz, o 
MSD é o dígito que provocará a maior variação quando seu valor for alterado. O LSD tem o 
menor efeito no valor total do número. 
 
 
 
A representação 125,3810 (base 10) significa 1x10
2 + 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.b
2 + a1.b
1 + a0.b
0 + a-1.b
-1 + a-2.b
-2 + .... + a-n.b
-n , sendo que, 
an.b
n + .... + a2.b
2 + a1.b
1 + a0.b
0 é 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 = 16
2 - 1. 
 
 
1.5 Base diferente de 10 
 
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 re-
presentados 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 
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  
 
 
 7 
 
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 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 00 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. 
 
 
 8 
 
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. 
 
Formatos binários 
Assim como nos números decimais, os zeros colocados à esquerda de dígitos binários 
não são significativos. Podemos colocar infinitos zeros à esquerda de um número binário e, 
nem assim, seu valor se modifica. Veja o número binário 101, que corresponde a 5 decimal: 
 101 = 0000 0101 = ...00000000000000000000101 
Na matemática pura, qualquer valor pode ter um número infinito de dígitos (lembrando que 
os zeros colocados à esquerda não alteram o valor do número). Com os computadores a 
coisa é um pouco diferente, pois trabalham com um número específico de bits(derivado de 
binary digit). Os grupos de dígitos binários mais comumente utilizados pelos computadores 
são: bits únicos, grupos de 4 bits - chamados de nibble, grupos de 8 - chamados de byte, 
grupos de 16 - chamados de word (word = palavra), etc. A razão da existência destes 
grupos é funcional, característica dos chips 80x86. 
Vamos convencionar que oito bits agrupados são chamados de 1 byte , e um bit 
representa um dígito binário e adotar a convenção de grafá-los sempre em múltiplos de 
quatro casas. Por exemplo, o decimal 5 poderá ser grafado como 0101, 00000101, 
000000000101 ou mesmo 0000000000000101. No sistema decimal costumamos separar os 
dígitos em grupos de três: 1.748.345 é mais legível que 1748345. No sistema binário 
agruparemos os dígitos em grupos de quatro, que chamaremos nibble, também para 
melhorar a legibilidade. Por exemplo, 0000000000000101 será grafado 0000 0000 0000 
0101. 
Um único bit consegue representar unicamente dois valores diferentes (tipicamente zero ou 
um). O que precisa ficar claro é a dualidade do bit. Esta dualidade pode se referir a itens de 
um mesmo tipo ou a itens de natureza completamente diferente. Um bit pode representar 0 
ou 1, verdadeiro ou falso, ligado ou desligado, masculino ou feminino, certo ou errado. Um 
bit também pode representar quaisquer dois valores (como 589 ou 1325) ou duas cores 
(como azul ou vermelho). Nada impede de que um bit represente dois itens de natureza 
distinta, como 589 ou vermelho. Podemos representar qualquer par de itens com um bit, 
mas apenas um único par de itens. 
A coisa pode ficar ainda mais complexa quando bits diferentes representarem itens 
diferentes. Por exemplo, um bit pode representar os valores 0 ou 1, enquanto outro bit 
adjacente pode representar os valores falso ou verdadeiro. Olhando apenas para os bits, 
não é possível reconhecer a natureza do que estejam representando. Isto mostra a idéia 
que está por trás das estruturas de dados num computador: dados são o que você definiu. 
Se você usar um bit para representar um valor booleano (falso/verdadeiro), então este bit, 
de acordo com a definição que você deu, representa falso ou verdadeiro. Para que o bit 
tenha significado, é preciso manter a consistência: se você estiver usando um bit para 
representar falso ou verdadeiro, este bit, em todos os pontos do seu programa, deve apenas 
conter a informação falso ou verdadeiro; não pode ser usado para representar cores, 
valores, ou qualquer outro tipo de item. 
 
 
 9 
 
Como a maioria dos itens que precisam ser representados possuem mais do que dois 
valores, bits únicos não são o tipo de dado mais usado. Conjuntos de bits são os tipos mais 
utilizados em programas e valem uma análise mais detalhada. 
O nibble 
Um nibble é um conjunto de quatro bits. Não seria um tipo de dado muito interessante não 
fosse a existência de dois itens especiais: números BCD (binary coded decimal) e números 
hexadecimais. Um dígito BCD ou um dígito hexadecimal precisa exatamente de quatro bits 
para ser representado. Com um nibble podemos representar até 16 valores distintos. No 
caso dos números hexadecimais, cada um dos valores 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, 
E e F é representado por quatro bits. Quaisquer 16 valores distintos podem ser 
representados por um nibble, mas os mais importantes e conhecidos são os dígitos BCD e 
hexadecimais. 
O byte 
Sem dúvida alguma, a estrutura de dados mais importante usada pelos microprocessadores 
80x86 é o byte. Um byte é um conjunto de oito bits, o menor item de dado endereçável no 
80x86. Isto significa que o menor item que pode ser acessado individualmente por um 
programa 80x86 é um valor de oito bits. Para acessar qualquer coisa menor, é preciso ler o 
byte que contenha os dados e usar uma máscara para filtrar os bits desejados. Os bits de 
um byte também são numerados da direita para a esquerda, de 0 a 7. 
 
O bit 0 é o bit de ordem baixa (LSB – Less Significant Bit)) ou bit menos significativo e o bit 7 
é o bit de ordem alta (MSB – Most Significant Bit)) ou bit mais significativo. Os outros bits 
são referenciados pelos seus números. Observe que um byte possui dois nibbles. 
 
O nibble com os bits de 0 a 3 é o nibble LSB e o nibble com os bits de 4 a 7 é o nibble MSB. 
Como o byte possui dois nibbles e cada nibble corresponde a um dígito hexadecimal, 
valores byte são expressos através de dois dígitos hexadecimais. 
Como um byte possui 8 bits, ele pode representar 28 = 256 valores diferentes. Geralmente 
um byte é utilizado para representar valores numéricos positivos de 0 a 255, valores 
numéricos com sinal de -128 a 127, os códigos dos caracteres ASCII e outros tipos 
especiais de dados não necessitem de mais do que 256 valores diferentes. Muitos tipos de 
dados possuem menos do que 256 itens, de modo que oito bits são suficientes para 
representá-los. 
Uma vez que o 80x86 é uma máquina de bytes endereçáveis, é mais eficiente manipular um 
byte completo do que um bit individual ou um nibble. Por esta razão, a maioria dos 
programadores usam o byte completo para representar tipos de dados, mesmo quando 
possuam menos do que 256 itens. Por exemplo, é comum representar os valores booleanos 
falso e verdadeiro com 0000 0000 e 0000 0001. 
 
 
 10 
 
O uso mais importante do byte é, 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. Pesquise sobre a tabela ASCII de 
caracteres/códigos. 
 
 
 
O word 
O word (palavra) é um grupo de 16 bits, numerados da direita para a esquerda de 0 a 15. 
 
O bit 0 é o LSB e o bit 15 o MSB. Os restantes são referenciados pelos seus números. 
Observe que o word é composto por dois bytes. O byte com os bits de 0 a 7 é o bytemenos 
significativo ou de ordem baixa (O.B.) e o byte com os bits de 8 a 15 é o byte mais 
significativo ou de ordem alta (O.A.) 
 
É claro que um word também pode ser dividido em quatro nibbles. O nibble menos 
significativo no word, de O.B., é o nibble 0 e o nibble mais significativo no word, de O.A., é o 
nibble 3. 
 
Com 16 bits é possível obter 216 = 65.536 valores diferentes. Estes podem ser valores 
numéricos positivos de 0 a 65.535, numéricos com sinal de -32.768 a 32.767 ou qualquer 
outro tipo de dado que possua até 65.536 valores. Words são usados principalmente para 
três tipos de dados: valores inteiros, deslocamentos (offsets) e valores de segmento. 
Words podem representar valores inteiros de 0 a 65.535 ou de -32.768 a 32.767. Valores 
numéricos sem sinal são representados pelo valor binário que corresponde aos bits no word. 
Valores numéricos com sinal usam a forma de complemento de dois. Valores de segmento, 
que sempre têm comprimento de 16 bits, constituem o endereço de memória de parágrafos 
do código, de dados, do segmento extra ou do segmento da pilha. 
Armazenar ! 
 
 
 
 
 11 
 
O double word 
O double word (palavra dupla) é o que o nome indica: um par de words. Portanto, um double 
word é um conjunto de 32 bits. 
 
Naturalmente, um double word pode ser quebrado em 2 words, 4 bytes ou 8 nibbles. 
 
 
 
 
 
 
Double words podem representar todo tipo de coisa. Em primeiro lugar estão os endereços 
segmentados. Outro item comumente representado por um double word são os valores 
inteiros de 32 bits, que podem ir de 0 a 4.294.967.295, ou números com sinal, que podem ir 
de -2.147.483.648 a 2.147.483.647. Valores de ponto flutuante de 32 bits também cabem 
num double word. Na maioria das vezes, os double words são usados para armazenarem 
endereços segmentados. 
 
 
 
1.7 Sistema Octal e Sistema Hexadecimal 
 
Em projetos de Tecnologias da Informação (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: 
 
 
 
 
 
 
 
 
 
 
 
 
 12 
 
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 
posicional 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. 
 
 
 
 
 
 
 
 
 13 
 
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. 
 
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 =   b
2 +   b1 +   b0 
 
Por exemplo, qual o valor de N2 = 11012 na base 10? Para tanto, basta calcular: 
 
 
 
N10 = 1  2
3 + 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  4
1  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. 
 
 
 
 
 
 
 14 
 
De base 10 para base 2. 
 
Exemplo 1 : Converter o número 40010 para binário. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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 
 
 
 
 
 
 
 15 
 
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. 
 
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 base10 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 8
2 + 7 x 81 + 4 x 80 = 64 + 56 + 4 = 12410 
 
 
 
 
 
 
 
 
 
 
 
 16 
 
De base 10 para base 16 
 
 
 
 
 
 
 
 
 
 
 
 
 
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. 
 
 
 
 
 17 
 
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. 
 
Algumas vezes, não é possível alcançar o fim da parte fracionária porque a represen-
taçã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
0
1
2
1
1
2
0
1
2
1
1
2
1
1
2
1
1
2
1
4
1
16
1
32
1
64
16 4 2 1
64
23
64
0 359375
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 de-
terminar 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. 
 
 
 18 
 
 
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 
fracioná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 inteira: 
 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: 
 
Converter 101.1012 para base 10. 
 
101.1012 = 1 x 2
2 + 0 x 21 + 1 x 20 + 1 x 2-1 + 0 x 2-2 + 1 x 2-3 = 5,62510 
 
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 
 
 
 
 19 
 
Pode-se também utilizar o seguinte método: some todos os pesos das posições no número 
onde os l's binários aparecem. Os pesos das posições inteiras e fracionárias são indicadas 
a seguir. 
INTEIRAS FRACIONÁRIAS 
27 26 25 24 23 22 21 20 
 ponto 
binário 
. 
2-1 2-2 2-3 
128 64 32 16 8 4 2 1 
.5 .25 .125 
Exemplo 1: Converter o número binário 1010 no seu equivalente decimal. Desde que 
nenhum ponto binário é mostrado, o número é suposto ser um número inteiro, onde o ponto 
binário está à direita do número. 
O "bit" mais a direita, chamado o bit menos significativo ou (LSB) tem o menor peso inteiro 
de 20 = 1. 
O "bit" mais a esquerda é o bit mais significativo ou (MSB) pois ele comporta o maior peso 
na determinação do valor do número neste caso, ele tem um peso de 23 = 8. 
Para avaliar o número, some os 
pesos das posições onde os l's 
binários aparecem. Neste 
exemplo, l's aparecem nas 
posições 23 e 21. O equivalente 
decimal é dez. 
Notação Posicional 
Número binário 1 0 1 0 
Pesos posicionais 23 22 21 20 
Equivalente decimal 8+ 0+ 2+ 0= 1010 
 
 
Exemplo 2: Para ressaltar este processo, converter o número binário 101101.112 no seu 
equivalente decimal: 
Notação Posicional 
Número binário 1 0 1 1 0 1 . 1 1 
Pesos posicionais 25 24 23 22 21 20 . 2-1 2-2 
Equivalente decimal 32+ 0+ 8+ 4+ 0+ 1 . 0,5+ 0,25= 45,7510 
 
 
 
 
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. 
 
 
 
 20 
 
 
 
 
 
 
 
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-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. 
 
 
 21 
 
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 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 
 
 
 
 
 
 
 
 22 
 
7310 = 10010012  +7310 = +10010012  010010012 
  -7310 = - 10010012  110010012 
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 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 23 
 
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 
 
 
 
 
 24 
 
 
1.13 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 
 
 
 
 
 
 
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. 
 
LSB 
Least 
Significant 
Bit 
MSB 
Most 
Significant 
Bit 
 
 
 25 
 
 
 
 
 
1.14 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 à mantissa (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 
 
 
 26 
 
precisão, e a segunda parte indica a grandeza do número, representada por uma potência; é 
justamente o valor do expoente quemarca essa grandeza. Portanto, temos: 
N = + M x B+ E 
Onde, 
N – número que se deseja representar 
+ - sinal do número 
M – dígitos significativos do número ( mantissa) 
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 da 
mantissa) e grandeza (expressa pelo expoente) do número. 
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 mantissa 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 a mantissa e o expoente, sendo dispensável representar o "1,", por estar 
sempre presente, sendo, também, desnecessário, armazenar o dois, base do 
sistema. 
 
 
 
 
 
 27 
 
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 da mantissa (normalizada, etc.,). 
3. Modo de representação do expoente. 
4. Quantidade de bits definida para a mantissa e para o expoente. 
5. A posição, no formato, do sinal do número, da mantissa e do expoente. 
6. O valor da base de exponenciação 
Como exemplo, considere o formato abaixo: 
 
 
 
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 2
0. 
2. Mantissa normalizada: 
 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. 
 
 
 
 
 
 28 
 
Representação interna: 
 
0 0001000 100101110110000000000000 
Faixa de Representação 
 
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 da mantissa. 
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: 
 
 
 
 
 
 
 
 29 
 
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. 
CARACTERÍSTICA 
Característica é o expoente, representado na forma de excesso de n, ou seja, 
CARACTERÍSTICA = EXPOENTE + EXCESSO 
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 a mantissa 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 da mantissa. 
 
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. 
 
 
 
 
 30 
 
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, a 
mantissa 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 da mantissa, 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 
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. 
 
 
 
 
 31 
 
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. A 
mantissa passa a ser 0, _ _ _ …. Onde, depois da vírgula, estão os dígitos da 
mantissa, 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 a 
mantissa 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. 
 
SeCARACTERÍSTICA = EXPOENTE + EXCESSO, 
 
sendo M o número de bits para a representação da característica, temos: 
0 = - 2M-1 + EXCESSO logo: EXCESSO = + 2M-1 
Ex: 2M-1 = 2 8-1 = 2 7 
 
 
 32 
 
 
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 2
0 
Normalizando: 11001,12 x 2
0 = 1,100112 x 2
4. 
 
Como o primeiro dígito da mantissa será sempre 1, no caso da base 2, economiza-se um bit 
na mantissa não armazenando o primeiro bit da mantissa, já que está implícito que todos 
os números terão mantissa iniciando com 1. 
Em binário com 23 bits, a mantissa 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 
Portanto, a representação será: 
 
 
 
 33 
 
 
 
 
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 a mantissa tem 23 bits; no formato duplo, o expoente tem 11 
bits e a mantissa 52 bits e no formato quádruplo, o expoente tem 15 bits e a 
mantissa 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. 
 Uma mantissa normalizada começa com um ponto binário, seguido por um bit 1 e 
depois pelo resto da mantissa. 
 
 padrão IEEE 754 consiste no primeiro 1 da mantissa oculto, um ponto oculto e 
depois os bits da fração. Isto é denominado "significando". 
 
 
 34 
 
 
 Todos os números normalizados tem um significando S, no intervalo: 
 
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 
Mantissa 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 
 
 
 
 35 
 
 
 
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 da mantissa (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 à mantissa. 
Note-se que o bit L não é representado (exceto na notação quádrupla). 
 
 
 
 
 
 
 
 
 
 
 36 
 
 
 
Capítulo II - ÁLGEBRA DE BOOLE 
 
 
Introdução 
 
A manipulação de informações pode ser dividida em três partes básicas: a obtenção dos 
dados, o processamento desses dados e a geração de novos dados. Toda ação envolve, de 
certa forma, tomadas de decisão. Compreender o raciocínio humano que rege as tomadas 
de decisão possibilita que o mecanismo seja implantado em sistemas artificiais. 
 
A lógica pode ser vista como um ramo de estudos da matemática que fornece elementos 
para a tentativa de modelagem do raciocínio humano. A lógica formal fornece uma 
linguagem estruturada para a definição e a manipulação de argumentos. 
Argumentos são conjuntos de enunciados, dos quais um deles é definido como conclusão 
e os demais como premissas. 
 
Quanto à validade, os argumentos podem ser divididos em: dedutivos e indutivos. 
Em um argumento dedutivo, premissas verdadeiras conduzem a uma conclusão verdadeira. 
Nos argumentos indutivos, premissas verdadeiras não garantem uma conclusão verdadeira. 
 
A lógica dedutiva pode ser dividida em: clássica, complementar, e não-clássica. Atualmente, 
a lógica clássica é mais conhecida como Cálculo de Predicados de Primeira Ordem. 
Exemplos de lógica complementar são: modal (qualquer sistema de lógica formal queprocure lidar com modalidades, tratar de modos quanto a tempo, possibilidade, 
probabilidade, etc.), deôntica (tipo de lógica modal usada para analisar formalmenteas 
normas ou as proposiçõesque tratam acerca das normas) e epistêmica (que se refere à 
epistemologia, à teoria do conhecimento, reflexão sobre a natureza, o conhecimento e suas 
relações entre o sujeito e o objeto). 
 
Alterando-se os princípios da lógica clássica, surgem as lógicas não-clássicas. Alguns 
exemplos são: paracompletas, intuicionistas, não-aléticas, não-reflexivas, probabilísticas, 
polivalentes, fuzzy, etc. 
 
Nesse estudo será abordado apenas um tipo de lógica: binária, bivalente ou clássica. Os 
argumentos serão representados por proposições. Uma proposição é uma sentença 
afirmativa declarativa (ou uma afirmação declarativa ou uma assertiva ou um statement) 
sobre a qual faz sentido se afirmar que a mesma é verdadeira ou falsa. 
 
Valores fixos e variáveis na lógica binária: 
 
– As variáveis representam assertivas (ou proposições ou argumentos). 
– Só existem dois valores fixos que podem ser atribuídos a uma variável. 
– Os dois valores devem ser, do ponto de vista lógico, mutuamente excludentes. 
 
Modelagem lógica de um problema real: 
 
 A formulação de um problema real envolve diversas representações ou codificações. 
 Problema real → um sistema formado por um conjunto de assertivas (statements), 
associadas por meio de conectivos (operadores ou funções). 
 Conectivo → elemento de conexão que é modelado por uma função lógica. 
 
 
 37 
 
 Assertiva → afirmação declarativa (statements) sobre algum elemento do problema, 
a qual é representada por uma variável de asserção do sistema. 
 Variável de asserção → variável do sistema associada a uma assertiva, à qual será 
atribuído um valor fixo lógico (truth value). 
 Valor fixo lógico → representação do estado de uma variável de asserção por meio 
de um símbolo com significado lógico, por exemplo: F/T, F/V, 0/1, 0/5 ou +12/-12. 
 
Uma vez que os dois valores fixos possíveis são mutamente excludentes, naturalmente 
surge 
a idéia de negação (da associação de assertivas, do conectivo, da assertiva, da variável de 
asserção, do valor ou do símbolo). (Fonte: Apostila do Departamento de Engenharia de Telecomunicações da 
Universidade Federal Fluminense(Alexandre Santos de la Veja) 
 
 
2.2 Álgebra Booleana ou Álgebra de Boole 
 
O nome Álgebra Booleana é em homenagem ao 
matemático inglês George Boole que em 1854, publicou 
um livro clássico. Uma investigação das leis do 
pensamento sobre as quais são baseadas as teorias 
matemáticas da lógica e das probabilidades. O propósito 
estabelecido por Boole era o de realizar uma análise 
matemática da lógica. 
 
 
 
 
 
A Álgebra de Boole surgiu inicialmente por ter relações com os problemas que 
apareceram no projeto de circuitos de chaveamento com relês em 1938, Claude E. Shannon 
que era assistente de pesquisa no departamento de engenharia elétrica no MIT, em uma 
versão de sua tese para o grau de mestre de ciências que foi publicada sob o título A 
Symbolic Analysis of Relay and Switching Circuits. Este artigo apresentava um método para 
representação de qualquer circuito consistindo de combinações de chaves e réles por um 
conjunto de expressões combinações matemáticas, e foi desenvolvido um cálculo para 
manipular estas expressões. O cálculo usado baseava-se comprovadamente na álgebra 
booleana. 
A lógica booleana é a base dos sistemas binários. Usando um sistema de equações 
booleanas é possível representar qualquer algoritmo ou qualquer circuito eletrônico do 
computador. 
A álgebra booleana é um sistema de dedução matemática restrito aos valores zero e 
um (falso e verdadeiro). Operadores binários definidos para este conjunto de valores 
aceitam um par de entradas booleanas e produzem um valor booleano único. Por exemplo, 
o operador booleano AND aceita duas entradas booleanas e produz uma única saída 
booleana (o AND lógico das duas entradas). 
 
 
2.3 Postulados da Álgebra de Boole 
 
A Álgebra de Boole é um sistema constituído por um conjunto S, duas operações 
fechadas ( + , ou, e . , e) definidas sobre S, e por um conjunto de postulados. 
 
 
 
 38 
 
A operação simbolizada por + é chamada operação OU (ou OR). A operação 
simbolizada por . é chamada operação E (ou AND). Os símbolos + e . não tem o mesmo 
significado dos símbolos aritméticos usados para as operações aritméticas de adição e 
multiplicação. 
Uma operação é dita fechada sobre um conjunto se, quando aplicadas a dois ou mais 
elementos pertencentes ao conjunto, origina um outro elemento também pertencente ao 
conjunto. 
 
 
 
Por exemplo: 
 
Se a Є S Є = pertence 
 e b Є S, então (a + b) Є S 
(a . b) Є S 
 
P.1 Associatividade de + e . 
 
(a + b) + c = a + (b + c) 
 
(a . b) . c = a . (b . c) 
 
 
P.2 Comutatividade de + e . 
 
(a + b) = (b + a) 
(a . b) = (b . a) 
 
P.3  (Existência) de um único elemento unitário em relação à operação + 
 
0 + a = a + 0 = a 
 
elemento unitário 
 
P.4  (Existência) de um único elemento unitário em relação à operação . 
 
1 . a = a . 1 = a 
 
elemento unitário 
 
P.5 Distributividade de + sobre . 
 
a + (b . c) = (a + b) . (a + c) 
 
P.6 Distributividade de . sobre + 
 
a . (b + c) = (a . b) + (a . c) 
 
 
 
 
 
 
 
 
 
 39 
 
P.7 Existência de um complemento 
 
( a) ( ā) tal que,  = qualquer que seja 
 a . ā = 0 
 a + ā= 1 
 
 
Aplicação: Qual o complemento de O ? 
Por P.3, O + Ō = 1  Ō = 1 e O . Ō = O, donde O . 1 = O  Ō = 1 
 
 
 
 
2.4 Teoremas Fundamentais 
 
 
Teorema de De Morgan 
 
 
 
 
 
 
 
 
 
 
 
 
Axiomas: 
As variáveis podem tomar um dos valores {0,1} 
 Se X = 0 então X ≠ 1 
 Se X = 1 então X ≠ 0 
 
 
 
Obs.: Um computador clássico tem uma memória feita de bits. Cada bit contém um um ou um zero. Um 
computador quântico mantém um conjunto de qubits. Um qubit pode conter um um, um zero ou uma 
sobreposição de um e zero. Em outras palavras, pode conter tanto um um como um zero ao mesmo tempo. O 
computador quântico funciona pela manipulação destes qubits. 
 
 
 
 
 
 
 
 
 
 
 
 
 40 
 
Teoremas 
 
 
2.5 Funções Booleanas 
 
Chama-se função booleana a uma dada expressão envolvendo elementos e operações 
da álgebra de Boole. 
 
Exemplos: f1 (a,b,c) = a . b + ā . b . c + b . c 
 
f2 (A, B, C, D) = Ā . B + Ā .B . C . D + Ā 
 
Obs.: A notação E, simbolizada pelo . pode ser omitida, podendo-se representar a 
operação a . b simplesmente por ab. 
 
 
TABELA VERDADE (TV) 
São tabelas que representam todas as possíveis combinações das variáveis de entrada 
de uma função, e os seus respectivos valores de saída. 
 
A determinação da tabela verdade de uma função envolve os seguintes procedimentos: 
 
1) Preenchimento das colunas referentes às variáveis da função, registrando-se todas 
as combinações de 0‘s e 1‘s que as variáveis podem assumir. Se a função possuir N 
variáveis, então o número de combinações é igual a 2N. Esse número é igual ao 
número de linhas da tabela verdade. 
 
2) Preenchimento de colunas envolvendo expressões intermediárias. Aqui o número de 
colunas depende d complexidade da função. 
 
3) Preenchimento da coluna de saída, que é uma manipulação lógica das colunas que 
envolvem expressões intermediárias e da função em si. 
 
 
 
 
 
 
 
 41 
 
Exemplo: Representar numa TV a função: f (a,b,c,d) = a . (a + b . d . c) 
 
 
 a b c d d c b d c a + b. d . cf (a,b,c,d) 
 0 0 0 0 1 1 0 0 0 
 0 0 0 1 0 1 0 0 0 
 0 0 1 0 1 0 0 0 0 
 0 0 1 1 0 0 0 0 0 
 0 1 0 0 1 1 1 1 0 
 0 1 0 1 0 1 0 0 0 
 0 1 1 0 1 0 0 0 0 
 0 1 1 1 0 0 0 0 0 
 1 0 0 0 1 1 0 1 1 
 1 0 0 1 0 1 0 1 1 
 1 0 1 0 1 0 0 1 1 
 1 0 1 1 0 0 0 1 1 
 1 1 0 0 1 1 1 1 1 
 1 1 0 1 0 1 0 1 1 
 1 1 1 0 1 0 0 1 1 
 1 1 1 1 0 0 0 1 1 
 
 
Expressões intermediárias 
 
Quando uma função é igual a 1, diz-se que ela existe, ou que é verdadeira, ou que 
assume o nível lógico alto. Quando uma função é igual a 0, diz-se que ela não existe, ou 
é falsa, ou que assume o nível lógico baixo. 
 
 
Passagem da Tabela Verdade para a expressão algébrica. 
 
Seja a Tabela Verdade: 
 
 
a b f 
0 0 1 
0 1 0 
1 0 1 
1 1 1 
 
 
 
1. O número de termos é igual ao número de 1‘s (huns)da função. No caso o número 
de termo é 3. 
2. Cada termo possui todas as variáveis interligadas pele operação . (E), 
considerando-se a variável barrada se, para uma dada linha onde f é igual a 1(hum), 
a mesma for 0 (zero). 
3. Agrupe os termos na função interligando-os pela operação + ou . 
 
 
 
 
Pode-se obter f como uma somatória de termos 
onde aparecem todas as variáveis observando-
se as regras a seguir: 
 
 
 
 42 
 
Portanto: 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2.6 Aplicações da Álgebra Booleana : Álgebra dos Circuitos 
 
A introdução da Álgebra Booleana no estudo dos circuitos deve-se ao matemático 
americano Claude Elwood Shannon (A Symbolic Analysis of Relay and Switching Circuits - 
1938). 
 
Como vimos, os operadores lógicos são representados por: 
 _____ 
 NOT --> (uma barra horizontal sobre o termo a ser invertido ou negado). 
 E ------> . (um ponto, como se fosse uma multiplicação) 
 OU ----> + (o sinal de soma) 
 
As expressões booleanas podem ser implementadas fisicamente usando-se portas 
eletrônicas ou relês. Cada porta eletrônica é um circuito que tem uma ou mais entradas e 
somente uma saída, que é uma função lógica da entrada. Tanto as entradas das portas 
quanto as saídas assumem níveis de tensão referidos como níveis lógicos 0 ou 1. 
 
Tendo o surgimento em torno do século XIX o Relê é um dispositivo eletromecânico, 
formado por um magneto móvel, que se desloca unindo dois contatos metálicos. O Relê 
pode-se dizer que foi muito utilizado nos sistemas telefônicos no tempo das centrais 
analógicas nas localidades mais remotas. 
 
Relé industrial miniatura. 
 
 
 
 
 43 
 
Utilização e Aplicações dos Relés 
 
Imagem 1 
Benefícios para a utilização de relés 
- Um relé pode acionar mais de um 
circuito ao mesmo tempo com único sinal; 
- Os sinais de saída são completamente 
isolados e independentes dos de entrada; 
- A tensão do controle (bobina) pode 
ser muito menor que a dos contatos 
(saída); 
- Um relé pode controlar sinais DC através 
de tensão AC e vice-versa. 
 
 
 Imagem 2 
Aplicações para relés 
-Isolação elétrica entre 
motores/solenóides em campo e circuitos 
de comando; 
- Proteção de entradas e saídas de CLP 
através da isolação galvânica; 
-Segurança para acionamentos de 
cargas de alta corrente através de sinais 
de baixa corrente. 
 
Para mais informações consulte: http://www.newtoncbraga.com.br/index.php/como-funciona/597-como-funcionam-os-
reles?showall=1&limitstart. 
 
 
As Portas lógicas ou circuitos lógicos, são dispositivos que operam um ou mais sinais 
lógicos de entrada para produzir uma e somente uma saída, dependente da função 
implementada no circuito.São geralmente usadas em circuitos eletrônicos, por causa das 
situações que os sinais deste tipo de circuito podem apresentar: presença de sinal, ou "1"; e 
ausência de sinal, ou "0". 
 
As situações "Verdade" e "Falso", como vimos, são estudadas na Lógica Matemática 
ouLógica de Boole; origem do nome destas portas. 
 
O comportamento das portas lógicas é conhecido pela Tabela Verdade que apresenta os 
estados lógicos das entradas e das saídas. 
 
 
 
 
Diagramas de Portas Lógicas. 
 
 
 
 44 
 
 
As Portas Lógicas e Relés atuam de modo semelhante à abertura e fechamento de 
interruptores. Um interruptor é um dispositivo ligado a um ponto de um circuito, que pode 
assumir um dos dois estados, "fechado" ou "aberto". No estado "fechado" (que 
indicaremos por 1) o interruptor permite que a corrente passe através do ponto, enquanto no 
estado "aberto" (que indicaremos por 0) nenhuma corrente pode passar pelo ponto. 
 
Assim, considerando-se os operadores lógicos booleanos, NOT, AND e OR poderíamos ter 
as seguintes tabelas verdades e sua implementação com interruptores: 
 
 
 
Função e Tabela Verdade Circuito com Interruptores 
 
 
 
 
 
 
 
 
 
 
2.7 Formas Canônicas 
 
A partir da tabela verdade, é possível chegar à expressão que representa o 
comportamento de um circuito, e em seguida construir o circuito, usando as portas lógicas já 
estudadas. O processo de elaboração da expressão usa as chamadas formas canônicas, 
que consistem em regras para representar as condições de entrada que: 
a) produzirão saída 1 (e portanto as demais condições produzirão saída 0) ou 
alternativamente, 
b) produzirão saída 0 (e portanto as demais condições produzirão saída 1). 
São, portanto, duas as formas canônicas: 
a) Forma normal disjuntiva: quando ela está formada pela soma de MINITERMOS. Um 
minitermo é um produto de todas as variáveis da função (barradas ou não) - 
representa as condições que produzem saída 1; 
 
 
 45 
 
b) Forma normal conjuntiva: quando está representada por produtos de 
MAXITERMOS. Um maxitermo é representado pela soma de todas as variáveis 
(barradas ou não) da função - representa as condições que produzirão saída 0. 
 
 
Exemplos: 
 
Minitermos: 
 
 
 
 
Maxitermos: 
 
 
Essas formas são alternativas, isto é, a expressão poderá ser encontrada aplicando-se 
alternativamente UMA ou OUTRA das formas. 
 
 
Soma dos Minitermos 
 
É produzida construindo: 
 um termo (uma sub-expressão) para cada linha da tabela verdade (que representa uma 
combinação de valores de entrada) em que a saída é 1, 
 cada um desses termos é formado pelo PRODUTO (FUNÇÃO AND) das variáveis de 
entrada, sendo que: 
 quando a variável for 1, mantenha; 
 quando a variável for 0, complemente-a (função NOT). 
 a função booleana será obtida unindo-se os termos PRODUTO (ou minitermos) por 
uma porta OR (ou seja, "forçando-se" a saída 1 caso qualquer minitermo resulte no valor 1). 
Dessa forma, ligando os termos-produto (também chamados minitermos) pela porta OR, 
caso QUALQUER UM dos minitermos seja 1 (portanto, caso qualquer uma das condições 
de valores de entrada que produz saída 1se verifique), a saída pela porta OR será também 
1. Ou seja, basta que se verifique qualquer uma das alternativas de valores de entrada 
expressos em um dos minitermos, e a saída será também 1, forçada pelo OR. Caso 
nenhuma dessas alternativas se verifique, produz-se a saída 0. 
 
Exemplo: 
 
 
 
 
 
 
 46 
 
PRODUTO DOS MAXITERMOS 
 
É produzida construindo: 
 um termo (uma sub-expressão) para cada linha da tabela verdade (que representa uma 
combinação de valores de entrada) em que a saída é 0, 
 cada um desses termos é formado pela SOMA (FUNÇÃO OR) das variáveis de entrada, 
sendo que: 
 quando a variável for 0, mantenha; 
 quando a variável for 1, complemente-a (função NOT). 
 a função booleana será obtida unindo-se os termos SOMA (ou maxitermos) por uma 
porta AND (ou seja, "forçando-se" a saída 0 caso qualquer minitermo resulte no valor 0). 
Dessa forma, ligando os termos-soma

Continue navegando