Редактирование: 2/

Перейти к навигации Перейти к поиску
Внимание: Вы не вошли в систему. Ваш IP-адрес будет общедоступен, если вы запишете какие-либо изменения. Если вы войдёте или создадите учётную запись, её имя будет использоваться вместо IP-адреса, наряду с другими преимуществами.

Правка может быть отменена. Пожалуйста, просмотрите сравнение версий ниже, чтобы убедиться, что это нужная вам правка, и запишите страницу ниже, чтобы отменить правку.

Текущая версия Ваш текст
Строка 1: Строка 1:
'''2/''' (на два делить нацело, читается «два-дробь») — стандартное слово [[Каллисто]]. Целочисленное деление на 2 (двоичный сдвиг вправо).
2/            ( x -- n )                      Половина. n ← [x/2]
[[Файл:CallistoTwo.png|thumb|right|264px|Пример работы слова 2/]]
[[Файл:CallistoTwo.png|thumb|right|264px|Пример работы слова 2/]]
Делит x на 2. Отбрасывает остаток (цифры после запятой), а частное n заносит в [[Стек данных|стек]].
'''2/''' (на два делить нацело, читается «два дробь») — стандартное слово [[Каллисто]]. Целочисленное деление на 2 (двоичный сдвиг вправо).
2/            ( i -- i1 )
Делит i на 2. Отбрасывает остаток (цифры после запятой), а частное i1 заносит в [[Стек данных|стек]].


== Ввод слова 2/ ==
== Ввод слова 2/ ==
В [[Режим NUM|режиме NUM]] последовательно нажмите три клавиши [[Клавиша 2|{{Серая клавиша|2}}]]   [[Клавиша F|{{Оранжевая клавиша|F}}]] [[Клавиша ÷|{{Серая клавиша|÷}}]]
В [[Режим NUM|режиме NUM]] последовательно нажмите три клавиши [[Клавиша 2|{{Серая клавиша|2}}]]   [[Клавиша F|{{Оранжевая клавиша|F}}]] [[Клавиша ÷|{{Серая клавиша|÷}}]]
== Детали реализации ==
Слово 2/ осуществляет арифметический сдвиг вправо на один двоичный разряд — сохраняя знак всех целых чисел, кроме 1.  Слово [[2×]] осуществляет обратное действие, двоичный сдвиг влево.
[[Каллисто]] реализована поверх десятичной машины [[«Электроника МК-161»]], поэтому поведение этих двух команд может не всегда соответствовать тому, как они реализованы на двоичных форт-машинах.


== 2/ в стандарте ANS Forth ==
== 2/ в стандарте ANS Forth ==
<PRE>
  6.1.0330  2/                                "two-slash"                  CORE
  6.1.0330  2/                                "two-slash"                  CORE
             ( x1 -- x2 )
             ( x1 -- x2 )
Строка 18: Строка 22:
  как 2∗. Оно часто реализовано на машинах с дополнительным кодом (дополнение до  
  как 2∗. Оно часто реализовано на машинах с дополнительным кодом (дополнение до  
  двух) аппаратным сдвигом вправо, который распространяет знаковый разряд.
  двух) аппаратным сдвигом вправо, который распространяет знаковый разряд.
</PRE>


== История ==
== 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
Строка 27: Строка 29:
           unchanged.
           unchanged.


=== 2/ в стандарте Forth-79 (англ.) ===
== 2/ в стандарте Forth-79 (англ.) ==
  2/            n1 -- n2                                "two-divide"
  2/            n1 -- n2                                "two-divide"
     Leave (n1)/2.
     Leave (n1)/2.
== Реализация ==
Слово 2/ осуществляет арифметический сдвиг вправо на один двоичный разряд — сохраняя знак всех целых чисел, кроме 1.  [[2×|Слово 2×]] осуществляет обратное действие, двоичный сдвиг влево.
[[Каллисто|Каллисто 1.0]] реализована поверх десятичной машины [[«Электроника МК-161»]], поэтому поведение этих двух команд может не всегда соответствовать тому, как они реализованы на двоичных форт-машинах:
<pre>
1314 ;#TwoDiv
1315 ; 2/              ( x −− n )                          Половина. n := Trunc [x/2]
1316 LDIV2:          .DB    2
1317                .TEXT  "2/"                    ; ( n −− [n/2] )
1318                .DW    LMUL2
1319 DIV2:          .DW    JDIV2
1320 JDIV2:          PKRM03 2 / KINT PKM03  KGOTO9  ; Целочисленное деление на 2 (двоичный сдвиг вправо).
</pre>
Реализация из SP-Forth 4.20:
<pre>
CODE 2/ ( x1 -- x2 ) \ 94
\ x2 - результат сдвига x1 на один бит вправо без изменения старшего бита.
    D1 C, F8 C,  \    SAR EAX, # 1
    RET
END-CODE
</pre>
=== Советская реализация ===
Слово 2/ в ФОРТ-ЕС было [[примитив]]ом. Вот его описание и определение:
<PRE>
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
</PRE>
В FORTH ИТЭФ слово 2/ было [[примитив]]ом, вот его определение:
<PRE>
            HEAD    202Q,'2',257Q,DIV2                  ; 2/
            POP  AX
            SAR  AX, 1
            PUSH  AX
            NEXT
</PRE>


