You are on page 1of 52

Introduo aos Algoritmos

Fundamentos Parte II
Armazenamento de Dados e Representao Numrica

Dilson Lucas Pereira

Armazenamento de Dados

Dados

Dados podem ser: texto, imagens, udio, vdeo, etc


Como o computador lida com todos estes tipos de
dados?

Um computador para cada tipo? invivel

Assume uma representao uniforme

Todos os que entram no computador so transformados


para esta representao, e transformados de volta quando
saem

Padro de bits

Dados

Bit: 0 ou 1

Byte: 8 bits

Padro de bits: sequncia (ou string) de bits

001010001010100001100101000010...

Como a memria sabe que tipo de dados aquele padro


representa?

No sabe!

de responsabilidade do programa e dispositivos de entrada e


sada dar sentido ao padro

Texto

Texto uma sequncia de smbolos em alguma


lngua
Geralmente cada smbolo representado por um
padro de tamanho fixo
A = 10000001, B = 10000010,
O nmero de smbolos que pode ser representado
depende do tamanho desta sequncia

n bits 2n possibilidades

Padres

ASCII (ingls) : 7 bits (128 smbolos)

ASCII estendido: 8 bits (256 smbolos)

Unicode (outros idiomas): 16 bits (65536 smbolos)

etc

Imagem

Formato bitmap e formato


vetorial
Bitmap

A imagem interpretada como


uma matriz de pixels (pontinhos)

Cada pixel representado por


um padro que representa as
informaes daquele pixel

Ex: RGB (red green blue)

1 byte para cada cor

Imagem

Vetorial

A imagem decomposta
em pontos, linhas, curvas,
polgonos, etc

Estes elementos podem ser


representados por
expresses matemticas

Bitmaps sofrem perda de


qualidade quando
aumentados

Imagens vetoriais no

Representao Numrica

O Sistema Decimal

o sistema numrico adotado mundialmente

Base 10 (10 smbolos para cada dgito)

Primeiro dgito: dezenas, segundo dgito: centenas,


terceiro dgito: milhares...

Primeiro dgito: 100, segundo: 101, terceiro 102,...

Ex: 1578 = 8x100 + 7x101 + 5x102 + 1x103

O Sistema Binrio

Tem base 2

Dois dgitos: 0 e 1

Primeiro dgito: 20, segundo: 21, terceiro, 22,

Ex: 11110011 = 1x20 + 1x21 + 0x22 + 0x23 + 1x24 +


1x25 + 1x26 + 1x27 = 243

Converso Binrio-decimal

Multiplique cada dgito por seu peso, como no


exemplo anterior
Ex: 0101101 = 1x20 + 0x21 + 1x22 + 1x23 + 0x24 +
1x25 + 0x26 = 45

Converso Decimal-binrio

Se d por meio de sucessivas divises:


1. q nmero a ser convertido
2. k 1
3. Se q = 0, pare.
4. Seno:
a)
b)
c)
d)
e)

Divida q por 2.
O resto se torna o k-simo dgito.
q quociente
k k+1
Volte ao passo 3

Converso Binrio-decimal

Ex: 45

Ex: 37

45/2: r = 1 q = 22

37/2: r = 1 q = 18

22/2: r = 0 q = 11

18/2: r = 0 q = 9

11/2: r = 1 q = 5

9/2: r = 1 q = 4

5/2: r = 1 q = 2

4/2: r = 0 q = 2

2/2: r = 0 q = 1

2/2: r = 0 q = 1

1/2: r = 1 q = 0

1/2: r = 1 q = 0

101101

100101

Representao de Inteiros

Ex: 134, 5, 7, -5, 0, etc


Computadores consideram duas categorias de
inteiros: Inteiros com sinal e inteiros sem sinal
Inteiros com sinal podem ser representados de trs
maneiras

Sinal e magnitude

Complemento de um

Complemento de dois

Inteiros Sem Sinal

Denota os inteiros de 0 ao infinito


Obviamente o computador no pode armazenar todos estes
nmeros
O maior inteiro disponvel depende da quantidade de
memria (bits) que o sistema usa para representar estes
nmeros

n bits 2n nmeros

Inteiros de 0 a 2n -1

32 bits: 0 a 4.294.967.295

Inteiros Sem Sinal

Para se armazenar um nmero inteiro sem sinal, realiza-se


a converso conforme mostrado anteriormente
Se o nmero tiver mais que n bits, tem-se um overflow,
seno, adicionam-se 0's esquerda at que o nmero
tenha n bits
A representao sem sinal melhora ligeiramente a
eficincia do armazenamento, uma vez que o computador
no precisa armazenar informao relativa ao sinal
Ex: contagem, endereamento

Sinal e Magnitude

Neste formado, usa-se um bit para representar o sinal do


