You are on page 1of 47

Arquitetura e Organizao de

Computadores
ARITMTICA COMPUTACIONAL

Evoluo das Tecnologias Computacionais


Tpicos:

Representao da Informao
Introduo: a ULA

Nmero Com Sinal e Sem Sinal


Adio e Subtrao

Representao da Informao
Toda informao introduzida em um computador (sejam dados ou instrues) precisa ser interpretada pela
mquina:
O computador, sendo um equipamento eletrnico, armazena e movimenta as informaes internamente sob
forma eletrnica; esta pode ser um valor de voltagem ou de corrente.
Para que essa mquina pudesse representar eletricamente todos os smbolos utilizados na linguagem humana,
seriam necessrios mais de 100 diferentes valores de voltagem.
Complexidade de construo
Baixa confiabilidade
Ex: ENIAC (sistema decimal)

IAS (sistema binrio)

Representao Decimal
Utiliza 10 algarismos de [0 - 9].
Desvantajosa em face de inconvenientes de custo e
confiabilidade.
Consumo de Energia
Dissipao de Calor

Necessidade de usar 10 nveis diferentes de tenso.

Representao Decimal
Mais complexidade para lidar com as constantes variaes da
tenso de entrada.

Pode ocasionar conflitos na interpretao de valores


.Considerar margens de tolerncia maiores.
Acarreta maior consumo de energia e potncia.
Aumento na quantidade de calor produzido.

Verificou-se que o mais confivel e de menor custo seria adotar


uma menor quantidade de valores de tenso diferentes para
representar os dgitos internamente.

Representao Binria
Vantagens:
Implementao eletrnica

Dois estados (bits)


Robustez a Rudos
Operaes Aritmticas Eficientes
0

3.3V
2.8V
0.5V
0.0V

Ordenao de bits
Na Linguagem humana, o menor elemento de disponvel o caractere.
Ex: a, b, c ...

No entando, um caractere isolado praticamente nada significa para nosso sentido de


comunicao. Por isso:
Conjuntos de caracteres(palavras) so formados para fornecer uma informao til.

Da mesma forma preciso organizar as informaes manipuladas por um


computador em grupos de bits, de modo a terem um significado til.

Ordenao de bits
IBM
A primeira definio formal atribuda a um grupo ordenado de bits (byte).
Manipulao interna mais eficiente.
Utilizada por praticamente todos os fabricantes de computadores.

Byte
Servir de elemento de referencia para a construo e funcionamento dos dispositivos de
armazenamento.
Referencia para os processos de transferncias de dados entre perifricos.
CPU -> MP
Impressoras

Ordenao de bytes
De forma similar a ordenao de bits:
Bytes so ordenados para formao de palavras.

Lembrando que:

32-bit 64-bit
Words Words
Addr
=
0000
??
Addr
=
0000
??
Addr
=
0004
??

Memria um vetor de bytes (cada um com um endereo),


mas acesso ocorre palavra a palavra
Endereos de palavras subsequentes diferem de 4 em
mquina de 32 bits

Addr
=
0008
??

Addr
=
0012
??

Addr
=
0008
??

Bytes Ender.
0000
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015

Ordenao de bytes
Como organizar os bytes de uma palavra (4 bytes)?

Big Endian (computadores MIPS, ARM, Sun, Mac)


byte menos significativo com maior endereo

Little Endian (computadores AMD, Intel)


Byte menos significativo no menor endereo

Exemplo
Endereo de memria tem valor 0x01234567 (hexa)
Big Endian

0x100 0x101 0x102 0x103

01
Little Endian

23

45

67

0x100 0x101 0x102 0x103

67

45

23

01

ULA Unidade de Lgica e Aritmtica


A ULA (ou ALU - Arithmetic and logic unit)
a parte do computador que de fato executa as
operaes aritmticas e lgicas sobre os dados.
A ULA constitui a essncia de um computador.

ULA Unidade de Lgica e Aritmtica


Todos os outros elementos do computador
unidade de controle
Registradores
Memria
E/S
servem para trazer os dados a serem
processados pela ULA e receber os resultados
das operaes efetuadas

ULA Unidade de Lgica e Aritmtica


A ULA:
Baseada em dispositivos lgicos digitais simples
Efetua operaes simples de lgica booleana

ULA Unidade de Lgica e Aritmtica


Entradas e sadas:

ULA Unidade de Lgica e Aritmtica


Entradas e sadas:
Os dados so fornecidos ULA em
registradores
os resultados de uma operao so
armazenados em registradores.
registradores so reas de armazenamento
temporrio

ULA Unidade de Lgica e Aritmtica


Entradas e sadas:
ULA pode ativar bits especiais (flags) para
indicar o resultado de uma operao.

