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



         

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


Слово #РТ полезно также для форматного представления чисел, с которым мы познакомимся в гл. 5.

Слово #НI производит удивительное действие. В MMSFORTH все числа воспринимаются как числа двойной длины, но если в числе нет десятичной точки, то в стеке запоминаются только 16 младших битов числа. Независимо от наличия десятичной точки старшие 16 битов числа запоминаются в слове НI#. Таким образом, если ввести 12345678 HI# D. вы увидите число 12345678. Как работает это слово? Для чисел двойной длины старшие 16 бит запоминаются на вершине стека, слово НI# снимает старшие 16 битов и помещает их в стек. Следовательно, если с клавиатуры вводится число двойной длины, а после него слово Н1#, то число всегда запоминается в виде числа двойной длины.

Для манипуляций в стеке с числами двойной длины имеется набор слов, аналогичных словам для работы с числами одинарной длины: 2DROP, 2DUP, 2OVER, 2ROT и 2SWAP. Для доступа к числам двойной длины в памяти имеются также два слова 2! и 2@. Но эти слова так похожи на соответствующие слова для работы с числами одинарной длины, что лучше всего их рассмотреть в упражнениях.

Упражнения

1. Проверьте, что наибольшее 32-разрядное число без знака равно 4294967295. (Подсказка: вспомните о степенях числа 2.) 2. Рассмотрите табл. 2.2 и постройте аналогичную таблицу для манипуляций в стеке с числами двойной длины. 3. Напишите определение слова 2DROP под именем NEW2DROP. 4. Одинаковы ли по своему действию слова 2DUP и DUP DUP? Если да, то почему? и почему, если нет? 5. Определите слово 2DUP под именем NEW2DUP. 6. Определите слова 2SWAP79 и 2SWAP83 через ROLL. 7. Определите слова 2ROT79 и 2ROT83, используя слово ROLL. 8. Определите слова 20VER83 и 20VER79 через слово PICK. Слова, которые мы приводим в упражнениях 3-9, обычно для достижения быстродействия определены на языке ассемблера. 9. Определите слова 2ROLL83 и 2ROLL79, которые должны действовать аналогично ROLL. 10. Определите слова 2PICK83 и 2PICK79, действующие аналогично слову PICK, для тех, кто пользуется версией MMSFORTH. 11.


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