2010-10-06 2 views

ответ

12

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

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

7 5 - 7 3 - AND 

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

Ссылки:

  1. Bit Manipulations in Forth, часть обучения Forth по кусочкам.
  2. Раздел «Маленькая логика» в Chapter 4 от Начиная с.
+1

Не знаю, достаточно сказать, если это действительно так, но битовые шаблоны 0xFF00 и 0x00FF имеют побитовые и 0x0000, но логические и True (поскольку оба отличные от нуля) – SingleNegationElimination

+0

@TokenMacGuy: Спасибо! Это был такой пример, который я искал. Я обновил ответ. –

0

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

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

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

 Смежные вопросы

  • Нет связанных вопросов^_^