BGames
Olá visitante! Seja bem vindo á BGames!

Para ter total acesso ao nosso fórum é preciso que você se registre.

Registre-se Aqui!


PARA VER LINKS E IMAGENS É PRECISO SE REGISTRAR!


BGames
Olá visitante! Seja bem vindo á BGames!

Para ter total acesso ao nosso fórum é preciso que você se registre.

Registre-se Aqui!


PARA VER LINKS E IMAGENS É PRECISO SE REGISTRAR!

BGames
Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

BGamesEntrar

Fórum de Desenvolvimento de Jogos e Programação


descriptionComo um computador caucula EmptyComo um computador caucula

more_horiz
Explicação básica da soma.
O estado em que um flip-flop se encontra usualmente é associado ao valor binário que ele está armazenando. Desta forma, num dado instante, um flip-flop estará armazenando ou o valor lógico 1 (um) ou o valor lógico 0 (zero), pois esses são os dois valores possíveis para uma variável Booleana.
A soma é uma caracteristica dos flip-flops, desde que devidamente alimentado com energia, um flip-flop pode manter indefinidamente um estado e uma saída, até que os sinais de entrada assumam uma configuração tal que o façam mudar de estado. Funciona como um contador de pulsos, Um FF muda de estado toda vez que recebe um sinal alto (1) na entrada, a saida muda para um nivel alto toda vez que o estado do FF mudar para zero, isso altera o estado do próximo FF.

Digamos que temos 3 FF interligados em seqüencia um na saída do outro, todos em estado baixo. Nesse caso teríamos os seus estados:
000
No clock aplica-se um pulso +1 na entrada do primeiro, ele muda seu estado de 0 par 1, mas não altera a sua saida para o próximo FF, resultado:
001 (corresponde ao 1 decimal)

No clock seguinte mais um pulso de valor +1 é aplicado primeiro FF, novamente ele muda de estado (de 1 para 0) e altera a saida para o proximo FF, mudando o seu estado, fica:
010 (corresponde ao 2 decimal, note que os dois pulsos foram somados)

Ao aplicar mais um pulso no primeiro FF ocorre novamente a sua mudança para o estado alto, resutando:
011 (corresponde à 3 decimal, mais um pulso foi somado)

Seguindo, no proximo input de um nivel alto no primeiro (um), ele retorna ao estado baixo (zero) e muda a saida, o que muda o segundo e depois o terceiro:
100 (corresponde ao 4 decimal)


Digamos que temos dois grupos de FF com a seguinte configuração 1001 e 0101 (9 e 5), aplicando os estados em paralelo noutro grupo de 4 FF, teríamos o resultado de: 1110 (14), note que houve a soma algébrica dos sinais.

Essa é uma soma mais elementar, os tipos de FF podem realizar as operações booleanas citadas anteriormente.

No calculo realizado em seu computador, o tempo é decorrência da quantidade de operações efetuadas, do valor do clock, da quantidade e velocidade da memória disponível, da capacidade do processador, dos algoritmos utilizados, das características elétricas da maquina, do SO e as demais operações simultâneas realizadas.


Complemento de 1 e Complemento de 2 - subtração binária.

A subtração binária pode ser processada na mesma forma do procedimento decimal:

0-0=0
1-0=1
0-1=1
1-1=0

Exemplificando, vamos efetuar 1110 – 1001 = 0101
1110
-1001
0101

Outra forma de subtrair é usar o complemento de 1 ou o complemento de 2.
O complemento de dois (C2) é o sistema mais usado para representação de números inteiros com sinal nos computadores modernos.
Para obter C2 determina-se o complemento de 1 (C1) de um número binário; obtém-se o C1 aplicando a função lógica NÃO a cada bit (0 ->1 e 1 ->0). A seguir, soma-se 1 ao C1, obtendo assim o C2.

binário C1 C2
10001001 01110110 01110111
00111100 11000011 11000100
10011111 01100000 01100001
11000101 00111010 00111011
01101011 10010100 10010101

A conversão inversa, ou seja, de um número em representação C2 para a notação binária original é feita obtendo-se novamente o seu complemento de 2.