== Ссылки ==
== Ссылки ==
* {{Исходник|TwoDiv|2/}}
* См. слова [[2×]] [[2+]] [[2−]] [[BODY〉|BODY&gt;]]
* См. слова [[Слово /|/]], [[2×]], [[2+]] и [[2−]]
* См. также [[символ /]]
* Слово [http://forth.sourceforge.net/standard/dpans/dpans6.htm#6.1.0330 2/ (two-slash)] и [http://forth.sourceforge.net/standard/dpans/dpansa6.htm#A.6.1.0330 комментарии к нему] в стандарте ANS Forth ''(англ.)''
* Слово [http://forth.sourceforge.net/standard/dpans/dpans6.htm#6.1.0330 2/ (two-slash)] и [http://forth.sourceforge.net/standard/dpans/dpansa6.htm#A.6.1.0330 комментарии к нему] в стандарте ANS Forth ''(англ.)''
* Слово [http://forth.sourceforge.net/standard/dpans/dpans6.htm#6.1.2162 RSHIFT] в стандарте ANS Forth ''(англ.)''
* Слово [http://forth.sourceforge.net/standard/dpans/dpans6.htm#6.1.2162 RSHIFT] в стандарте ANS Forth ''(англ.)''
* Слова [http://forth-standard.org/standard/core/TwoDiv 2/ (two-slash)] и [http://forth-standard.org/standard/core/RSHIFT RSHIFT] в черновике Forth 200x ''(англ.)''
* Слова [http://www.forth200x.org/documents/html3/core/TwoDiv.html 2/ (two-slash)] и [http://www.forth200x.org/documents/html3/core/RSHIFT.html RSHIFT] в черновике Forth 200x ''(англ.)''
* [https://ru.wikipedia.org/wiki/%D0%91%D0%B8%D1%82%D0%BE%D0%B2%D1%8B%D0%B9_%D1%81%D0%B4%D0%B2%D0%B8%D0%B3 Битовый сдвиг в Википедии]
* [https://ru.wikipedia.org/wiki/%D0%91%D0%B8%D1%82%D0%BE%D0%B2%D1%8B%D0%B9_%D1%81%D0%B4%D0%B2%D0%B8%D0%B3 Битовый сдвиг в Википедии]
* [https://en.wikipedia.org/wiki/Logical_shift Logical shift] и [https://en.wikipedia.org/wiki/Arithmetic_shift Arithmetic shift] в английской Википедии ''(англ.)''
* [https://en.wikipedia.org/wiki/Logical_shift Logical shift] и [https://en.wikipedia.org/wiki/Arithmetic_shift Arithmetic shift] в английской Википедии ''(англ.)''
* [http://gudleifr.h1.ru/cgi-bin/pilo.cgi?FL=../g9.txt&IS=\6.PERWOISTOTNIKI\LEO%20BRODIE%20STARTING%20FORTH\05.OPERAZII%20NAD%20ZELYMI%20TISLAMI ОПЕРАЦИИ НАД ЦЕЛЫМИ ЧИСЛАМИ] в книге [http://gudleifr.h1.ru/cgi-bin/pilo.cgi?FL=../g9.txt&IS=\6.PERWOISTOTNIKI\LEO%20BRODIE%20STARTING%20FORTH Л.Броуди «Начальный курс программирования на языке Форт»]
* [http://gudleifr.h1.ru/cgi-bin/pilo.cgi?FL=../g9.txt&IS=\6.PERWOISTOTNIKI\LEO%20BRODIE%20STARTING%20FORTH\07.TISLO%20TIPOW%20TISEL ЧИСЛО ТИПОВ ЧИСЕЛ] в книге [http://gudleifr.h1.ru/cgi-bin/pilo.cgi?FL=../g9.txt&IS=\6.PERWOISTOTNIKI\LEO%20BRODIE%20STARTING%20FORTH Л.Броуди «Начальный курс программирования на языке Форт»]
* [http://www.forth.com/starting-forth/sf5/sf5.html The Philosophy of Fixed Point] в книге [http://www.forth.com/starting-forth/ Leo Brodie Starting Forth] ''(англ.)''
* [http://www.forth.com/starting-forth/sf7/sf7.html A Number of Kinds of Numbers] в книге [http://www.forth.com/starting-forth/ Leo Brodie Starting Forth] ''(англ.)''




{{нет иллюстраций}}
{{заготовка}}
{{заготовка}}
[[Категория:Слова Каллисто]]
[[Категория:Слова Каллисто]]
Строка 94: Строка 49:
[[Категория:Одноместные операции Каллисто]]
[[Категория:Одноместные операции Каллисто]]
[[Категория:Операции целочисленного деления Каллисто]]
[[Категория:Операции целочисленного деления Каллисто]]
[[Категория:Стандартные слова]]
[[Категория:Описание бета-версии Каллисто]]
[[Категория:1994 CORE]]
[[Категория:2012 CORE]]
Пожалуйста, учтите, что любой ваш вклад в проект «ПМК вики» может быть отредактирован или удалён другими участниками. Если вы не хотите, чтобы кто-либо изменял ваши тексты, не помещайте их сюда.
Вы также подтверждаете, что являетесь автором вносимых дополнений, или скопировали их из источника, допускающего свободное распространение и изменение своего содержимого (см. Pmkwiki:Авторские права). НЕ РАЗМЕЩАЙТЕ БЕЗ РАЗРЕШЕНИЯ ОХРАНЯЕМЫЕ АВТОРСКИМ ПРАВОМ МАТЕРИАЛЫ!

В целях защиты вики от автоматического спама в правках просим вас решить следующую каптчу:

Отменить Справка по редактированию (в новом окне)
Источник — https://pmk.the-hacker.ru/2/