Язык программирования Форт



         

Глава 4. Еще об арифметических операциях - часть 4


приводит к результату 4 1. Второе и третье число в стеке (в данном случае 3 и 3) перемножаются, образуя 32-разрядный результат, чтобы избежать переполнения, затем делится на число, находящееся на вершине стека, остаток от деления остается в стеке, поверх него на вершине стека находится частное. Назначение слова */MOD такое же, как и */, т.е. избежать переполнения во время операции умножения.

Деление с округлением, деление с отрицательными числами

В школе вас учили, что, если при делении двух чисел возникает остаток, результат нужно округлить до ближайшего целого в сторону уменьшения (вниз), т.е. 3/2 дает в частном 1 и в остатке 1. Ну а что делать, если либо делимое, либо делитель отрицательные? По интуиции вы, возможно, считаете, что, например, при делении -6/4 частное будет -1, а какой будет остаток? Вы, если хотите, можете умножить частное на делитель и сложить с остатком, чтобы получить делимое. Таким образом, в данном случае остаток будет равен -2. Потому что -2 + -1 х 4 равно -6. Именно так устроено деление в Форт-79. Для подтверждения проверим на Форт-79: -6 4 / . при этом получается -1, в результате операций -6 4 MOD . получается -2 и после -6 4 /MOD . . получается -1 -2. Для стандарта Форт-79 можно сформулировать правила "интуитивного" деления: 1) если либо делитель, либо делимое, но не одновременно отрицательные, то частное также отрицательное, 2) частное независимо от знака округляется в сторону, ближайшую к 0; 3) остаток принимает знак делимого, или второго числа в стеке.

Пользуясь этими правилами, мы всегда получаем результаты, приведенные в последних примерах. Эти правила справедливы для большинства версий Форта, за исключением тех, которые основаны на стандарте Форт-83. Точное значение результата операции -6/4 равно -1.5. Согласно школьным правилам надо округлить это число в сторону уменьшения, и мы получили бы -2 (-2 меньше, чем -1). Это так называемое деление с округлением по нижней границе (по "полу"). Его суть в том, что за частное от деления принимается ближайшее меньшее значение.


Содержание  Назад  Вперед