Podemos utilizar a notação C1 ou C2 para efetuar operações de subtração. O complemento de 1 é uma das formas de se obter o correspondente negativo para um número na convenção de sinais mencionada; exemplo:

Seja o número decimal 45. Em binário de 8 bits: 00101101. Complemento de 1: 11010010. Ora, se o C1 indica o negativo do número, a soma de ambos deve ser nula: +45 + (-45) = 0. Mas se fizermos a soma 00101101 + 11010010, encontraremos 11111111. Para obter zero, precisamos somar 1 e desprezar o dígito "vai um " (Cout). O método foi usado em máquinas mais antigas.

Por exemplo: 11010111-100101 (00100101), em decimal 215-37
Obtendo o C1 de 00100101 temos 11011010
a seguir efetuamos a soma 00101000 + 11011010 +00000001
11010111
+ 11011010
00000001
110110010 --> 10110010 (em decimal 178, resultado da subtração)
|
Cout

A multiplicação é uma soma sucessiva, e a divisão é uma subtração sucessiva.


O padrão IEEE 754 (ANSI /IEEE Std 754-1985, New York, 1985 - IEEE Standard for
Binary Floating-Point Arithmetic) contém normas [1,5] a serem seguidas pelos
fabricantes de computadores e construtores de Softwares no tratamento da aritmética
binária para números de ponto flutuante relativo ao armazenamento, métodos de
arredondamento, ocorrência de underflow e overflow, além, é claro, da realização das
operações aritméticas básicas.
Existe também o padrão IEEE 854 (ANSI/IEEE Std 854-1987, New York, 1987 - IEEE
Standard for Radix-Independent Floating-Point Arithmetic) que tem os mesmos
objetivos [2], porém, relativos a uma padronização para uma base independente
genérica, para aqueles que utilizam outra base diferente da binária.
Entre as recomendações dos padrões IEEE 754 e IEEE 854 existem considerações
sobre a implementação de funções nas linguagens de programação, de modo que a
maioria dos fabricantes atuais de computadores (Hardware) e construtores de
compiladores de linguagens científicas ou de bibliotecas de funções matemáticas
(Software) seguem estas recomendações. Um tratamento especial também é citado
para o cálculo do produto escalar de dois vetores feito através da multiplicação,
seguida imediatamente da adição com um único arredondamento feito no fim da
sequência de operações [3].

ARITMÉTICA DE PONTO FLUTUANTE

CONCEITO
Seja F (b, t, m, M) um sistema de ponto flutuante (Floating-Point System) que
representa um subconjunto dos números reais, onde b ³ 2 é a base de
representação, t ³ 1 é a precisão, e m e M são respectivamente o menor e maior
expoente. O subconjunto FÌ R contém números reais, de ponto flutuante, da forma
X = (–1)s. be.(0.d1d2d3.....dt), onde s é sinal ( 0 se positivo e 1 se negativo), e o
expoente ( m £ e £ M , com m < 0, M > 0 e | m | » M ) e di são dígitos da mantissa
na base-b ( 0 £ di £ b–1, " i, 1 £ i £ t ).
s e f
f = 0.d1d2d3.....dt é chamada de mantissa, sendo que o dígito inicial 0 (zero) e o
ponto decimal não são armazenados. Na representação IEEE 754 o ponto decimal,
implicitamente, está entre os dígitos d1 e d2 , o que permite o armazenamento de
mais um dígito da mantissa.
Exemplo: Considerando F (2, 8, –4, 3) e sendo X e Y, dois números da forma:
X= 0 010 11100110 Y= 0 010 11100111
X= (–1)0. 22.(0.11100110) = (11.100110)2 = (3.59375)10
Y= (–1)0. 22.(0.11100111) = (11.100111)2 = (3.609375)10
Observe que X e Y são dois números consecutivos neste sistema de representação,
sendo que o número decimal 3.6 não teria representação exata.

NORMALIZAÇÃO
O primeiro dígito (d1) é diferente de zero para assegurar a unicidade de
representação, e manter sempre a precisão máxima suportada pela mantissa. Esta
forma é a chamada forma normalizada.
O valor zero não pode ser normalizado e tem representação especial, com mantissa
nula (todos dígitos iguais a zero) e expoente o menor possível (m–1).

RELAÇÕES
Para todo sistema da forma F(b,t,m,M) são válidas as seguintes relações [7]:
i) Variação da mantissa: 1/b £ f < 1
ii) Menor número positivo: l = bm-1
iii) Maior número positivo: L = (1 – b-t ) . bM
iv) Número de elementos: | F | = 2.(b–1).bt-1.(M–m+1) + 1
v) Épsilon da máquina: e = (0.5).b1-t
e (épsilon) é um valor tal que ( 1 + e ) = 1; e normalmente é chamado de “zero” da
máquina, apesar de ser um valor positivo, porém, muito pequeno. Este valor pode ser
obtido através do algoritmo:
EPS = 1
repita
EPS = EPS/2
EPS1 = EPS + 1
até EPS1 = 1

