LISP-연산자
연산자는 컴파일러에게 특정 수학적 또는 논리적 조작을 수행하도록 지시하는 기호입니다. LISP는 다양한 함수, 매크로 및 기타 구성에 의해 지원되는 데이터에 대한 수많은 작업을 허용합니다.
데이터에 허용되는 작업은 다음과 같이 분류 될 수 있습니다.
- 산술 연산
- 비교 작업
- 논리적 작업
- 비트 연산
산술 연산
다음 표는 LISP에서 지원하는 모든 산술 연산자를 보여줍니다. 변수 가정A 10 개와 가변 B 20을 보유하고-
Show Examples
운영자 | 기술 | 예 |
---|---|---|
+ | 두 개의 피연산자를 더합니다. | (+ AB)는 30을 줄 것입니다 |
- | 첫 번째에서 두 번째 피연산자를 뺍니다. | (-AB)는 -10을 줄 것입니다. |
* | 두 피연산자를 곱합니다. | (* AB)는 200을 줄 것입니다 |
/ | 분자를 탈 분자로 나눕니다. | (/ BA)는 2를 줄 것입니다 |
모드, 렘 | 계수 연산자 및 정수 나누기 후의 나머지 | (mod 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을 반환합니다. |
부울 값에 대한 논리 연산
Common LISP는 세 가지 논리 연산자를 제공합니다. and, or, 과 not부울 값에서 작동합니다. 취하다A 값이 nil이고 B 값이 5이면-
Show Examples
운영자 | 기술 | 예 |
---|---|---|
과 | 여러 인수를 사용합니다. 인수는 왼쪽에서 오른쪽으로 평가됩니다. 모든 인수가 nil이 아닌 것으로 평가되면 마지막 인수의 값이 반환됩니다. 그렇지 않으면 nil이 반환됩니다. | (및 AB)는 NIL을 반환합니다. |
또는 | 여러 인수를 사용합니다. 인수는 하나가 nil이 아닌 것으로 평가 될 때까지 왼쪽에서 오른쪽으로 평가됩니다.이 경우 인수 값이 반환되고 그렇지 않으면 반환됩니다.nil. | (또는 AB)는 5를 반환합니다. |
아니 | 하나의 인수를 취하고 t 인수가 다음과 같이 평가되면 nil. | (A가 아님)은 T를 반환합니다. |
숫자에 대한 비트 연산
비트 연산자는 비트에 대해 작업하고 비트 단위 연산을 수행합니다. 비트 및 또는 또는 xor 연산에 대한 진리표는 다음과 같습니다.
Show Examples
피 | 큐 | 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을 보유한 다음-
운영자 | 기술 | 예 |
---|---|---|
Logand | 인수의 비트 단위 논리 AND를 반환합니다. 인수가 제공되지 않으면 결과는이 작업의 ID 인 -1입니다. | (logand ab)) 12를 줄 것입니다 |
Logior | 인수의 비트 단위 논리 INCLUSIVE OR을 반환합니다. 인수가 지정되지 않은 경우 결과는이 작업의 ID 인 0입니다. | (logior ab)는 61을 줄 것입니다. |
logxor | 인수의 비트 단위 논리 EXCLUSIVE OR을 반환합니다. 인수가 지정되지 않은 경우 결과는이 작업의 ID 인 0입니다. | (logxor ab)는 49를 제공합니다 |
Lognor | 이것은 인수의 비트 단위 NOT을 반환합니다. 인수가 제공되지 않으면 결과는이 작업의 ID 인 -1입니다. | (lognor ab)는 -62, |
logeqv | 이것은 인수의 비트 단위 논리 EQUIVALENCE (배타적 또는 배타적이라고도 함)를 반환합니다. 인수가 제공되지 않으면 결과는이 작업의 ID 인 -1입니다. | (logeqv ab)는 -50을 제공합니다. |