nmero
0: positivo, 1: negativo
Tem-se ento 1 bit a menos para representar o valor
absoluto do nmero em si

Faixa: -2n-1-1 2n-1-1

32 bits: -2.147.483.647 -0 + 0 2.147.483.647

Note que existem dois 0's

+0 0000000

-0 1000000

Sinal e Magnitude

O processo para converter um nmero para este


formato consiste em:

Ignorar o sinal do nmero e convert-lo

Se o nmero tiver menos de n-1 bits, adicionar 0's sua


esquerda at que se tenham n-1 bits

Se o nmero for positivo, adicionar 0 sua esquerda, se


negativo, adicionar 1

Sinal e Magnitude

Para se converter de volta (interpretar), convertemse os n-1 primeiros bits direita, adiciona-se o sinal
de acordo com o ltimo bit
Este formato no utilizado por computadores

Operaes como soma e subtrao no tem


implementao direta

Tem dois 0's, pode confundir programadores

Complemento de Um

Neste formato, nmeros no negativos so


representados da mesma maneira que inteiros sem
sinal
Nmeros negativos so representados como o
complemento de sua contraparte positiva
Nmeros cujo primeiro bit 0 so no-negativos,
nmeros cujo primeiro bit 1 so no-positivos
0 aparece duas vezes

+0 00000000

-0 11111111

Complemento de Um

Faixa: -2n-1-1 2n-1-1

32 bits: -2.147.483.647 -0 + 0 2.147.483.647

Representao:

Ignore o sinal, converta o nmero para binrio

adicione 0's esquerda at que se tenham n bits

Se o sinal (do nmero original) for negativo,


complemente o nmero, isto , inverta os 0's e 1's

Complemento de Um

Ex: Represente +7 em 8 bits

+7 111 00000111

Represente -258 em 16 bits

258 100000010 0000000100000010


1111111011111101

Complemento de Um

Interpretao

Se o bit mais esquerda for 0

Seno

Converta para decimal


Complemente o nmero
Converta para decimal
Coloque o sinal negativo

Ex:

11110110 00001001 9 -9

Complemento de Um

No usado na prtica

Operaes aritmticas no so diretas

Dois 0's

Oferece o fundamento para a representao em


complemento de dois

Complemento de Dois

Para representar um nmero em complemento e dois

Ignore o sinal, converta o nmero para binrio

Se o nmero de bits for menor que n, adicione 0's


esquerda

Se o sinal do nmero original for negativo, deixe os


primeiros bits direita, at o primeiro 1, inclusive, como
esto. Complemente o restante

Complemento de Dois

O primeiro bit representa o sinal

A faixa de nmeros que pode ser representada -2 n-1 2n-1-1

Existe apenas um 0

Converter 000000 resulta em 000000

Converter o menor nmero negativo passvel de


representao resulta em 100000
Representao utilizada pelos computadores

Complemento de Dois

Ex: +7 em 8 bits

111 00000111

-40 em 16 bits

101000 0000000000101000 1111111111011000

Complemento de Dois

Interpretao

Se o bit mais esquerda for 0

Seno

Converta para decimal


Deixe os primeiros bits direita, at o primeiro 1, inclusive,
como esto. Complemente o restante
Converta para decimal
Adicione o sinal

Ex: 11110110 00001010 10 -10

Operaes em Bits

Operaes em bits podem ser aritmticas ou lgicas


Operaes aritmticas compreendem soma, subtrao,
multiplicao, diviso, etc...
Operaes lgicas

Um bit pode ser 0 ou 1. O valor 0 pode ser interpretado


como o valor lgico falso e 1 pode ser interpretado como
verdadeiro.

Desta maneira, podemos aplicar operaes lgicas sobre


estes bits

Operaes Aritmticas em Inteiros

Adio e subtrao
Outras operaes geralmente podem ser construdas
baseando-se nestas duas
Assume-se complemento de dois, representao
mais adotada

Adio em Complemento de Dois

A adio se d de maneira semelhante adio de


nmeros em base decimal

Alinhamos os nmeros e somamos coluna por coluna

Tambm pode ocorrer vai um

0+0=0

1+0=1

1+1= 2 = 10 em binrio (0 e vai um)

1+1+1= 3 = 11 em binrio (1 e vai um)

Adio em Complemento de Dois

Ex: 17+22
1
00010001 +

O ltimo
vai um
ignorado

24+(-17)
11111
00011000 +

00010110

11101111

00100111

00000111

Overflow

127+3

127+3

(8 bits, {-128,...,127})

(9 bits, {-256,...,255})

1111111

1111111

01111111 +

001111111 +

00000011

000000011

10000010 = -126

010000010 = 130

Subtrao

Para subtrair, somamos com o nmero negativo

Ex: 101 62 = 101 + (-62)

