Деление и умножение с плавающей точкой. Как получается получившаяся мантисса?
Я знаю, как складывать или вычитать числа с плавающей запятой в двоичном виде. Для умножения и деления я должен умножить / разделить мантиссы и сложить / вычесть показатели.
Но вот что-то, чего я не понимаю. Мантиссы - это дроби, я только научился умножать и делить целые числа. Какие правила применяются к арифметике мантисс? Я видел несколько примеров, в которых умножающие мантиссы рассматривались как целые числа, но что для деления, что происходит с остатком? Кто-нибудь может привести пример разделения мантиссы?
1 ответ
(Предпочтительный термин "значимый". "Мантисса" является устаревшим термином со времен бумажных таблиц логарифмов.)
Примеры добавления трехразрядных значений:
1.01
+1.11
_____
11.00
Result >= 10.00, so shift to 1.100, round to 1.10, and add one to exponent.
1.00
+1.11
_____
10.11
Result >= 10.00, so shift to 1.011, round to 1.10, and add one to exponent.
Примеры вычитания трехразрядных значений:
1.01
-1.10
Note the latter value is larger in magnitude, so swap
them and remember to invert the sign of the result later.
1.10
-1.01
_____
0.01
Result < 1.00, so shift to 1.00 and subtract two from exponent.
Пример умножения трехразрядных значений:
1.01
*1.10
_______
.0000
.101
+1.01
_______
1.1110
Result is in range, so do not shift. Rounding
requires rounding up, producing 10.0, which is
>= 10.0, so shift to 1.00 and add one to exponent.
Обратите внимание, что в этих примерах значения добавляемых и вычитаемых чисел уже были выровнены. Это происходит, когда показатели добавляемых чисел равны. Если это не так, одно из чисел должно быть сдвинуто, чтобы его показатель степени был равен другому, и тогда значения можно сложить или вычесть.
Деление делается с тем же длинным делением, которое вы учили в школе. Вы выполняете деление на столько цифр, сколько необходимо для вашего значения, а затем вы используете остаток в этой точке, чтобы решить, округлять ли вверх или вниз.