Resultados obtidos num microcomputador 486DX (processador Intel 80x87, 66 Mhz),
com utilização dos compiladores Fortran 90 e Turbo Pascal 7.0:
i) Em FORTRAN
Precisão simples: e = 0.5421011 E–19
Precisão dupla: e = 0.5421010862427522 E–19
ii) Em PASCAL
Tipo REAL: e = 0.45474735089 E–12
Tipo DOUBLE: e = 0.111022302462516 E–15
Tipo EXTENDED e = 0.5421010862427522 E–19
Observe que somente para o tipo EXTENDED em PASCAL se consegue encontrar a
ordem de grandeza correta do zero da máquina, o que não ocorre para a linguagem
FORTRAN que é a linguagem científica mais recomendada para a computação
numérica.

OCORRÊNCIA DE UNDERFLOW E OVERFLOW
Seja X um número real e X’ uma aproximação de X, então, sabendo que l é o menor
número positivo do sistema de representação e L o maior número positivo, tem-se:
i) Se | X | > L; um caso de overflow, que é considerado uma situação irremediável, e,
conseqüentemente, o programa deve ser abortado;
ii) Se 0 < | X | < l, um caso de underflow que é considerado como X’ = 0. Esta prática
pode invalidar resultados, por isso é chamado de underflow destrutivo.
iii) Se l < | X | < L, com X necessitando de d dígitos de mantissa, causa um
arredondamento para X’ contendo t dígitos, sendo descartados ( d – t ) dígitos
usando um dos métodos de arredondamento descritos a seguir.
3.5 MÉTODOS DE ARREDONDAMENTO
Os métodos de arredondamento [7] são utilizados para padronizar a forma de
truncamento dos dígitos, em função do tamanho fixo da mantissa, por ocasião de seu
aramazenamento. Para cada um dos métodos descritos abaixo apresentamos um
exemplo onde foi considerado que d=5 e t=3.
i) Em direção ao zero (para o valor imediatamente anterior, ou menor, para
positivos e imediatamente posterior, ou maior, para negativos) ;

Exemplos: X = + 0.34521

X’ = + 0.345
Y = – 0.34521
Y’ = – 0.345
ii) Em direção a + ¥ (para o maior valor relativo);

Exemplos: X = + 0.34521

X’ = + 0.346
Y = – 0.34521
Y’ = – 0.345
iii) Em direção a - ¥ (para o menor valor relativo);

Exemplos: X = + 0.34521

X’ = + 0.345
Y = – 0.34521
Y’ = – 0.346
iv) Para o mais próximo, com opção para a aproximação próximo par em caso de
empate (este método é o mais recomendado pela IEEE 754).
Exemplos: X = ± 0.3452

X’ = ± 0.345
Y = ± 0.3458
Y’ = ± 0.346
Z = ± 0.3455

Z’ = ± 0.346
T = ± 0.3445
T’ = ± 0.344

