Aula representação em excesso



Baixar 39,23 Kb.
Encontro25.12.2017
Tamanho39,23 Kb.

Aula 4

1) Representação em excesso

Padrão de bits SM C2

000 0 0

001 +1 +1



010 +2 +2

011 +3 +3

100 0 -4

101 -1 -3

110 -2 -2

111 -3 -1


SM (sinal e magnitude)

C2 (complemento a 2)


Utilizando as representações SM e C2 não podemos comparar dois números como inteiros sem sinal. (SM: 111 é menor que 110, i.e. -3 é menor que -2


C2: 100 é menor que 011, i.e., -4 é menor que +3)

A representação em excesso permite que possamos comparar o padrão de bits referentes a cada inteiro com sinal, considerando que o padrão de bits representa inteiros sem sinal.


xbias=x + bias



Exemplo:

Padrão de bits ISS Excesso de 2 (bias ou excesso =2)

000 0 -2 0 = x + 2 => x=-2

001 1 -1 1 = x + 2 => x=-1

010 2 0 2 = x + 2 => x=0

011 3 +1


100 4 +2

101 5 +3


110 6 +4

111 7 +5


(Podemos comparar 111 e 000 e chegar a conclusão que 111 é maior que 000, i.e., +5 é maior que 000)
Necessita-se definir o número de bits a ser utilizado e o valor de bias.


Escolhendo o bias: Para obter uma distribuição homogênea de valores acima e abaixo de 0, escolhe-se bias igual a 2n-1 ou (2n-1)-1, onde n é o número de bits disponíveis. Dados 4 bits, o valor de bias será 23=8, de modo que o resultado represente metade de números positivos e metade de negativos.

Exemplo: Como representar +3 utilizando representação em excesso com 4 bits?

bias = 24-1 = 8 e xbias= x + bias

xbias= 3 + 8 = 11, cuja representação é 1011

Exemplo: Dada a representação 0110, qual número ele está representando, considerando 4 bits?
0110 => 6 = x + bias = x + 8 => x = 6 – 8 = - 2

2) Representação em ponto flutuante

Na representação em ponto fixo, a vírgula não é representada mas assumida em uma posição (sabe-se que está logo depois do primeiro dígito a esquerda) .


Nas máquinas atuais utiliza-se a vírgula na posição mais a direita para representar inteiros.

Números fracionários utilizam a representação em ponto flutuante.


Exemplo: 3,141592565


2,71828
1,0 x 10 -9
3.155.160.000 = 3,15576 x 10 9

Maior número com 32 bits: 2.147.483.648




Utiliza-se a notação científica:

Um único dígito à esquerda do ponto decimal: 1,0 x 10 -9, 3,15576 x 10 9

(Na matemática conhecida como notação científica e na computação como ponto flutuante)

N = +- F x B+- E


N: número que se deseja representar:

+-: sinal do número

F: dígitos significativos do número

B: base de exponenciação

+-E: valor do expoente, com seu sinal (normalmente utiliza-se o método sinal e magnitude para representar o expoente com sinal)


Notação científica normalizada: não possui zero antes da vírgula
0,1 x 10 -8 10,0 x 10 -10, não normalizadas
1,0 x 10 -9 1,0 x 10 -9, normalizadas


Números binários em notação científica normalizada
(1,0)2 x 2-1


Representação de um número na base 2 em ponto flutuante
(1,mmmmm)2 x 2 yyy

Vantagens de se usar esta notação:



  • Padrão para trocar dados

  • Simplifica aritmética pois os números estão padronizados

  • Aumenta precisão dos números que podem ser representados porque não desperdiça dígitos.
    Exemplo: 0,000012 x 10 -2 = 1,2 x 10 -7

2.1 ) O que tem que ser representado ?
N = (+/-) 1,mmmmmmm x 2yyyyyyyyy

Sinal Mantissa Expoente__vai_ser_representado_em_sinal_e_magnitude___Mantissa__vai_ser_representada_em_binário'>Expoente

(em amarelo não precisa ser representado)
|----------------------------------------|

| S | Expoente | Mantissa |

|----------------------------------------|

1 bit 7 bits 24 bits


