LISP - Операторы

Оператор - это символ, который сообщает компилятору о необходимости выполнения определенных математических или логических операций. LISP позволяет выполнять множество операций с данными, поддерживаемых различными функциями, макросами и другими конструкциями.

Операции, разрешенные с данными, могут быть классифицированы как -

  • Арифметические операции
  • Операции сравнения
  • Логические операции
  • Побитовые операции

Арифметические операции

В следующей таблице показаны все арифметические операторы, поддерживаемые LISP. Предположим переменнуюA содержит 10 и переменную B держит 20, тогда -

Show Examples

Оператор Описание пример
+ Добавляет два операнда (+ AB) даст 30
- Вычитает второй операнд из первого (- AB) даст -10
* Умножает оба операнда (* AB) даст 200
/ Делит числитель на де-числитель (/ BA) даст 2
мод, rem Оператор модуля и остаток после целочисленного деления (мод BA) даст 0
incf Оператор увеличения увеличивает целочисленное значение на второй указанный аргумент (incf A 3) даст 13
decf Оператор Decrements уменьшает целочисленное значение на второй указанный аргумент (decf A 4) даст 9

Операции сравнения

В следующей таблице показаны все операторы отношения, поддерживаемые LISP для сравнения чисел. Однако, в отличие от реляционных операторов в других языках, операторы сравнения LISP могут принимать более двух операндов и работают только с числами.

Предположим переменную A содержит 10 и переменную B держит 20, то -

Show Examples

Оператор Описание пример
знак равно Проверяет, равны ли значения всех операндов или нет, если да, то условие становится истинным. (= AB) неверно.
знак равно Проверяет, все ли значения операндов разные или нет, если значения не равны, условие становится истинным. (/ = AB) верно.
> Проверяет, монотонно ли уменьшаются значения операндов. (> AB) не соответствует действительности.
< Проверяет, монотонно ли увеличиваются значения операндов. (<AB) верно.
> = Проверяет, больше ли значение любого левого операнда или равно значению следующего правого операнда, если да, то условие становится истинным. (> = AB) неверно.
<= Проверяет, меньше ли значение любого левого операнда или равно значению его правого операнда, если да, то условие становится истинным. (<= AB) верно.
Максимум Он сравнивает два или более аргумента и возвращает максимальное значение. (max AB) возвращает 20
мин Он сравнивает два или более аргумента и возвращает минимальное значение. (min AB) возвращает 10

Логические операции над логическими значениями

Общий LISP предоставляет три логических оператора: and, or, и notкоторый работает с логическими значениями. ПредполагатьA имеет значение ноль и B имеет значение 5, тогда -

Show Examples

Оператор Описание пример
и Требуется любое количество аргументов. Аргументы оцениваются слева направо. Если все аргументы не равны нулю, возвращается значение последнего аргумента. В противном случае возвращается ноль. (и AB) вернет NIL.
или же Требуется любое количество аргументов. Аргументы оцениваются слева направо, пока один из них не станет отличным от нуля, в этом случае возвращается значение аргумента, в противном случае возвращаетсяnil. (или AB) вернет 5.
не Он принимает один аргумент и возвращает t если аргумент оценивается как nil. (не A) вернет T.

Побитовые операции с числами

Побитовые операторы работают с битами и выполняют побитовые операции. Таблицы истинности для побитовых операций and, or и xor следующие:

Show Examples

п q p и q p или q p xor q
0 0 0 0 0
0 1 0 1 1
1 1 1 1 0
1 0 0 1 1
Assume if A = 60; and B = 13; now in binary format they will be as follows:
A = 0011 1100
B = 0000 1101
-----------------
A and B = 0000 1100
A or B = 0011 1101
A xor B = 0011 0001
not A  = 1100 0011

Побитовые операторы, поддерживаемые LISP, перечислены в следующей таблице. Предположим переменнуюA содержит 60 и переменную B имеет 13, тогда -

Оператор Описание пример
войти Это возвращает поразрядное логическое И его аргументов. Если аргумент не указан, результатом будет -1, что является идентификатором для этой операции. (logand ab)) даст 12
Logior Это возвращает поразрядное логическое ВКЛЮЧИТЕЛЬНОЕ ИЛИ его аргументов. Если аргумент не указан, результат равен нулю, что является идентификатором для этой операции. (logior ab) даст 61
logxor Это возвращает поразрядное логическое ИСКЛЮЧИТЕЛЬНОЕ ИЛИ его аргументов. Если аргумент не указан, результат равен нулю, что является идентификатором для этой операции. (logxor ab) даст 49
логнор Это возвращает побитовое НЕ своих аргументов. Если аргумент не указан, результатом будет -1, что является идентификатором для этой операции. (логнор аб) даст -62,
logeqv Это возвращает поразрядную логическую ЭКВИВАЛЕНТНОСТЬ (также известную как исключающее или) своих аргументов. Если аргумент не указан, результатом будет -1, что является идентификатором для этой операции. (logeqv ab) даст -50