PADRÃO IEEE 754 PARA PONTO FLUTUANTE
A base de representação recomendada é a binária ( b = 2 ).
As operações devem ser executadas em precisão estendida com uso de dígitos de
guarda e expoente deslocado (d).
O uso do expoente deslocado, também chamado característica, tem por objetivo
eliminar o sinal do expoente, por exemplo, se m= –127 e M=127, ( d deve ser igual
a 127, de forma que a variação de expoente seria de 0 a 254.
Considerando o formato padrão para números de ponto flutuante:
s e f = d1d2d3.....dt
sinal expoente Mantissa
O padrão IEEE 754 recomenda os seguintes números de bits, de acordo com a
precisão usada. A expressão ( N = s + e + t ), corresponde ao tamanho da palavra em
bits.
i) Precisão Simples: s = 1, e = 8, f = 23 (+ 1 escondido), N = 32 bits.
X = ( 1.f * 2e -d ) d = 127
ii) Precisão Simples Estendida: s = 1, e ³11, f ³ 32 , N ³ 43 bits.
X = ( 0.f * 2e -d ) d = 127
iii) Precisão Dupla: s = 1, e = 11, f = 52 (+ 1 escondido), N = 64 bits.
X = ( 1.f * 2e -d ) d = 1023
iv) Precisão Dupla Estendida: s = 1, e ³ 15, f ³ 64 , N ³ 79 bits.
X = ( 0.f * 2e -d ) d = 1023
A maioria dos atuais processadores ( Intel, Motorola, Sparc, entre outros ) possui uma
pastilha co-processadora de ponto flutuante [10] obedecendo este padrão. Eles
utilizam 3 formatos: precisão simples ( 32 bits ), precisão dupla ( 64 bits ) e estendida
( 80 bits ).

CONFIGURAÇÃO ESPECIAL DE BITS - PADRÃO IEEE 754
Alguns resultados de operações aritméticas não são suportadas pela máquina, em
virtude de divisão por zero, overflow etc; desta forma, eles são representadas de
forma especial. Nos casos seguintes, o item i corresponde a uma representação
especial para o 0 (zero); o item ii é um número com menor expoente possível, e os
itens iii e iv são exceções, invariavelmente, intratáveis.
Expoente Fração Significado
i) e = m-1 f = 0 ± 0
ii) e = m-1 f ¹ 0 ± 0.f * 2m
iii) e = M+1 f = 0 ± ¥
iv) e = M+1 f ¹ 0 NaN ( Not a Number )
O padrão IEEE 754 permite números desnormalizados, que são números com
expoente igual a (m – 1) e zeros no início da mantissa.
Interpretação:
Número Normalizado Número
Desnormalizado
1.f1f2f3 ...ft x 2e º 0.f1f2f3 ...ft x 2m
Obs: fi = 0 ou fi = 1

OPERAÇÕES ARITMÉTICAS
Dados dois números X e Y representados na forma: (–1)s. be.(0.d1d2d3.....dt) são
definidas as seguintes regras para as operações aritméticas:
6.1 ADIÇÃO E SUBTRAÇÃO
i) Escolher o número com menor expoente entre X e Y e deslocar sua mantissa para a
direita um número de dígitos igual à diferença absoluta entre os respectivos
expoente;
ii) Colocar o expoente do resultado igual ao maior expoente entre X e Y;
iii) Executar a adição/subtração das mantissas e determinar o sinal do resultado;
iv) Normalizar o valor do resultado, se necessário;
v) Arredondar o valor do resultado, se necessário e
vi) Verificar se houve overflow/underflow.
Exemplo: Seja F(10, 4, –50, 49), d = 50, com um dígito de guarda.
Se X = 436.7 e Y = 7.595 obter a soma ( X+Y ).
Obs.: Para todas operações, faremos uma análise da precisão do resultado obtido,
através dos erros absoluto e relativo [4].
X = 0 5 3 4 3 6 7 Y = 0 5 1 7 5 9 5
i) e1 – e2 = 53 –51 = 2 (deslocamento de dois dígitos do menor , no caso Y)
Y = 0 5 1 7 5 9 5 º Y = 0 5 3 0 0 7 5 9
ii) Expoente do resultado: e = 5 3
iii) Adição das mantissas: 4 3 6 7 (0) + 0 0 7 5 (9) = 4 4 4 2 (9) , onde o valor entre
parênteses é o dígito de guarda.
iv) Normaliza o resultado: Não há necessidade, pois d1 = 4 ¹0.
v) Arredonda: 4 4 4 2 (9)

