LISP - Operatory

Operator to symbol, który mówi kompilatorowi, aby wykonał określone operacje matematyczne lub logiczne. LISP umożliwia liczne operacje na danych, obsługiwane przez różne funkcje, makra i inne konstrukcje.

Operacje dozwolone na danych można sklasyfikować jako -

  • Działania arytmetyczne
  • Operacje porównawcze
  • Operacje logiczne
  • Operacje bitowe

Działania arytmetyczne

Poniższa tabela przedstawia wszystkie operatory arytmetyczne obsługiwane przez LISP. Przyjmij zmiennąA posiada 10 i zmienną B mieści wtedy 20 -

Show Examples

Operator Opis Przykład
+ Dodaje dwa operandy (+ AB) da 30
- Odejmuje drugi operand od pierwszego (- AB) da -10
* Mnoży oba operandy (* AB) daje 200
/ Dzieli licznik przez de-licznik (/ BA) da 2
mod, rem Operator modułu i reszta po dzieleniu całkowitoliczbowym (mod BA) da 0
incf Operator inkrementacji zwiększa wartość całkowitą o drugi podany argument (w tym A 3) daje 13
decf Operator zmniejszania zmniejsza wartość całkowitą o drugi podany argument (decf A 4) da 9

Operacje porównawcze

Poniższa tabela przedstawia wszystkie operatory relacyjne obsługiwane przez LISP, które porównują liczby. Jednak w przeciwieństwie do operatorów relacyjnych w innych językach, operatory porównania LISP mogą przyjmować więcej niż dwa operandy i działają tylko na liczbach.

Przyjmij zmienną A posiada 10 i zmienną B mieści 20, a następnie -

Show Examples

Operator Opis Przykład
= Sprawdza, czy wszystkie wartości operandów są równe, czy nie. Jeśli tak, warunek staje się prawdziwy. (= AB) nie jest prawdą.
/ = Sprawdza, czy wartości argumentów są różne, czy nie, jeśli wartości nie są równe, warunek staje się prawdziwy. (/ = AB) jest prawdą.
> Sprawdza, czy wartości operandów maleją monotonicznie. (> AB) nie jest prawdą.
< Sprawdza, czy wartości operandów rosną monotonicznie. (<AB) jest prawdą.
> = Sprawdza, czy wartość dowolnego lewego operandu jest większa lub równa wartości następnego prawego operandu, jeśli tak, warunek staje się prawdziwy. (> = AB) nie jest prawdą.
<= Sprawdza, czy wartość dowolnego lewego operandu jest mniejsza lub równa wartości jego prawego operandu, jeśli tak, warunek staje się prawdziwy. (<= AB) jest prawdą.
max Porównuje dwa lub więcej argumentów i zwraca maksymalną wartość. (max AB) zwraca 20
min Porównuje dwa lub więcej argumentów i zwraca wartość minimalną. (min AB) zwraca 10

Operacje logiczne na wartościach boolowskich

Wspólny LISP udostępnia trzy operatory logiczne: and, or, i notktóry działa na wartościach logicznych. ZałożyćA ma wartość nil i B ma wartość 5, to -

Show Examples

Operator Opis Przykład
i Wymaga dowolnej liczby argumentów. Argumenty są oceniane od lewej do prawej. Jeśli wartości wszystkich argumentów są różne od zera, zwracana jest wartość ostatniego argumentu. W przeciwnym razie zwracane jest nil. (i AB) zwróci NIL.
lub Wymaga dowolnej liczby argumentów. Argumenty są obliczane od lewej do prawej, dopóki jeden nie uzyska wartości różnej od zera, w takim przypadku zwracana jest wartość argumentu, w przeciwnym razie zwracanil. (lub AB) zwróci 5.
nie Pobiera jeden argument i zwraca t jeśli argument ma wartość nil. (nie A) zwróci T.

Operacje bitowe na liczbach

Operatory bitowe pracują na bitach i wykonują operacje bit po bicie. Tabele prawdy dla operacji bitowych i, or, i xor są następujące -

Show Examples

p q p i q p lub 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

W poniższej tabeli wymieniono operatory bitowe obsługiwane przez LISP. Przyjmij zmiennąA mieści 60 i zmienną B posiada 13, a następnie -

Operator Opis Przykład
logand Zwraca bitowe logiczne I argumentów. Jeśli nie podano argumentu, wynikiem jest -1, co jest tożsamością dla tej operacji. (logand ab)) da 12
logior Zwraca bitową logiczną wartość INCLUSIVE OR jej argumentów. Jeśli nie podano argumentu, wynikiem jest zero, co stanowi tożsamość tej operacji. (logior ab) da 61
logxor Zwraca bitową logiczną WYŁĄCZNĄ LUB jej argumentów. Jeśli nie podano argumentu, wynikiem jest zero, co stanowi tożsamość tej operacji. (logxor ab) da 49
lognor Zwraca bitową wartość NIE swoich argumentów. Jeśli nie podano argumentu, wynikiem jest -1, co jest tożsamością dla tej operacji. (lognor ab) da -62,
logeqv Zwraca bitową logiczną RÓWNOWAŻNOŚĆ (nazywaną również wyłączną nor) jej argumentów. Jeśli nie podano argumentu, wynikiem jest -1, co jest tożsamością dla tej operacji. (logeqv ab) da -50