LISP - Nhà khai thác

Một toán tử là một ký hiệu yêu cầu trình biên dịch thực hiện các thao tác toán học hoặc logic cụ thể. LISP cho phép thực hiện nhiều thao tác trên dữ liệu, được hỗ trợ bởi nhiều hàm, macro và các cấu trúc khác.

Các hoạt động được phép trên dữ liệu có thể được phân loại là:

  • Các phép tính toán học
  • Hoạt động so sánh
  • Hoạt động logic
  • Hoạt động Bitwise

Các phép tính toán học

Bảng sau đây cho thấy tất cả các toán tử số học được hỗ trợ bởi LISP. Giả sử biếnA giữ 10 và biến B giữ 20 sau đó -

Show Examples

Nhà điều hành Sự miêu tả Thí dụ
+ Thêm hai toán hạng (+ AB) sẽ cho 30
- Trừ toán hạng thứ hai với toán hạng đầu tiên (- AB) sẽ cho -10
* Nhân cả hai toán hạng (* AB) sẽ cho 200
/ Chia tử số cho tử số (/ BA) sẽ cho 2
mod, rem Toán tử mô đun và phần còn lại của sau một phép chia số nguyên (mod BA) sẽ cho 0
incf Toán tử tăng dần làm tăng giá trị số nguyên bằng đối số thứ hai được chỉ định (incf A 3) sẽ cho 13
decf Toán tử Decrements giảm giá trị số nguyên bởi đối số thứ hai được chỉ định (decf A 4) sẽ cho 9

Hoạt động so sánh

Bảng sau đây cho thấy tất cả các toán tử quan hệ được hỗ trợ bởi LISP để so sánh giữa các số. Tuy nhiên, không giống như các toán tử quan hệ trong các ngôn ngữ khác, các toán tử so sánh LISP có thể có nhiều hơn hai toán hạng và chúng chỉ hoạt động trên các số.

Giả sử biến A giữ 10 và biến B giữ 20, sau đó -

Show Examples

Nhà điều hành Sự miêu tả Thí dụ
= Kiểm tra xem các giá trị của các toán hạng có bằng nhau hay không, nếu có thì điều kiện trở thành true. (= AB) là không đúng.
/ = Kiểm tra xem giá trị của các toán hạng có khác nhau hay không, nếu các giá trị không bằng nhau thì điều kiện trở thành true. (/ = AB) là đúng.
> Kiểm tra xem giá trị của các toán hạng có giảm đơn điệu hay không. (> AB) là không đúng.
< Kiểm tra xem giá trị của các toán hạng có tăng đơn điệu hay không. (<AB) là true.
> = Kiểm tra xem giá trị của bất kỳ toán hạng bên trái nào lớn hơn hoặc bằng giá trị của toán hạng bên phải tiếp theo hay không, nếu có thì điều kiện trở thành true. (> = AB) là không đúng.
<= Kiểm tra xem giá trị của bất kỳ toán hạng bên trái nào nhỏ hơn hoặc bằng giá trị của toán hạng bên phải của nó hay không, nếu có thì điều kiện trở thành true. (<= AB) là đúng.
tối đa Nó so sánh hai hoặc nhiều đối số và trả về giá trị lớn nhất. (tối đa AB) trả về 20
min Nó so sánh hai hoặc nhiều đối số và trả về giá trị nhỏ nhất. (tối thiểu AB) trả về 10

Các phép toán logic trên các giá trị Boolean

LISP chung cung cấp ba toán tử logic: and, or,nothoạt động trên các giá trị Boolean. Giả địnhA có giá trị nil và B có giá trị 5, thì -

Show Examples

Nhà điều hành Sự miêu tả Thí dụ
Nó có bất kỳ số lượng đối số. Các đối số được đánh giá từ trái sang phải. Nếu tất cả các đối số đánh giá là khác không, thì giá trị của đối số cuối cùng được trả về. Nếu không, nil được trả về. (và AB) sẽ trả về NIL.
hoặc là Nó có bất kỳ số lượng đối số. Các đối số được đánh giá từ trái sang phải cho đến khi một đối số được đánh giá là khác không, trong trường hợp đó, giá trị đối số được trả về, nếu không nó sẽ trả vềnil. (hoặc AB) sẽ trả về 5.
không phải Nó nhận một đối số và trả về t nếu đối số đánh giá là nil. (không phải A) sẽ trả lại T.

Hoạt động bitwise trên số

Toán tử bitwise làm việc trên các bit và thực hiện hoạt động từng bit. Bảng sự thật cho các phép toán bitwise và, hoặc và xor như sau:

Show Examples

p q p và q p hoặc 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

Các toán tử Bitwise được LISP hỗ trợ được liệt kê trong bảng sau. Giả sử biếnA giữ 60 và biến B giữ 13, sau đó -

Nhà điều hành Sự miêu tả Thí dụ
logand Điều này trả về logic AND bit khôn ngoan của các đối số của nó. Nếu không có đối số nào được đưa ra, thì kết quả là -1, là định danh cho thao tác này. (logand ab)) sẽ cho 12
logior Điều này trả về logic BAO GỒM HOẶC các đối số của nó. Nếu không có đối số nào được đưa ra, thì kết quả là 0, đây là danh tính cho hoạt động này. (logior ab) sẽ cho 61
logxor Điều này trả về logic LOẠI TRỪ HOẶC logic khôn ngoan của các đối số của nó. Nếu không có đối số nào được đưa ra, thì kết quả là 0, đây là danh tính cho hoạt động này. (logxor ab) sẽ cho 49
lognor Điều này trả về NOT bit-khôn ngoan của các đối số của nó. Nếu không có đối số nào được đưa ra, thì kết quả là -1, là định danh cho thao tác này. (lognor ab) sẽ cho -62,
logeqv Điều này trả về TƯƠNG ĐƯƠNG lôgic khôn ngoan (còn được gọi là độc quyền cũng không) của các đối số của nó. Nếu không có đối số nào được đưa ra, thì kết quả là -1, là định danh cho thao tác này. (logeqv ab) sẽ cho -50