f = 4 4 4 3
vi) Verifica underflow/overflow: e – 50 = 53 -50 = 3 < 49. Não há.
Resultado:
X + Y = 0 5 3 4 4 4 3 ou X + Y = 0.4443 * 1053–50 = 444.3
Análise do resultado:
Erro absoluto = | 444.295 – 444.3 | = 0.01
Erro Relativo = 0.01 / 444.295 = 1.13 x 10-5

MULTIPLICAÇÃO
i) Colocar o expoente do resultado igual à soma dos expoentes de X e Y;
ii) Executar a multiplicação das mantissas e determinar o sinal do resultado;
iii) Normalizar o valor do resultado, se necessário;
iv) Arredondar o valor do resultado, se necessário e
v) Verificar se houve overflow/underflow.

Exemplo: Para os mesmos dados do exemplo anterior obter o produto ( X * Y ).
i) Expoente: e = 53 + 51 = 104
ii) Multiplicação das mantissas: (4 3 6 7) * (7 5 9 5) = (3 3 1 6 7 3 6 5), considerando
quatro dígitos de guarda.
iii) Normalizar o valor do resultado. Ajustar expoente (e-d) = 104 – 50 = 54.
iv) Arredondar o valor do resultado: (3 3 1 6 7 3 6 5)

(3 3 1 7).
v) Verifica underflow/overflow: e –50 = 54 -50 = 4 < 49. Não há.
Resultado:
X * Y = 0 5 4 3 3 1 7 ou X * Y = 0.3317 * 1054–50 = 3317
Análise do resultado:
Erro absoluto = | 3316.7365 – 3317 | = 0.2635
Erro Relativo = 0.2635 / 3316.7365 = 7.9445 x 10-5 (mesma precisão da adição).

DIVISÃO
i) Colocar o expoente do resultado igual à diferença dos expoentes de X (dividendo)
e de Y (divisor);
ii) Executar a divisão das mantissas e determinar o sinal do resultado;
iii) Normalizar o valor do resultado, se necessário;
iv) Arredondar o valor do resultado, se necessário e
v) Verificar se houve overflow/underflow.

Exemplo: Para os mesmos dados do exemplo anterior obter a divisão ( X / Y ).
i) Expoente: e = 53 – 51 = 2
ii) Divisão das mantissas: (4 3 6 7) * (7 5 9 5) = (5 7 4 9 8 3 5 4), considerando quatro
dígitos de guarda.
iii) Normalizar o valor do resultado. Ajustar expoente (e+d) = 2 + 50 = 52.
iv) Arredondar o valor do resultado: (5 7 4 9 8 3 5 4)

(5 7 5 0).
v) Verifica underflow/overflow: e –50 = 52 -50 = 2 < 49. Não há.
Resultado:
X / Y = 0 5 2 5 7 5 0 ou X / Y = 0.5750 * 1052–50 = 57.50
Análise do resultado:
Erro absoluto = | 57.49835418 – 57.50 | = 0.001645819
Erro Relativo = 0.001645819 / 57.49835418 = 2.8623 x 10-5

descriptionComo um computador caucula EmptyRe: Como um computador caucula

more_horiz
apesar de eu não gostar muito de ler achei mt legal esse topico,ja vou sair e quando voltar provavelmente vou te dar um +rep ^^...saindo

descriptionComo um computador caucula EmptyRe: Como um computador caucula

more_horiz
agora sei pq NERDzinho Como um computador caucula 3068928763
muito bom!
+rep

descriptionComo um computador caucula EmptyRe: Como um computador caucula

more_horiz
privacy_tip Permissões neste sub-fórum
Não podes responder a tópicos
power_settings_newInicie sessão para responder