2013-10-02 17 views
6

Nie znalazłem jeszcze dobrego wyjaśnienia tego w Internecie, więc mam nadzieję, że ktoś tutaj może mi to wyjaśnić.Zaokrąglanie liczb zmiennoprzecinkowych po dodaniu (gwardia, lepkie i okrągłe bity)

Chcę dodać dwie liczby binarne ręcznie:

1,001 * 2
1.010,0000,0000,0000,0000,0011 * 2

Mogę dodać je bez problemu, otrzymuję następujący wynik po dezaktualizacji pierwszego numeru, dodaniu dwóch i ponownym normalizowaniu ich.

1.1100,0000,0000,0000,0000,0011 * 2

Problem jest, że liczba ta nie będzie pasować do pojedynczej precyzji IEEE Format 754 bez obcinania lub zaokrąglając jeden bit. Moje zadanie wymaga, abyśmy umieścili ten numer w formacie IEEE 754 o pojedynczej precyzji (co zwykle nie stanowi problemu, mogę to zrobić tak łatwo). Prosi nas, abyśmy zrobili to najpierw z ochronnymi, okrągłymi i lepkimi bitami, a następnie powtórzyć bez tych bitów. Jednak nie jestem do końca pewien, w jaki sposób te bity pomagają w zaokrąglaniu. Zakładam, że po prostu skracałbym ostatni LSB, gdybym robił to bez ochronnych, okrągłych i lepkich bitów.

+4

Może to pomóc: http://pages.cs.wisc.edu/~david/courses/cs552/S12/handouts/guardbits.pdf –

+0

Zamiast skracania, zastanów się nad zastosowaniem zaokrąglenia bezpośrednio do nieskończenie precyzyjna odpowiedź. –

+1

@Rick Regan_It był pomocny :) – Pooria

Odpowiedz

5

Pojedyncza precyzja oznacza, że ​​mantysa zawiera 23 bity (przy założeniu architektury 32-bitowej) oraz ukrytą. Dlatego pierwszy znika z mantysy.

Następnie należy określić G i R bitów lub bit Strażnika i Okrągłego.

Bit Strażnik to pierwszy z dwóch bitów za 0 bit mantysy, który zostanie odcięty.

Okrągły bit jest drugim bitem po bicie mantysy. Bit osłony tutaj wynosi 1, a bit okrągły wynosi zero, ponieważ nie ma innego bitu.

Lepki bit jest również zerowy, ponieważ po prawej stronie okrągłego bitu nie ma żadnych. W związku z tym mamy GRS lub 100.

W zależności od używanej książki lub procesora zwykle oznacza to zaokrąglenie do najbliższej liczby parzystej. W tym przypadku, ponieważ LSB (najmniej znaczący bit) wynosi 1, liczba zostanie zaokrąglona do 1100,00000000,0000,0000,010 dla mantysy.

Powiązane problemy