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



         

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


Определите слово S->D для преобразования числа одинарной длины в число двойной длины. {Совет: проанализируйте приведенный пример слова Н1# из MMSFORTH.) 12. Что будет находиться в Н1#, если вы введете число 123? 13. Вот слово, которое возводит число 10 в степень п, если п находится на вершине стека: только ту часть числа двойной длины, которая стоит перед десятичной точкой. И еще напишите слово, которое должно возвращать часть числа, находящуюся после десятичной точки. (Указание: 123.25 - 123 + 25/100.)

Смешанные действия с числами одинарной и двойной длины.

В обоих стандартах (Форт-79 и Форт-83) имеются два обязательных слова для смешанных действий, в которых используются числа одинарной и двойной длины. В расширенных версиях Форта их еще больше.

В Форт-79 есть слова U* и U/MOD (аналогами их в Форт-83 являются UM* и UM/MOD). Вы уже раньше узнали, как напечатать число без знака, и, вероятно, вы понимаете, как складывать и вычитать целые числа со знаком и без знака: никакой разницы, нет, с какими числами вы имеете дело. При умножении имеют значение знаки чисел, кроме того, при умножении больших 16-разрядных чисел может возникнуть переполнение. Слово U* (или UM*) производит умножение двух чисел без знака, возвращая в стек число двойной длины. Попробуйте ввести 1000 1000 U* D. и вы увидите 1000000 ok. Очевидно, что результат представлен 32-разрядным числом. Теперь попробуйте ввести 5 -5 U* D. тогда вы увидите 327655

Число -5 было воспринято как 65531, поэтому полученное произведение является верным для данного числа.

Второй оператор для смешанных действии U/MOD (или UM/MOD) производит деление числа двойной длины (находящегося в стеке вторым) на число одинарной длины, помещая в стек остаток , и частное в виде чисел одинарной длины. Можете проверить это на ваших собственных примерах. Кстати сказать, слова U* и UM/MOD (соответственно UM* и UM/MOD) являются частью основного языка, а не расширения его для чисел двойной длины. Расширяющие слова для смешанных oпераций хорошо иллюстрируют слова MMSFORTH.


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