Por exemplo, caso o resultado de uma operao


exceda a capacidade de armazenamento de um
registrador, isso indicado atribuindo o valor 1
ao bit de overflow.

ULA Unidade de Lgica e Aritmtica


Entradas e sadas:

A unidade de controle fornece sinais para


controlar a operao da ULA e a
transferncia de dados entre a ULA e os
registradores.

Representao de nmeros inteiros


No sistema de nmeros binrios, podemos representar um
nmero qualquer em dgitos 0 e 1.
Exemplos:

3 = 11
21 = 10101
56 = 111000

Representao de nmeros inteiros


No sistema de nmeros binrios, podemos representar um
nmero qualquer em dgitos 0 e 1.
Exemplos:

3 = 11
21 = 10101
56 = 111000

Vamos entender o processo de notao!

Notao Posicional
A forma mais empregada de representao numrica.
Os algarismos componentes de um nmero assumem valores diferentes,
dependendo de sua posio relativa ao nmero.
O valor total do nmero a soma dos valores relativos de cada algarismo.
Ex: considere o nmero 1303, representado na base 10, escrito da seguinte forma:
(1 3 0 3)10

1 x 103 + 3 x 102 + 0 x 101 + 3 x 100


1000 + 300 + 0
+ 3

Notao Posicional
Generalizando:
N = dn-1.bn-1 + dn-2.bn-2 + ... + d1.b1 + d0.b0
dx = dgito x do nmero
b = base
n = o nmero de dgitos inteiros

Exemplo: nmero 3.748 na base 10

n = 4,
b=10,
d3=3, d2=7, d1=4, d0=8

N = 3.103 + 7.102 + 4.101 + 8.100

Notao Posicional
Utilizando a notao posicional indicada na Eq. 3.1 representam-se
nmeros em qualquer base:
(1011)2 - na base 2
(342)5 - na base 5
(257)8 - na base 8
No entanto, nas bases diferentes de 10, o valor relativo do algarismo
calculado usando-se os valores resultantes de operaes aritmticas em
base 10.

Transformao de Bases
Uma vez entendido a notao posicional, podemos exercitar a
converso de nmeros de uma base para outra.
Base Binria para Decimal
Base Hexadecimal para Decimal
Base Decimal para Binria
Base Binria para Hexadecimal
Base Hexadecimal para Binria

Transformao de Bases
Base Binria para Decimal

Consistem em aplicar a equao da notao posicional. Ento:


(101011)2 = ()10
b=2
n=6
N = 1 x 25 + 0 x 24 + 1 x 23 + 0 x 22 +1 x 21 + 1 x 20
N = 43

Transformao de Bases
Base Hexadecimal para Decimal
(27)16 = (10909)10

Transformao de Bases
Base Decimal para qualquer base B

Enquanto o dividendo for maior que o divisor:


1. Dividir o dividendo por divisor
2. Extrair o resto como algarismo e coloc-lo esquerda do anterior.
3. Repetir

Usar o dividendo (que agora menor que o divisor) como ltimo algarismo
esquerda (algarismo mais significativo).

Transformao de Bases
Exemplo

(12)10 = (1100)2

(490)10 = (1)16

1EA

Transformao de Bases
Base Binria para Hexadecimal

Como 16 = 24 , um nmero binrio (base 2) pode ser facilmente convertido


para o seu valor equivalente base 16 (hexadecimal).
Se o nmero binrio for inteiro, basta dividi-lo, da direita para esquerda, em
grupos de 4 bits.

Transformao de Bases
Exemplo
(1011011011)2 = (2)16

(0010)2

(2)

(1101)2

(1011)2

(D) (B)

Perceba a insero de zeros para formao do grupo de 4 bits.

Transformao de Bases
Base Hexadecimal para Binria
O processo de converso apresenta o mesmo princpio antes apresentado.

(50)16 = (2)16

(1111)2

(0101)2

(0000)2

(F) (5) (0)

Aritmtica Binria
SOMA: Semelhante soma decimal
0+0 = 0
0+1 = 1+0 = 1
1+1 = 0, com vai 1
1 1111
Ex:

101101
+ 101011
1011000

vai 1

Aritmtica Binria
SUBTRAO: Semelhante, porm o emprstimo a base de
trabalho (na base decimal quando temos 0-N pegamos 10
emprestado ao algarismo da esquerda).
Casos bases:

0-0=0, 1-1=0, 1-0=1, 0-1 => emprstimo

Ex:

101101
100111
000110

minuendo
subtraendo
diferena

1001
110
0011

