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



         

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


Это и есть переполнение, которое приводит к неверному результату. В большинстве версий Форта в результате сложения 36000 и 37000 будет получаться 7464, что, очевидно, неверно. Переполнение может возникнуть также при операциях * и -. В то время как большинство языков обнаружат ошибку переполнения и либо прекратят исполнение программы, либо выдадут сообщение об ошибке, Форт этого не сделает. Почему? Потому что проверка на наличие ошибок занимает время ЭВМ, и обычно немалое, поэтому, чтобы не снижать скорости работы, заботу об избежании ошибок форт предоставляет программисту. Вторая причина - желание, чтобы программа работала, даже если произошла ошибка. Нас интересует проверка возникновения переполнения и его предотвращение. , Как быть, если вы хотите работать с числами больше 32767 или меньшими -32767, т.е. с числами больше 65535, если не учитывать знака. Имеется два способа решения этой проблемы. Один из них - это использование так называемых чисел двойной длины (или, как иногда говорят, двойной точности или просто двойных чисел), которые представляются 32 разрядами. Другой - в использовании чисел с плавающей запятой. Обе эти возможности мы рассмотрим позже в этой главе.

Операторы для работы с небольшими числами

В стандартах описываются несколько специальных операций для работы с небольшими числами. Это 1+, 1-, 2+ и 2-. В стандарте Форт-83 есть еще операция 2/, а в большинстве версий Форта - и другие. Например, в MMSFORTH есть такие операции: 2*, 8*, 16* и 64*. Эти операции выполняют то, что и следует ожидать, работая с числами, находящимися на вершине стека, т.е. производят умножение, деление, сложение и вычитание с числом, которое входит в имя слова. Зачем нужны эти операции? Почему бы не использовать два слова 2 + вместо специального слова 2+? Для ускорения операции. Дело в том, что при использовании специального слова, определенного на машинном коде, операция выполняется значительно быстрее, чем при использовании двух слов 2 +. Например, чтобы разделить число на 2, требуется каждый разряд числа сдвинуть на одну позицию вправо, что делается в машинном коде очень быстро.


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