การดำเนินการเชิงตรรกะแบบไบนารีเป็นพื้นฐานในโลกของคอมพิวเตอร์และอุปกรณ์อิเล็กทรอนิกส์ดิจิทัล ไม่เพียงแต่อนุญาตให้มีการคำนวณและการประมวลผลข้อมูลเท่านั้น แต่ยังเป็นพื้นฐานสำหรับการทำงานของคอมพิวเตอร์ปัจจุบันอีกด้วย การดำเนินการแต่ละครั้งได้รับการออกแบบให้จัดการบิตค่า 0 และ 1 ซึ่งแสดงถึงสถานะเปิดและปิดของวงจรไฟฟ้าของอุปกรณ์ที่เราใช้ในชีวิตประจำวันของเรา
แนวคิดของลอจิกไบนารี่มีการใช้กันมานานแล้ว แต่ความสำคัญของมันได้เติบโตขึ้นอย่างทวีคูณด้วยการพัฒนาเทคโนโลยีดิจิทัล ในบทความนี้ เราจะสำรวจเชิงลึกเกี่ยวกับการดำเนินการเชิงตรรกะต่างๆ ที่สามารถทำได้กับชุดบิต วิธีการทำงาน และตำแหน่งที่นำไปใช้บ่อยที่สุด ไม่ว่าคุณจะเป็นนักเรียนที่เจอหัวข้อนี้เป็นครั้งแรกหรือมีประสบการณ์ในด้านนี้แล้ว คุณจะพบข้อมูลที่เป็นประโยชน์และมีรายละเอียด
บทบาทของตรรกะไบนารี
ตรรกะไบนารี่ใช้งานได้ สองสถานะ: 0 และ 1ซึ่งสอดคล้องกับเท็จและจริงในตรรกะคลาสสิก ช่วยให้สามารถประมวลผลข้อมูลจำนวนมากในระบบคอมพิวเตอร์และอุปกรณ์ดิจิทัลได้ การดำเนินการที่ทำกับบิตเหล่านี้เรียกว่า การดำเนินการบูลีนซึ่งเป็นหัวใจของพีชคณิตแบบบูล สถานะทั้งสองนี้อนุญาตให้กำหนดเงื่อนไขที่สามารถตรวจสอบและประมวลผลโดยวงจรและซอฟต์แวร์ได้อย่างรวดเร็วและแม่นยำอย่างยิ่ง
การดำเนินการเชิงตรรกะหลัก
การดำเนินการทางตรรกะกับเลขฐานสองจะดำเนินการทีละบิต นั่นคือ แต่ละบิตจะถูกประเมินแยกกันกับบิตที่เหมือนกันในอินพุตอื่น ผลลัพธ์ของแต่ละบิตจะถูกรวมเข้าด้วยกันเพื่อสร้างผลลัพธ์สุดท้ายของการดำเนินการ การดำเนินการพื้นฐานที่พบบ่อยที่สุดมีอธิบายไว้ด้านล่างนี้
และการดำเนินการ (ตรรกะ AND)
การดำเนินการ AND มีหน้าที่รับสองบิตเป็นอินพุตและสร้างเอาต์พุตที่จะเป็น 1 เฉพาะในกรณีที่บิตอินพุตทั้งสองเป็น 1- มิฉะนั้นเอาต์พุตจะเป็น 0 กล่าวอีกนัยหนึ่ง บิตทั้งสองจะต้องเป็นจริงเพื่อให้ได้ผลลัพธ์ที่แท้จริง
ตัวอย่างของการดำเนินการ AND:
1010 และ 1100 = 1000
ในตัวอย่างนี้ เฉพาะบิตที่เป็นจริงบนอินพุตทั้งสองเท่านั้นที่ยังคงอยู่ (นั่นคือ 1) ในผลลัพธ์
หรือการดำเนินการ (ตรรกะ OR)
ในทางกลับกัน การดำเนินการ OR จะใช้สองบิตเป็นอินพุตและจะส่งคืน a 1 ถ้าอย่างน้อยหนึ่งบิตอินพุตเป็น 1- นั่นคือถ้าหนึ่งในสอง (หรือทั้งสอง) เป็นจริง ผลลัพธ์ก็จะเป็นจริงเช่นกัน
ตัวอย่างการดำเนินการ OR:
1010 หรือ 1100 = 1110
ในกรณีนี้ บิตใดๆ ที่เป็นจริงบนอินพุตตัวใดตัวหนึ่งหรือทั้งสองตัวก็จะเป็นจริงในเอาต์พุตด้วย
ไม่ได้ดำเนินการ (ไม่ใช่ทางตรรกะ)
การดำเนินการ NOT เป็นวิธีที่ง่ายที่สุด เนื่องจากต้องการเพียงบิตเดียวเป็นอินพุต หน้าที่ของมันคือกลับค่าของบิตอินพุต ดังนั้น, ถ้าอินพุตเป็น 0 เอาต์พุตจะเป็น 1และในทางกลับกัน
ไม่ใช่ตัวอย่างการดำเนินการ:
ไม่ใช่ 1010 = 0101
ในตัวอย่างนี้ บิตทั้งหมดได้รับการกลับด้านในผลลัพธ์
การดำเนินการเชิงตรรกะเพิ่มเติม
นอกเหนือจากการดำเนินการหลักสามประการแล้ว ยังมีการดำเนินการเชิงตรรกะอื่นๆ ที่ใช้น้อยกว่าซึ่งมีบทบาทสำคัญในระบบและสถานการณ์บางอย่างด้วย
การทำงานของ NAND (ไม่ใช่แบบตรรกะและ)
NAND คือการรวมกันของ AND โดยที่ NOT กลับกัน มันจะสร้างผลลัพธ์เป็น 1 ทุกครั้ง บิตอินพุตอย่างน้อยหนึ่งบิตคือ 0- มันจะคืนค่า 0 หากบิตอินพุตทั้งสองเป็น 1
การดำเนินการ NOR (ไม่ใช่เชิงตรรกะ)
NOR คือค่าผกผันของการดำเนินการ OR มันแปรผันในลักษณะที่ผลลัพธ์จะเป็น 1 เท่านั้น ถ้าบิตอินพุตทั้งสองเป็น 0- มิฉะนั้นจะส่งกลับ 0
การดำเนินการ XOR (เฉพาะ OR)
XOR เป็นการดำเนินการทางลอจิคัลที่คืนค่า 1 เฉพาะในกรณีที่บิตอินพุตต่างกัน หากทั้งสองเท่ากัน (ทั้ง 0 หรือทั้ง 1) ผลลัพธ์จะเป็น 0
การดำเนินการ XNOR (ไม่ใช่เฉพาะ O)
XOR ยังมีคู่: XNOR โอเปอเรเตอร์นี้จะคืนค่า 1 หากบิตอินพุตเหมือนกัน (ทั้ง 0 หรือทั้ง 1) และจะส่งคืนค่า 0 หากบิตต่างกัน
การดำเนินการลอจิกไบนารี่ใช้ที่ไหน?
การดำเนินการลอจิกไบนารี่เป็นเรื่องธรรมดามากใน ระบบเครือข่าย อิเล็กทรอนิกส์ดิจิทัล และการเขียนโปรแกรม- แม้ว่าเราอาจไม่ทราบ แต่การดำเนินการเหล่านี้อยู่เบื้องหลังกิจกรรมประจำวันหลายอย่างที่เราดำเนินการกับอุปกรณ์อิเล็กทรอนิกส์
หนึ่งในตัวอย่างที่ชัดเจนที่สุดที่ใช้การดำเนินการเหล่านี้คือ ที่อยู่ IPv4- อุปกรณ์แต่ละเครื่องที่เชื่อมต่อกับเครือข่ายจะได้รับที่อยู่ IP และซับเน็ตมาสก์ เมื่อใช้การดำเนินการ AND อุปกรณ์จะเปรียบเทียบที่อยู่ของตนกับอุปกรณ์อื่นๆ เพื่อทราบว่าอุปกรณ์เหล่านั้นอยู่ในเครือข่ายเดียวกันหรือควรส่งข้อมูลที่ส่งไปยังเครือข่ายอื่นหรือไม่
ตัวอย่างการใช้งานใน IPv4:
เมื่ออุปกรณ์เปรียบเทียบที่อยู่กับซับเน็ตมาสก์:
ที่อยู่ IP: 11000000.10101000.00000001.00000001 ซับเน็ต: 11111111.11111111.11111111.00000000
เมื่อใช้การดำเนินการ AND แบบทีละนิด เราจะได้สิ่งต่อไปนี้:
11000000.10101000.00000001.00000000
ผลลัพธ์คือที่อยู่เครือข่ายที่อุปกรณ์นั้นอยู่
ความสำคัญของจอร์จ บูล
ตรรกะไบนารี่และชุดการดำเนินการที่เราอธิบายไว้จะไม่มีอยู่จริงอย่างที่เรารู้จักหากไม่มีการทำงานของนักคณิตศาสตร์ จอร์จ บูล- อัจฉริยะแห่งศตวรรษที่ 19 นี้ได้สร้างสิ่งที่เรารู้จักในชื่อพีชคณิตแบบบูลีน ซึ่งวางรากฐานทางคณิตศาสตร์สำหรับการดำเนินการแบบบูลีน และท้ายที่สุดก็สำหรับตรรกะไบนารี่ที่ใช้สร้างคอมพิวเตอร์และระบบดิจิทัลในปัจจุบัน
Boole มีส่วนสนับสนุนในช่วงเวลาที่คณิตศาสตร์และตรรกศาสตร์เดินไปตามเส้นทางที่ต่างกัน วิสัยทัศน์ของเขาในการรวมทั้งสองสาขาวิชาเข้าด้วยกันได้เปลี่ยนรากฐานของสิ่งที่เราเข้าใจในปัจจุบันว่าเป็นตรรกะดิจิทัล
การดำเนินการระดับบิต
นอกเหนือจากการดำเนินการดังกล่าวแล้ว การดำเนินการระดับบิตยังมีการใช้งานจริงในการประมวลผลข้อมูลอีกด้วย การดำเนินการเหล่านี้อนุญาต จัดการและแก้ไขแต่ละบิต ของเลขฐานสองซึ่งจำเป็นสำหรับการกรองข้อมูล การปิดบังบิต และการจัดการตัวเลขในระบบที่เชื่อถือได้มากขึ้น
การดำเนินการ AND ในระดับบิต
ก่อนอื่น มาดูตัวดำเนินการ AND ที่ระดับบิตกันก่อน การดำเนินการนั้นค่อนข้างง่าย: คุณนำแต่ละคู่ของบิตที่สอดคล้องกันระหว่างตัวเลขสองตัวและใช้กฎของการดำเนินการ AND เพื่อตรวจสอบว่าบิตในตำแหน่งนั้นจะเป็น 0 (หากบิตอินพุตทั้งสองไม่ใช่ 1) หรือจะเป็น 1 (ถ้า บิตอินพุตทั้งสองคือ 1)
ตัวอย่างของการดำเนินการระดับบิตและ:
0101 และ 0011 = 0001
การใช้มาสก์เพื่อกรองบิตด้วย AND
ในการเขียนโปรแกรมดิจิทัล ตัวดำเนินการ AND มักใช้ควบคู่กับ หน้ากากบิต เพื่อเลือกหรือกรองบิตเฉพาะ ตัวอย่างเช่น หากคุณต้องการตรวจสอบว่าบิตใดบิตหนึ่งในลำดับบิตเปิดหรือปิดอยู่ คุณสามารถดำเนินการ AND ด้วยมาสก์ที่เลือกเฉพาะบิตนั้นได้
ตัวอย่างบิตมาสก์:
0011 และ 0010 = 0010
ในกรณีนี้ เรากำลังตรวจสอบว่าบิตที่สองเปิดอยู่หรือไม่ เนื่องจากผลลัพธ์ไม่เป็นศูนย์ เราจึงรู้ว่าบิตเปิดอยู่
การดำเนินการอื่นๆ เช่น ตัวดำเนินการ OR ยังมีแอปพลิเคชันมากมายเมื่อต้องทำงานในระดับบิต
การดำเนินการ XOR ระดับบิต
ตัวดำเนินการ XOR มีคุณลักษณะที่มีประโยชน์มากที่สุดอย่างหนึ่งในการเขียนโปรแกรมระดับต่ำโดยการอนุญาต สลับค่าระหว่างตัวแปรสองตัวโดยไม่ต้องใช้ตัวแปรชั่วคราว- เคล็ดลับนี้เรียกว่าการแลกเปลี่ยน XOR มีประสิทธิภาพมากและใช้ประโยชน์จากตารางความจริงของตัวดำเนินการ XOR
ตัวอย่างการแลกเปลี่ยน XOR:
a = a XOR bb = a XOR ba = a XOR b
หลังจากดำเนินการทั้ง 3 รายการแล้ว จะได้ค่าของ a
y b
พวกเขาจะถูกแลกเปลี่ยนโดยไม่ต้องใช้ตัวแปรที่สาม
การเปลี่ยนแปลงและการหมุนในระดับบิต
ในที่สุดการดำเนินงานของ การกำจัด y การหมุน อนุญาตให้ย้ายบิตของตัวเลขไปทางขวาหรือซ้าย การดำเนินการเหล่านี้มีประโยชน์ในหลายด้าน เช่น การเข้ารหัสและการจัดการข้อมูลในระบบฝังตัว
การเลื่อนไปทางซ้ายแบบลอจิคัลเทียบเท่ากับการคูณตัวเลขด้วย 2 ในขณะที่การเลื่อนไปทางขวาแบบลอจิคัลเทียบเท่ากับการหารตัวเลขด้วย 2
ด้วยการหมุนแบบแครี่ บิตที่ออกไปด้านหนึ่งจะกลับมาอีกด้านหนึ่ง ซึ่งมีประโยชน์สำหรับอัลกอริธึมการเข้ารหัสบางตัวและบนฮาร์ดแวร์เฉพาะ
ท้ายที่สุดแล้ว การทำความเข้าใจการดำเนินการเหล่านี้เป็นกุญแจสำคัญในการทำงานอย่างมีประสิทธิภาพในพื้นที่ที่ต้องมีการจัดการบิตโดยตรง เช่น การเขียนโปรแกรมระดับต่ำ การพัฒนาระบบฝังตัว หรือการออกแบบฮาร์ดแวร์ดิจิทัล