Zwiększanie liczby zmiennoprzecinkowej bez użycia koprocesora

0

Witam, mam oto takie zadanie:

W rejestrze EAX znajduje się liczba
zmiennoprzecinkowa w formacie float. Napisać
fragment programu, który zwiększy tę liczbę o 2,
przy czym w fragmencie nie mogą występować
rozkazy koprocesora arytmetycznego.
Dodatkowo zakładamy, że liczba
zmiennoprzecinkowa jest dodatnia.

Rozumiem, że to jak liczby zmiennoprzecinkowe są przechowywane w pamięci, zależy od programisty jak i to gdzie stoi umowna kropka. Wiem, że formuła wygląda następująco: 2^(wykładnik) * mantysa. Ale dalej nie wiem, jak się za to zabrać? Mam operować zapewne na bitach mantysy. I co jeśli np. będe chciał zwiększyć liczbę o 0.25?

0
curious napisał(a)

[...]Rozumiem, że to jak liczby zmiennoprzecinkowe są przechowywane w pamięci, zależy od programisty[...]

No to źle rozumiesz.
http://pl.wikipedia.org/wiki/Liczba_zmiennoprzecinkowa#Implementacje_sprz.C4.99towe
a tu masz małą zabawkę na początek http://ideone.com/Qz66F

0

Chodzi mi o ogólną zasadę, wiem, że w dzisiejszej architekturze dominuje standard IEEE-754. Aklurat podane zadanie dotyczyło akurat floatów, ale chodzi mi o ogólną idee gdy mam podany przykład, który już nie jest w standardzie IEEE np. w EAX znajduje się liczba zmiennoprzecinkowa, która posiada 1 bit znaku 19 bitów wykladnika i 12 bitów mantysy. I mógłbyś podać jakiś krótki opis teoretyczny do tej "zabawki"? Z tego co widzę to przesuwasz wszystko w prawo, ale liczbę we floatach dodajesz ręcznie u.f+=2, nie rozumiem za bardzo tego.

0

całkiem dobrze opisane w Wiki, na konkretnych życiowych przykładach

a co do zabawek, pobawiłem się jedną i zrobiłem drugą
http://ideone.com/yNR3s

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