2/: различия между версиями
AtH (обсуждение | вклад) Нет описания правки |
AtH (обсуждение | вклад) Нет описания правки |
||
Строка 23: | Строка 23: | ||
двух) аппаратным сдвигом вправо, который распространяет знаковый разряд. | двух) аппаратным сдвигом вправо, который распространяет знаковый разряд. | ||
== 2/ в предыдущем стандарте Forth-83 (англ.) == | == История == | ||
=== 2/ в предыдущем стандарте Forth-83 (англ.) === | |||
2/ n1 -- n2 83 "two-divide" | 2/ n1 -- n2 83 "two-divide" | ||
n2 is the result of arithmetically shifting n1 right one | n2 is the result of arithmetically shifting n1 right one | ||
Строка 29: | Строка 30: | ||
unchanged. | unchanged. | ||
== 2/ в стандарте Forth-79 (англ.) == | === 2/ в стандарте Forth-79 (англ.) === | ||
2/ n1 -- n2 "two-divide" | 2/ n1 -- n2 "two-divide" | ||
Leave (n1)/2. | Leave (n1)/2. |
Версия от 17:49, 5 июня 2016
2/ (на два делить нацело, читается «два дробь») — стандартное слово Каллисто. Целочисленное деление на 2 (двоичный сдвиг вправо).
2/ ( x -- n ) Половина. n ← [x/2]
Делит x на 2. Отбрасывает остаток (цифры после запятой), а частное n заносит в стек.
Ввод слова 2/
В режиме NUM последовательно нажмите три клавиши 2 F ÷
Детали реализации
Слово 2/ осуществляет арифметический сдвиг вправо на один двоичный разряд — сохраняя знак всех целых чисел, кроме 1. Слово 2× осуществляет обратное действие, двоичный сдвиг влево.
Каллисто реализована поверх десятичной машины «Электроника МК-161», поэтому поведение этих двух команд может не всегда соответствовать тому, как они реализованы на двоичных форт-машинах.
2/ в стандарте ANS Forth
6.1.0330 2/ "two-slash" CORE ( x1 -- x2 ) x2 - результат смещения x1 на один бит к младшему двоичному разряду, оставляет старший бит неизменным.
A.6.1.0330 2/ Это слово имеет то же самое общее использование и следствие неверного названия как 2∗. Оно часто реализовано на машинах с дополнительным кодом (дополнение до двух) аппаратным сдвигом вправо, который распространяет знаковый разряд.
История
2/ в предыдущем стандарте Forth-83 (англ.)
2/ n1 -- n2 83 "two-divide" n2 is the result of arithmetically shifting n1 right one bit. The sign is included in the shift and remains unchanged.
2/ в стандарте Forth-79 (англ.)
2/ n1 -- n2 "two-divide" Leave (n1)/2.
Реализация
Слово 2/ в ФОРТ-ЕС было примитивом. Вот его описание и определение:
2/ W1->W2 АРИФМЕТИЧЕСКИЙ СДВИГ ВПРАВО НА 1 20 Экран номер 20 ( 31.03.86 SP@ SP! RP@ RP! 2/ 2* 2@ 2! DEPTH ) CODE 2/ ( W1->W2 ) RW1 PULL, RW1 1 SRA, PUTRM1 B, END-CODE
В FORTH ИТЭФ слово 2/ было примитивом, вот его определение:
HEAD 202Q,'2',257Q,DIV2 ; 2/ POP AX SAR AX, 1 PUSH AX NEXT
Ссылки
- Исходный текст слова 2/ в Каллисто Классик 1.0
- См. слова /, 2×, 2+ и 2−
- См. также символ /
- Слово 2/ (two-slash) и комментарии к нему в стандарте ANS Forth (англ.)
- Слово RSHIFT в стандарте ANS Forth (англ.)
- Слова 2/ (two-slash) и RSHIFT в черновике Forth 200x (англ.)
- Битовый сдвиг в Википедии
- Logical shift и Arithmetic shift в английской Википедии (англ.)
- ОПЕРАЦИИ НАД ЦЕЛЫМИ ЧИСЛАМИ в книге Л.Броуди «Начальный курс программирования на языке Форт»
- ЧИСЛО ТИПОВ ЧИСЕЛ в книге Л.Броуди «Начальный курс программирования на языке Форт»
- The Philosophy of Fixed Point в книге Leo Brodie Starting Forth (англ.)
- A Number of Kinds of Numbers в книге Leo Brodie Starting Forth (англ.)
Это заготовка статьи. Вы можете помочь проекту, дополнив её. |