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 |