Operaes lgicas

Unrias (um operando) ou binrias (dois operandos)

Binrias: e (and), ou (or), ou exclusivo (xor)

Unria: negao

E, ou, ou exclusivo
10011000 and

10011000 or

00110101

00110101

00010000

10111101

10011000 xor
00110101
10101101

Shift

Shift a esquerda: move os bits para a esquerda

Equivalente a multiplicar o nmero por 2

Ex: 00111011 (59) 01110110 (118)

Shift a direita: move os bits para a direita

Equivalente a dividir o nmero por 2

Ex: 00111011 (59) 00011101 (29)

Sistema de Excesso

Com n bits representamos 2n nmeros

0, 1, 2, , 2n-1

Se quisermos representar at K nmeros negativos


podemos fazer um mapeamento
1

K (K+1) (K+2)

-K -(K-1) -(K-2) -(K-K) 1

(2 n-1)

(2 n-1-K)

Sistema de Excesso
Ex: Queremos representar at 20 nmeros negativos
em um em inteiros de 6 bits
0

1 2 20

-20 -19 -18

63

43

Sistema de Excesso

Converso

Adicione K ao nmero

Converta para binrio, adicione 0's esquerda caso necessrio

Interpretao

Converta para decimal

Subtraia K

Ex: K = 127, 8 bits, nmero -25

-25+127 102 01100110

11111110 para decimal, K = 127

11111110 254 (-127) 127

Representao de Ponto-flutuante

Representao de nmeros reais

Converta a parte decimal

Converta a parte real

Coloque o ponto entre as partes

A converso da parte inteira se d como j visto


(sinal e magnitude)

Convertendo-se a Parte Real

Multiplicao sucessiva

x nmero (menor que 1) a ser convertido

k 1

Se x = 0 (ou a preciso desejada foi obtida), pare

Seno

Multiplique x por 2.
A parte inteira se torna o K-simo bit mais esquerda
x parte real
K K+1
Volte ao passo 3

Convertendo-se a Parte Real

Ex: 0,125

Ex: 0,875

0,125 x 2 = 0,250

0,875 x 2 = 1,75

0,25 x 2 = 0,500

0,75 x 2 = 1,5

0,5 x 2 = 1,00

0,5 x 2 = 1,00

0.001

0.111

0x2-1 + 0x2-2 + 0x2-3

1x2-1 + 1x2-2 + 1x2-3

Representao Real

Nem todo nmero pode ser representado exatamente


em binrio
Ex:

0,1

0,2

0,45

Normalizao

Os nmeros so armazenados na forma normalizada


1.xxxxxxxxxxxx

necessrio mover o ponto para a esquerda ou


direita

Mover para direita aumenta o nmero duas vezes, para a


esquerda diminui

Ex: 1010001.1101 26 x 1.01000111001

-0.001110011 -2-3 x 1.110011

Sinal, Expoente e Mantissa

Os nmeros so armazenados em trs partes

Sinal, Expoente e Mantissa

Ex: +1000111.0101 = +26 x 1.0001110101

Sinal: +

Expoente: 6

Mantissa: a parte que sobra, apenas a parte aps o ponto


do nmero normalizado 0001110101

Padres IEEE

IEEE: Institute of Electrical and Electronic


Engineers
Define 3 padres, 2 so adotados

Preciso nica e preciso dupla

Preciso nica: 1 bit para o sinal, 8 para o expoente,


23 para a mantissa
Preciso dupla: 1 para o sinal, 11 para o expoente,
52 para a mantissa

Representao em Preciso nica

Armazene o sinal (0: positivo, 1: negativo)


Armazene o expoente em formato de excesso, K =
127, adicione 0's esquerda caso necessrio
Armazene a mantissa, adicione 0's direita caso
necessrio
Ex: + 26 x 1.101000111001

Sinal: 0, expoente: 6, mantissa: 101000111001

01000010101000111001000000000000

Representao em Preciso nica

Exemplo: -5.125

5 101 (inteiro sem sinal)

0.125 0.100

5.125 101.100 22 x 1.01100 (normalizado)

2 2+127 = 129 10000001 (sistema de excesso)

1 10000001 011000000...

Representao em Preciso nica

Interpretao:

Use o bit mais esquerda como sinal

Converta os prximos 8 bits para decimal usando o


formato de excesso K = 127

Adicione 1. mantissa

Mova o ponto at a posio correta, de acordo com o


expoente

Converta a parte decimal

Converta a parte real

Combine as duas

Representao em Preciso nica

Ex: 10111110011001100000000000000000

Sinal: 1 -

Expoente: 01111100 124 (-127) -3

Mantissa: 11001100... 1.11001100...

-2-3 x 1.110011 -0.001110011 -0.224609375

You might also like