Reele Zahlen sind nicht immer endliche Zahlen, dadurch sind sie mit endlichem Speicher nicht
genau darstellbar. Auch endliche Zahlen können mehr Speicher benötigen, wie ihnen
zur Verfügung steht. Um sie dennoch darzustellen, müssen die Zahlen gerundet werden.
In der floating-point Arithmetik wird als Defaultwert "round to nearest, ties to even"
verwendet. Um zu runden werden neben den normale Bits der Mantissa drei weitere Bits
benöigt. Das Guard, das Round und das Sticky Bit. Das Guard und das Round Bit folgen direkt auf das letzte gespeicherte Bit.
Das Sticky Bit ist ein OR für die restlichen Bits, die entfernt werden.
Aufrunden
Damit eine Zahl aufgerundet wird, muss das Guard Bit Eins sein. Das alleine reicht jedoch nicht
um zu bestimmen, ob die Zahl aufgerundet werden soll. Damit dies eindeutig ist, muss entweder
das Guard oder das Sticky Bit ebendfalls Eins sein. Wenn nur das Guard Bit den Wert Eins
besitzt, entscheidet das Bit links des Guard Bit. Ist es eine Eins wird aufgerundet (ties to even),
weil immer zu nächsten geraden Zahl gerundet wird. In diesen Fällen wird aufgerundet:
Hidden Bit
Mantissa
G
R
S
1
.
1
0
1
1
1
1
1
.
1
0
1
1
1
0
1
.
1
0
1
1
0
1
1
.
1
0
1
1
0
0
In all diesen Fällen wird die Zahl zu dieser Zahl aufgerundet:
1
.
1
1
0
Abrunden
Damit eine Zahl abgerundet wird, muss das Guard Bit Null sein. Das alleine reicht, damit eindeutig
bestimmt weren kann, dass die Zahl abgerundet wird. Der zweite Fall in dem abgerundet wird ist,
wenn das Guard Bit den Wert Eins und das Round und Sticky Bit Null sind und das Bit links des
Guard Bit ebenfalls Null ist. In diesen Fällen wird abgerundet:
Hidden Bit
Mantissa
G
R
S
1
.
1
0
0
0
1
1
1
.
1
0
0
0
1
0
1
.
1
0
0
0
0
1
1
.
1
0
0
1
0
0
In all diesen Fällen wird die Zahl zu dieser Zahl abgerundet: