Логический И в Форте?

Я знаю, что слово AND определяет двоичный and... но что определяет логический and?

Ответ 1

То же слово, AND, также используется для логического и. Но двум входным значениям AND рекомендуется правильно сформированные флаги; true и false представлены двумя значениями, битами все установлено (-1) и битами все unset (0). Другие значения, чем они могут работать как истинные (как в C), но могут привести к тонким ошибкам.

Все операторы сравнения возвращают хорошо сформированные флаги, но, например, - нет. Нижеследующее оценивает значение false (0).

7 5 - 7 3 - AND

AND получает битовые шаблоны 100 и 010. Результат равен 0 (как и побитовое и).

Литература:

Ответ 2

Forth AND бит-бит И по 64-битным значениям. Конечно, эти операторы работают нормально с масками. Но если эти значения являются всеми или всеми нулями, результатом также являются все единицы или все нули (то же самое верно для операций бит-бит OR и XOR INVERT).

Булевский флаг в Forth - это все единицы или все нули. Поэтому, если входы являются логическими флагами, вывод AND OR XOR INVERT также является логическим, и эти операторы могут быть использованы для представления булевых операторов. Обратите внимание, что операции типа = < 0 = результат в булевом флаге.

Аналогичная ситуация с+. Поскольку целые числа определяются как два дополнения, + (плюс) могут использоваться как для подписанных, так и для неподписанных чисел. Таким образом, нет никакого отдельного имени для беззнакового добавления целых чисел.