LISP - ตัวดำเนินการ
ตัวดำเนินการคือสัญลักษณ์ที่บอกให้คอมไพเลอร์ดำเนินการจัดการทางคณิตศาสตร์หรือตรรกะเฉพาะ LISP ช่วยให้สามารถดำเนินการกับข้อมูลจำนวนมากได้รับการสนับสนุนโดยฟังก์ชันต่างๆมาโครและโครงสร้างอื่น ๆ
การดำเนินการที่อนุญาตกับข้อมูลสามารถแบ่งได้เป็น -
- การดำเนินการเลขคณิต
- การดำเนินการเปรียบเทียบ
- การดำเนินการเชิงตรรกะ
- การดำเนินการ Bitwise
การดำเนินการเลขคณิต
ตารางต่อไปนี้แสดงตัวดำเนินการเลขคณิตทั้งหมดที่ LISP สนับสนุน สมมติตัวแปรA ถือ 10 และตัวแปร B ถือ 20 แล้ว -
Show Examples
ตัวดำเนินการ | คำอธิบาย | ตัวอย่าง |
---|---|---|
+ | เพิ่มสองตัวถูกดำเนินการ | (+ AB) จะให้ 30 |
- | ลบตัวถูกดำเนินการที่สองจากตัวแรก | (- AB) จะให้ -10 |
* | คูณตัวถูกดำเนินการทั้งสอง | (* AB) จะให้ 200 |
/ | หารเศษด้วยตัวเศษ | (/ BA) จะให้ 2 |
mod, rem | ตัวดำเนินการโมดูลัสและส่วนที่เหลือหลังจากการหารจำนวนเต็ม | (mod BA) จะให้ 0 |
incf | ตัวดำเนินการ Increments จะเพิ่มค่าจำนวนเต็มตามอาร์กิวเมนต์ที่สองที่ระบุ | (รวม A 3) จะให้ 13 |
Decf | ตัวดำเนินการลดจะลดค่าจำนวนเต็มตามอาร์กิวเมนต์ที่สองที่ระบุ | (decf A 4) จะให้ 9 |
การดำเนินการเปรียบเทียบ
ตารางต่อไปนี้แสดงตัวดำเนินการเชิงสัมพันธ์ทั้งหมดที่สนับสนุนโดย LISP ซึ่งเปรียบเทียบระหว่างตัวเลข อย่างไรก็ตามไม่เหมือนกับตัวดำเนินการเชิงสัมพันธ์ในภาษาอื่นตัวดำเนินการเปรียบเทียบ LISP อาจใช้ตัวถูกดำเนินการมากกว่าสองตัวและทำงานกับตัวเลขเท่านั้น
สมมติตัวแปร A ถือ 10 และตัวแปร B ถือ 20 แล้ว -
Show Examples
ตัวดำเนินการ | คำอธิบาย | ตัวอย่าง |
---|---|---|
= | ตรวจสอบว่าค่าของตัวถูกดำเนินการทั้งหมดเท่ากันหรือไม่ถ้าใช่เงื่อนไขจะกลายเป็นจริง | (= AB) ไม่เป็นความจริง |
/ = | ตรวจสอบว่าค่าของตัวถูกดำเนินการทั้งหมดแตกต่างกันหรือไม่หากค่าไม่เท่ากันเงื่อนไขจะกลายเป็นจริง | (/ = AB) เป็นจริง |
> | ตรวจสอบว่าค่าของตัวถูกดำเนินการลดลงอย่างจำเจหรือไม่ | (> AB) ไม่เป็นความจริง |
< | ตรวจสอบว่าค่าของตัวถูกดำเนินการเพิ่มขึ้นอย่างจำเจหรือไม่ | (<AB) เป็นจริง |
> = | ตรวจสอบว่าค่าของตัวถูกดำเนินการด้านซ้ายมากกว่าหรือเท่ากับค่าของตัวถูกดำเนินการด้านขวาถัดไปหรือไม่ถ้าใช่เงื่อนไขจะกลายเป็นจริง | (> = AB) ไม่เป็นความจริง |
<= | ตรวจสอบว่าค่าของตัวถูกดำเนินการด้านซ้ายน้อยกว่าหรือเท่ากับค่าของตัวถูกดำเนินการด้านขวาหรือไม่ถ้าใช่เงื่อนไขจะกลายเป็นจริง | (<= AB) เป็นจริง |
สูงสุด | จะเปรียบเทียบสองอาร์กิวเมนต์หรือมากกว่าและส่งกลับค่าสูงสุด | (max AB) ส่งกลับ 20 |
นาที | จะเปรียบเทียบอาร์กิวเมนต์ตั้งแต่สองตัวขึ้นไปและส่งกลับค่าต่ำสุด | (min AB) ส่งกลับ 10 |
การดำเนินการเชิงตรรกะกับค่าบูลีน
LISP ทั่วไปมีตัวดำเนินการตรรกะสามตัว: and, or, และ notที่ทำงานกับค่าบูลีน สมมติA มีค่าศูนย์และ B มีค่า 5 แล้ว -
Show Examples
ตัวดำเนินการ | คำอธิบาย | ตัวอย่าง |
---|---|---|
และ | ใช้อาร์กิวเมนต์จำนวนเท่าใดก็ได้ อาร์กิวเมนต์จะถูกประเมินจากซ้ายไปขวา หากอาร์กิวเมนต์ทั้งหมดประเมินค่าเป็นค่าไม่มีค่าของอาร์กิวเมนต์สุดท้ายจะถูกส่งกลับ มิฉะนั้นศูนย์จะถูกส่งกลับ | (และ AB) จะคืนค่า NIL |
หรือ | ใช้อาร์กิวเมนต์จำนวนเท่าใดก็ได้ อาร์กิวเมนต์จะได้รับการประเมินจากซ้ายไปขวาจนกว่าจะมีการประเมินค่าเป็นศูนย์ในกรณีเช่นนี้ค่าอาร์กิวเมนต์จะถูกส่งกลับมิฉะนั้นจะส่งกลับnil. | (หรือ AB) จะส่งกลับ 5. |
ไม่ | ใช้เวลาหนึ่งอาร์กิวเมนต์และส่งกลับ t หากอาร์กิวเมนต์ประเมินเป็น nil. | (ไม่ใช่ A) จะส่งคืน T. |
การดำเนินการ Bitwise บน Numbers
ตัวดำเนินการ Bitwise ทำงานบนบิตและดำเนินการแบบบิตต่อบิต ตารางความจริงสำหรับการดำเนินการในระดับบิตและหรือและ xor มีดังนี้ -
Show Examples
น | q | 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
ตัวดำเนินการ Bitwise ที่ LISP รองรับแสดงอยู่ในตารางต่อไปนี้ สมมติตัวแปรA ถือ 60 และตัวแปร B ถือ 13 แล้ว -
ตัวดำเนินการ | คำอธิบาย | ตัวอย่าง |
---|---|---|
เข้าสู่ระบบ | สิ่งนี้ส่งคืนค่าตรรกะ AND ของอาร์กิวเมนต์ที่ชาญฉลาด หากไม่มีการให้อาร์กิวเมนต์ผลลัพธ์คือ -1 ซึ่งเป็นข้อมูลประจำตัวสำหรับการดำเนินการนี้ | (logand ab)) จะให้ 12 |
ลอจิออร์ | สิ่งนี้จะคืนค่าการรวมเชิงตรรกะแบบบิตที่ชาญฉลาดหรือของอาร์กิวเมนต์ หากไม่มีการระบุอาร์กิวเมนต์ผลลัพธ์จะเป็นศูนย์ซึ่งเป็นข้อมูลประจำตัวสำหรับการดำเนินการนี้ | (logior ab) จะให้ 61 |
logxor | สิ่งนี้จะส่งคืนค่าเอกสิทธิ์เชิงตรรกะที่ชาญฉลาดหรือบิตของอาร์กิวเมนต์ หากไม่มีการระบุอาร์กิวเมนต์ผลลัพธ์จะเป็นศูนย์ซึ่งเป็นข้อมูลประจำตัวสำหรับการดำเนินการนี้ | (logxor ab) จะให้ 49 |
Lognor | สิ่งนี้ส่งคืนค่าบิตที่ไม่ฉลาดของอาร์กิวเมนต์ หากไม่มีการให้อาร์กิวเมนต์ผลลัพธ์คือ -1 ซึ่งเป็นข้อมูลประจำตัวสำหรับการดำเนินการนี้ | (lognor ab) จะให้ -62, |
logeqv | สิ่งนี้จะคืนค่าสมการเชิงตรรกะแบบ bit-wise (หรือที่เรียกว่าเอกสิทธิ์หรือ) ของอาร์กิวเมนต์ หากไม่มีการให้อาร์กิวเมนต์ผลลัพธ์คือ -1 ซึ่งเป็นข้อมูลประจำตัวสำหรับการดำเนินการนี้ | (logeqv ab) จะให้ -50 |