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 |