Просто чтобы убедиться, что мы на одной странице, G
- самый старший бит из трех, R
- следующий, а S
можно рассматривать как наименее значимый бит, потому что его значение частично представляет еще менее значимые биты, которые были усечены в расчетах. Эти три бита используются только при выполнении вычислений и не сохраняются в переменной с плавающей запятой до или после вычислений.
Это то, что вы должны сделать, чтобы округлить результат до ближайшего четного числа, используя G
, R
и S
:
GRS - Действие
0xx - округлить вниз = ничего не делать (x означает любое значение бита, 0 или 1)
100 - это галстук : округлить в большую сторону, если бит мантиссы непосредственно перед G равен 1, иначе округлить вниз = ничего не делать
101 - округление вверх
110 - округление вверх
111 - округление вверх
Округление производится путем добавления 1 к мантиссе в позиции младшего бита мантиссы непосредственно перед G
. Если мантисса переполнена (ее 23 младших значащих бита, которые вы сохраните, станут нулями), вы должны добавить 1 к показателю степени. Если показатель степени переполняется, вы устанавливаете число на + бесконечность или -infinity в зависимости от знака числа.
В случае галстука вы добавляете 1 к мантиссе, если мантисса нечетная, и ничего не добавляете, если она четная. Вот что делает результат округленным до ближайшего четного значения.