[IEEE754] Odejmowanie liczb double

0

Witam, mam do zrobienia w asm program do odejmowania (bez użycia koprocesora) dwóch liczb double. Wykładowca powiedział, że najlepiej liczby dodać, zamieniając drugiej znak. Na koniec tylko uzgodnić znaki. Z punktu widzenia matematyki wygląda ok, ale czy coś takiego naprawdę przejdzie? Weźmy np:

16-16

Mamy więc:

     1,0 * 2^4
+   1,0 * 2^4

Wykładniki są takie same, więc mantysy dodajemy i wychodzi:

10,0 * 2^4

przesunięcie w prawo i jest:

1,0 * 2^5, czyli dziesiętnie:

1,0 * 2^5 = 32

Znaku nie ma już co uzgadniać, bo i tak wynik jest bez sensu :P

Nie wiem, czy to ja źle rozumuję, czy to sposób ogólnie jest zły?

// Dopisane
Poprawiłem oczywiste błędy w dodawaniu :P

0

od kiedy 1+1==11 ?

0

Przeczytaj do końca, to dowiesz się, że już dawno poprawiłem błędy. Ale niech będzie, całkowicie wywalę to, co było wcześniej.

0

profesor powiedział, że zamiast a - b można zrobić a + (- b)
czyli po asemblerowemu zamiast fsubp można zrobić fchs st(1), faddp

0
donkey7 napisał(a)

profesor powiedział, że zamiast a - b można zrobić a + (- b)
czyli po asemblerowemu zamiast fsubp można zrobić fchs st(1), faddp

thenkles napisał(a)

Witam, mam do zrobienia w asm program do odejmowania (bez użycia koprocesora) dwóch liczb double.

No ale temat już w zasadzie zakończony, choć w dalszym ciągu chętnie się dowiem, czy dla arytmetyki zmiennoprzecinkowej coś takiego zadziała.

0

no oczywiście, że zadziała.

w pierwszym poście popełniłeś kardynalny błąd

ma być:

Weźmy np:

16-16

Mamy więc:

(+ 1,0 * 2^4)
  • (+ 1,0 * 2^4)

A więc zaminiamy znak drugiej liczby i dodajemy:

(+ 1,0 * 2^4)
  • (- 1,0 * 2^4)

manstysy wyglądają odpowiednio (zakładając, że są w kodzie u2 - jeżeli nie są to najpierw je zamieniamy na ten kod):

...0001
...1111

a więc po dodaniu się ładnie zerują i wychodzi 16 - 16 = 0.

nie wiem co w tym dziwnego czy niezrozumiałego.

zmiana mantysy na kod u2 wygląda tak:

.if znak < 0
neg mantysa
.endif

0

Dzięki donkey7. Nie pomyślałem o tym, żeby zamieniać na u2 :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1