Начальный курс программирования на языке Форт

         

АРИФМЕТИЧЕСКИЙ СДВИГ


Когда мы рассматривали в гл. 5 выполнение компьютером некоторых арифметических операций, нам встретились две «таинственные» фразы: «арифметический сдвиг влево» и «арифметический сдвиг вправо». Теперь настала пора объяснить их.

От чего зависит быстрота ответа Форт-системы. 2* ( n -- n*2) Умножение на два ( арифметический сдвиг влево). 2/ ( n -- n/2) Деление на два ( арифметический сдвиг вправо).

Для иллюстрации представим какое-нибудь число, скажем шесть, в двоичном виде:

0000000000000110

(4 + 2). Сдвинем каждую цифру этого числа на один разряд влево, а освободившийся бит заполним нулем:

0000000000001100

Мы получили двоичное представление числа 12 (8 + 4), что ровно в два раза больше первоначального числа. Такой способ применим во всех случаях. Если вы переместите каждую цифру числа на одну позицию вправо и заполните освободившийся бит нулем, то в результате всегда получите половину первоначального числа.

При арифметическом сдвиге знаковый разряд не смещается. Иными словами, положительное число остается положительным, а отрицательное - отрицательным при выполнении операций деления и умножения на два. (Сдвиг, при котором вместе с остальными битами сдвигается и старший по порядку бит, называется логическим сдвигом.) Вы должны знать, что компьютер выполняет сдвиг цифр намного быстрее, чем операции обычного деления или умножения. Когда скорость критична, то лучше написать 2*, чем 2 *, и даже может быть лучше написать 2* 2* 2*, чем 8 * - все зависит от конкретной модели вашего компьютера.



Содержание раздела