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 |