LISP - Operadores
Un operador es un símbolo que le dice al compilador que realice manipulaciones matemáticas o lógicas específicas. LISP permite numerosas operaciones sobre datos, respaldadas por varias funciones, macros y otras construcciones.
Las operaciones permitidas en los datos se pueden clasificar como:
- Operaciones aritmeticas
- Operaciones de comparación
- Operaciones lógicas
- Operaciones bit a bit
Operaciones aritmeticas
La siguiente tabla muestra todos los operadores aritméticos compatibles con LISP. Asumir variableA tiene 10 y variable B sostiene 20 entonces -
Operador | Descripción | Ejemplo |
---|---|---|
+ | Agrega dos operandos | (+ AB) dará 30 |
- | Resta el segundo operando del primero | (- AB) dará -10 |
* | Multiplica ambos operandos | (* AB) dará 200 |
/ | Divide el numerador por el numerador | (/ BA) dará 2 |
mod, rem | Operador de módulo y resto de después de una división entera | (mod BA) dará 0 |
incf | El operador de incrementos aumenta el valor entero por el segundo argumento especificado | (incf A 3) dará 13 |
decf | El operador de decrementos disminuye el valor entero por el segundo argumento especificado | (decf A 4) dará 9 |
Operaciones de comparación
La siguiente tabla muestra todos los operadores relacionales compatibles con LISP que compara entre números. Sin embargo, a diferencia de los operadores relacionales en otros lenguajes, los operadores de comparación LISP pueden tomar más de dos operandos y solo funcionan con números.
Asumir variable A tiene 10 y variable B tiene 20, entonces -
Operador | Descripción | Ejemplo |
---|---|---|
= | Comprueba si los valores de los operandos son todos iguales o no, si es así, la condición se convierte en verdadera. | (= AB) no es cierto. |
/ = | Comprueba si los valores de los operandos son todos diferentes o no, si los valores no son iguales, la condición se convierte en verdadera. | (/ = AB) es cierto. |
> | Comprueba si los valores de los operandos disminuyen monótonamente. | (> AB) no es cierto. |
< | Comprueba si los valores de los operandos aumentan monótonamente. | (<AB) es cierto. |
> = | Comprueba si el valor de cualquier operando izquierdo es mayor o igual que el valor del siguiente operando derecho; si es así, la condición se convierte en verdadera. | (> = AB) no es cierto. |
<= | Comprueba si el valor de cualquier operando de la izquierda es menor o igual que el valor de su operando de la derecha, si es así, la condición se convierte en verdadera. | (<= AB) es cierto. |
max | Compara dos o más argumentos y devuelve el valor máximo. | (max AB) devuelve 20 |
min | Compara dos o más argumentos y devuelve el valor mínimo. | (min AB) devuelve 10 |
Operaciones lógicas con valores booleanos
Common LISP proporciona tres operadores lógicos: and, or, y notque opera con valores booleanos. AsumirA tiene valor nulo y B tiene valor 5, entonces -
Operador | Descripción | Ejemplo |
---|---|---|
y | Requiere cualquier número de argumentos. Los argumentos se evalúan de izquierda a derecha. Si todos los argumentos se evalúan como no nulos, se devuelve el valor del último argumento. De lo contrario, se devuelve nil. | (y AB) devolverá NIL. |
o | Requiere cualquier número de argumentos. Los argumentos se evalúan de izquierda a derecha hasta que uno se evalúa como no nulo, en tal caso se devuelve el valor del argumento; de lo contrario, devuelvenil. | (o AB) devolverá 5. |
no | Toma un argumento y regresa t si el argumento se evalúa como nil. | (no A) devolverá T. |
Operaciones bit a bit en números
Los operadores bit a bit trabajan en bits y realizan operaciones bit a bit. Las tablas de verdad para operaciones bit a bit and, or y xor son las siguientes:
pags | q | p y q | po q | p xo 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
Los operadores Bitwise admitidos por LISP se enumeran en la siguiente tabla. Asumir variableA tiene 60 y variable B tiene 13, entonces -
Operador | Descripción | Ejemplo |
---|---|---|
logand | Esto devuelve el AND lógico bit a bit de sus argumentos. Si no se proporciona ningún argumento, el resultado es -1, que es una identidad para esta operación. | (logand ab)) dará 12 |
logior | Esto devuelve el OR INCLUSIVO lógico bit a bit de sus argumentos. Si no se proporciona ningún argumento, el resultado es cero, que es una identidad para esta operación. | (logior ab) dará 61 |
logxor | Esto devuelve el OR EXCLUSIVO lógico bit a bit de sus argumentos. Si no se proporciona ningún argumento, el resultado es cero, que es una identidad para esta operación. | (logxor ab) dará 49 |
lognor | Esto devuelve el NO bit a bit de sus argumentos. Si no se proporciona ningún argumento, el resultado es -1, que es una identidad para esta operación. | (lognor ab) dará -62, |
logeqv | Esto devuelve la EQUIVALENCIA lógica bit a bit (también conocida como exclusiva ni) de sus argumentos. Si no se proporciona ningún argumento, el resultado es -1, que es una identidad para esta operación. | (logeqv ab) dará -50 |