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 -

Show Examples

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 -

Show Examples

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 -

Show Examples

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:

Show Examples

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