Aritmtica Binria
Multiplicao: Semelhante ao sistema decimal.
Em um sistema numrico posicional, o deslocamento (shift) de um
nmero um posio para a esquerda ou para a direita equivalente,
respectivamente, a multiplicao ou diviso desse nmero pela sua base.

Lembram da funo swap em MIPS:

sll $2, $5, 2

:. $5 -> Posio k do array.

Aritmtica Binria
Diviso: Semelhante ao sistema decimal.
110 |10
- 10 11
010
- 10
00

Representao de nmeros inteiros


Se quisermos representar apenas nmeros inteiros no
negativos
Isso no um problema.
Considerando uma palavra de 8 bits, podemos representar de 0 a 255

Mas como representar o sinal


para diferenciar nmeros
negativos/positivos?

Representao de nmeros negativos


Para representar nmeros negativos usamos o sinal - e a vrgula
para partes decimais.
Exemplo:

Entretanto, no computador no possvel usar os sinais de - e


vrgula.
Apenas dgitos binrios (O e 1).

Representao de nmeros negativos


Representao de sinal magnitude
A forma mais simples
um bit de sinal a representao do sinal-magnitude
Em uma palavra de n bits, os n - 1 bits mais direita representam a magnitude

Representao de nmeros negativos


Representao de sinal magnitude
Desvantagens:

1) Efetuar operaes de adio e subtrao, preciso considerar tanto a magnitude quanto o sinal
dos dois operandos.
2) H duas representaes para o zero:

Inconveniente pois mais difcil testar se um nmero igual a zero (e essa teste feito muito
frequentemente na ULA).

Representao de nmeros negativos


Representao em complemento de 2
Tambm usa o bit mais significativo como bit de sinal

Se um nmero positivo ou negativo basta avaliar o bit mais significativo.


0 = Positivo 1 = Negativo.

Eliminamos a existncia de dois zeros da representao sinal magnitude.

Abordagem mais comum que o sinal magnitude.

Nmeros negativos nas mquinas atuais so complemento de dois dos nmeros positivos.
Transformar um nmero em negativo aplicamos uma funo NOT e aps isso adicionamos 1.
Ex: 00001010 = Inverso dos bits = 11110101 + 1 = 11110110
(10)

(-10)

Representao de nmeros negativos


Decimal

Binrio s/ sinal

Binrio
(Compl. 2)

-8

1000

-7

1001

-6

1010

-5

1011

-4

1100

-3

1101

-2

1110

-1

1111

000

0000

001

0001

010

0010

011

0011

100

0100

101

0101

110

0110

111

0111

1111 (-1)
0001 (1)
1110 (-2)

0110 (6)
0001 (1)
0111 (7)

Ex:

Ex:

Mas como representar


nmeros REAIS?

Padro IEEE para floats


O padro IEEE 754 para ponto (vrgula) flutuante a representao mais
comum para nmeros reais em computadores modernos.
O padro (ou norma) IEEE 754 define dois formatos bsicos para os
nmeros em ponto flutuante:
Preciso simples, com 32 bits;
Duplo com 64 bits (double).

Padro IEEE 754 para floats


Simples (32bits)

Expoente(+/-)
Sinal
1 [bit31] 8 [bits30-23]

Significando
23 [bits22-00]

Dupla (64 bits)

1 [bit63] 11 [bits62-52]

52 [bits51-00]

Sinal: 0 = + e 1 = Combinaes Sinal + Expoente + Significando

Preciso Simples - 32-bit


S
1

23
-1S 1.M 2E - 127

E um inteiro em complemento de dois. Logo o expoente real E 127.


O sinal da mantissa representado em um bit separado.

Exemplo nmero inteiro


Valor 15213
11101101101101

Normalizando o valor
1,1101101101101 * 2^13

Mantissa M
1,11011011011010000000000

Expoente
E = 13
exp = E + Bias = 13 + 127 = 140 = 10001100

Sinal
S=0

Representao: 0 10001100 1011011011010000000000

Exemplo numero real


Valor 178,125
10110010,001

Normalizando o valor
1,0110010001 * 2^7

Mantissa M
1, 01100100010000000000000

Expoente
E=7
exp = E + Bias = 7 + 127 = 134 = 10000110

Sinal
S = 0 Representao: 0 10000110 01100100010000000000000

Erro na representao de floats


Nmero finito de bits na representao (nmero apenas maior
na preciso dupla), implica em truncamento (ou
arredondamento) do nmero real a ser representado. Truncamento
introduz erro na representao.
Casos especiais:
Overflow: nmero a representar maior que maior nmero possvel de ser
representado
Underflow: nmero a representar menor que menor nmero possvel de
ser representado

Referncia
STALLINGS, WILLIAM. 8a Edio. New York: Prentice
Hall, Cap. 19.

Patterson
Captulo 3

You might also like