Questões:

  • Quantos bits utilizar para mantissa e expoente ?

  • Qual a representação utilizada para mantissa e expoente? sinal e magnitude ou complemento a 2 ?


Exemplo:
Suponha que S=0, positivo, S=1, negativo
Expoente vai ser representado em sinal e magnitude

Mantissa vai ser representada em binário

Fórmula: N = (+/-)1,M x 2 E

N=+407,375 = (110010111,011)2 = 110010111,011 x 20

=>1,M x 2E = 1,10010111011 x 2+8


S = 0 (número positivo)
E = +8, utilizando-se 7 bits para representar o expoente, teremos a representação: 0001000 pois 8 = (1000)2
M=10010111011 (11 bits) completa 0s até chegar a 24bits.
Sinal Mantissa Expoente

|-------------------------------------------------------|

| 0 | 0001000 |10010111011000000000000000000000000|

|-------------------------------------------------------|

1 bit 7 bits 24 bits

2.2) Dado o número em ponto flutuante, qual o decimal a ele associado ?
Exemplo: (04D00000)16

1) Convertendo de base 16 para base 2:

0000 0100 1101 0000 0000 0000 0000 0000
2) N = 1,M x 2E

0 0000100 110100000000000000000000


S=0, E=+4, M=D=1101
N=+1,1101 x 24 = 11101 = +29,0

2.3) Formato (padrão) IEEE 754 para ponto flutuante

|31|30|29|28|27|26|25|24|23|22|21|....................|0|

|-------------------------------------------------------|

|S |Expoente | Mantissa |

|-------------------------------------------------------|

1 8 23


bit bits bits 32 bits ao todos
N = (-1)S x (1+M)x2E =(-1)S x (1,M)x2E

(mantissa = M = 0,.....)


Precisão simples: 8 bits para expoente e 23 para mantissa
Precisão dupla: 11 bits para expoente e 52 bits para mantissa

Expoente: utiliza-se notação em excesso

Decisões do IEEE 754:

i) Sinal mais à esquerda para facilitar a comparação com zero: é fácil saber se o número é maior ou menor que 0 só olhando 1 bit, não precisando ler o resto. (Sinal é igual a 1 se número negativo e igual a 2 se positivo.)

ii) Colocar o expoente antes da mantissa facilita ordenação de inteiros (que possuem o mesmo sinal). Quando um número flutuante possui um expoente muito grande, significa que o número é grande, e o inverso também se aplica.

iii) Utilização de notação com excesso para expoente. Se qualquer outra notação, como complemento a 2 ou sinal e magnitude que utilizam 1 no bit mais significativo para representar um expoente negativo, um expoente negativo qualquer iria parecer um número grande.


Suponha que temos 1 bit para sinal, 3 bits para expoente e 6 para mantissa.
Se usarmos complemento a 2 para expoente:
2 = 102 = 1,0 x 2+1 = 0 001 000000 pois S=0 (positivo); E= 1; e M=0
0,5 = 0,10 = 1,0 x 2-1 = 0 111 000000 pois S=0 (positivo); E=Bn-N = 8-1 = 7 = 111; e M=0
Não iria funcionar a comparação entre 2 e 0,5 pois analisando o expoente iríamos achar que 0,5 é bem maior que 2.
Exemplo: Com 3 dígitos, excesso ou bias = 2n-1 = 23-1=4
Padrão de bits ISS Excesso de 4 (bias ou excesso =4)

000 0 -4 0 = x + 4 => x=-4

001 1 -3 1 = x + 4 => x=-3

010 2 -2 2 = x + 4 => x=-2

011 3 -1

100 4 0


101 5 +1

110 6 +2


111 7 +3 7 = x + 4 => x=+3
O expoente mais negativo tem a representação 0000...000, e o mais positivo tem a representação 111...11: Exemplo: -4 = 000 e +3 = 111
Realizando a soma com números representados em excesso de 4:
+3 – 3 = 0 => 111 – 001 => 100
N=+1,01 x 2-4 = 0 000 010000

N=+1,01 x 2+1 = 0 101 010000



©livred.info 2017
enviar mensagem

    Página principal