Я знаю, что слово AND определяет двоичный and
... но что определяет логический and
?
Логический И в Форте?
Ответ 1
То же слово, AND
, также используется для логического и. Но двум входным значениям AND
рекомендуется правильно сформированные флаги; true и false представлены двумя значениями, битами все установлено (-1) и битами все unset (0). Другие значения, чем они могут работать как истинные (как в C), но могут привести к тонким ошибкам.
Все операторы сравнения возвращают хорошо сформированные флаги, но, например, -
нет. Нижеследующее оценивает значение false (0).
7 5 - 7 3 - AND
AND
получает битовые шаблоны 100 и 010. Результат равен 0 (как и побитовое и).
Литература:
- Бит-манипуляции в Форте, часть обучения по бит-биту.
- Раздел "Маленькая логика" в Глава 4 Запуск Forth.
Ответ 2
Forth AND бит-бит И по 64-битным значениям. Конечно, эти операторы работают нормально с масками. Но если эти значения являются всеми или всеми нулями, результатом также являются все единицы или все нули (то же самое верно для операций бит-бит OR и XOR INVERT).
Булевский флаг в Forth - это все единицы или все нули. Поэтому, если входы являются логическими флагами, вывод AND OR XOR INVERT также является логическим, и эти операторы могут быть использованы для представления булевых операторов. Обратите внимание, что операции типа = < 0 = результат в булевом флаге.
Аналогичная ситуация с+. Поскольку целые числа определяются как два дополнения, + (плюс) могут использоваться как для подписанных, так и для неподписанных чисел. Таким образом, нет никакого отдельного имени для беззнакового добавления целых чисел.