Notacja zmiennoprzecinkowa binarna
qwe: Witam
Mój problem wygląda następująco.
Przy założeniu, że moja liczba binarna ma postać ośmiobitową (np. "0 110 1011"), gdzie:
− pierwszy skrajny lewy bit oznacza znak liczby ("0" dodatnią, "1" ujemną),
− kolejne od lewej 3 bity wyznaczają wykładnik zapisywany w notacji z nadmiarem (tu "110" −
3−bitowy czyli nadmiar wynosi 4),
− ostatnie 4 bity to część ułamkowa (tu "1011").
Ta liczba akurat wynosi 2 34. Jak przekształcać liczbę "zwykłą" na binarną w tym zapisie i
odwrotnie? Znam algorytm postępowania lecz nie jest on dla mnie jasny. Wygląda on tak:
1) odczytaj znak liczby ("0 110 1011" − 0 czyli dodatni),
2) odczytaj wartość w polu wykładnika ("110" wynosi "2"),
3) przesuń kropkę w odpowiednie miejsce (wartość wykładnika 2, więc o 2 pozycje w prawo,
otrzymam 10.11 (binarna reprezentacja liczby, a to wynosi "234"}.
4) wynik "234".
Natomiast dla liczby "1 011 1100" jest rzekomo tak:
1) znak ujemny, bo "1",
2)wartość w polu wykładnika − "−1",
3) przesunięcie kropki o 1 pozycję w lewo (".[b]0[/b]1100" − skąd to zero? dlaczego nie
"01.11100"? )
4) wynik −38 (dlaczego nie "−178"?).
Zamiana liczby "zwykłej" na binarną to odwrócenie tego algorytmu, z uwzględnieniem zapisu
części ułamkowej od skrajnej lewej (38 to .011, więc nie ".0110" tylko ".1100".
Może i problem wyda się śmieszny, jednak potrzebuję pomocy. Są też i inne sposoby zapisu, z
innym kodowaniem, jednak taki potrzebuję. Proszę o pomoc.
Pozdrawiam
20 gru 12:15