ตัวดำเนินการระดับบิตในภาษาซี

Bitwise Operators C Language



ตัวดำเนินการระดับบิต ซึ่งมักเรียกว่าการเข้ารหัสระดับบิต ถูกละทิ้งเพื่อตีความข้อมูลในระดับบิตเท่านั้น Bitwise ดำเนินการกับรูปแบบบิตหนึ่งหรือเพิ่มเติมและเลขฐานสองในระดับบิต สิ่งเหล่านี้ถูกใช้เพื่อเพิ่มความเร็วในการประมาณการของการคำนวณเชิงตัวเลข ประกอบด้วยตัวเลขสองตัว ตัวหนึ่งเป็น 0 และอีกตัวคือ 1 นี่คือตัวดำเนินการระดับบิตที่เราจะพูดถึงในบทความของเรา

เข้าสู่ระบบจากระบบ Linux ของคุณและลองใช้ทางลัด Ctrl+Alt+T เพื่อเปิดคอนโซลเทอร์มินัล เราจะมีตัวอย่างเพื่ออธิบายการทำงานของตัวดำเนินการระดับบิตในภาษา C มาดูรายละเอียดเกี่ยวกับตัวดำเนินการระดับบิตแต่ละตัวแยกกัน







ระดับบิตและ:

ตัวดำเนินการระดับบิตถูกใช้เพื่อจำลองบิตไปยังผลลัพธ์หากมีบิตนั้นอยู่ในตัวถูกดำเนินการร่วมกันทั้งสอง C หรือ C++ ต้องการตัวถูกดำเนินการ 2 ตัวที่ทำงาน AND กับแต่ละบิตของจำนวนเต็มสองตัวนั้น Bitwise AND ผลลัพธ์ 1 เมื่อทั้งสองบิตมีค่าเท่ากับ 1 ดังนั้น เพื่อให้เข้าใจการทำงาน ให้สร้างและเปิดไฟล์ประเภท C โดยใช้ตัวแก้ไขนาโน เพื่อที่เราจะต้องใช้คำสั่งนาโนในเชลล์ดังนี้:



$นาโนtest.c



รหัสสำหรับตัวดำเนินการ Bitwise และแสดงอยู่ในภาพด้านล่าง สิ่งที่คุณต้องทำคือเพียงแค่เขียนโค้ดนี้ในไฟล์ตัวแก้ไข GNU nano test.c ตามที่เป็นอยู่ รหัสนี้มีไลบรารีส่วนหัว stdio.h โดยที่เราไม่สามารถเขียนโค้ดในการเขียนโปรแกรม C ได้ จากนั้นเราได้สร้างวิธีการหลักด้วยประเภทการส่งคืนเป็นจำนวนเต็ม ในภาษาซี การรันโค้ดทำได้โดยใช้วิธีหลัก ดังนั้นเราจึงได้ประกาศตัวแปรประเภทจำนวนเต็มสองตัวคือ x และ y โดยมีค่า 35 และ 13 ตามลำดับ หลังจากนั้น ตัวแปรจำนวนเต็มอื่นจะถูกระบุด้วยศูนย์เป็นค่าของมัน เราจะใช้ตัวแปรจำนวนเต็มสองตัวแรกและใช้ตัวดำเนินการ AND ระดับบิตระหว่างตัวแปรทั้งสอง งานนี้เสร็จสิ้นในบรรทัดถัดไปซึ่งตัวดำเนินการ AND ถูกใช้เป็น & และค่าผลลัพธ์จะถูกเก็บไว้ในตัวแปร null z จากนั้นเราใช้คำสั่ง print เพื่อแสดงค่าผลลัพธ์ในหน้าจอเทอร์มินัล และวิธีการหลักจะปิดลง บันทึกไฟล์ของคุณโดยใช้แป้นพิมพ์ลัดของ GNU Ctrl+S จากนั้นออกจากโปรแกรมแก้ไข nano โดยใช้ Ctrl+X จากเครื่องพิมพ์ดีดของแป้นพิมพ์





ดังนั้น ถึงเวลารวบรวมโค้ดด้านบนหลังจากบันทึกไฟล์แล้ว ใช้คำสั่ง gcc ในคอนโซลเชลล์ของคุณในขณะที่ใช้ชื่อไฟล์เป็น test.c หรืออะไรก็ตามที่คุณตั้งชื่อไฟล์แล้วกดปุ่ม Enter คุณจะเห็นว่าไม่มีข้อผิดพลาด ซึ่งหมายความว่ารหัสนั้นถูกต้องด้วยตนเอง



$gcctest.c

หลังจากคอมไพล์โค้ดแล้ว ก็ถึงเวลารันโค้ดทันที เพื่อจุดประสงค์นี้ ให้รันเคียวรีที่ระบุด้านล่างในเชลล์ ผลลัพธ์แสดง 1 เป็นผลลัพธ์ ซึ่งหมายความว่าตัวแปรจำนวนเต็มทั้งสองของเรามี 1 ในบิตของตน นี่คือเหตุผลที่มันส่งกลับ 1

$./ก.ออก

ระดับบิตหรือ:

ตอนนี้ได้เปิดให้ดำเนินการระดับบิต OR อย่างละเอียดแล้ว ตัวดำเนินการระดับบิตจะส่งกลับ 1 เป็นผลเมื่อหนึ่งในบิตของมันคือ 1 หากบิตทั้งสองของจำนวนเต็มสองตัวเป็น 0 ก็จะให้ผลเป็น 0 หลังจากได้รับบิตทั้งหมดแล้ว จะมีชุดของบิตที่สร้างขึ้น เราต้องดูว่าบิตเหล่านั้นก่อตัวขึ้นจำนวนเท่าใด ดังนั้น เปิดเอกสาร test.c เดียวกันก่อน พิมพ์แล้วบันทึกโค้ดที่แสดงด้านล่างในไฟล์ GNU โดยใช้ปุ่ม Ctrl+S รหัสเกือบจะเหมือนกับตัวอย่างตัวดำเนินการ AND ระดับบิตด้านบน ครั้งนี้เราเพิ่งเปลี่ยนค่าของจำนวนเต็ม x เป็น 47 และเราใช้ตัวดำเนินการ OR เช่น | ระหว่างตัวแปรทั้งสอง ออกจากไฟล์เพื่อคอมไพล์โค้ด

หลังจากรันเอกสาร test.c สำเร็จ มันจะแสดงบิตเอาต์พุต 47

$./ก.ออก

Bitwise XOR:

ตัวดำเนินการระดับบิตจะส่งกลับ 1 เมื่อบิตตัวเลขทั้งสองต่างกัน ดังนั้นเมื่อบิตเท่ากัน จะให้ผลเป็น 0 เครื่องหมายตัวดำเนินการ ^ จะแสดงตัวดำเนินการระดับบิต ดังนั้นอีกครั้ง เปิดเอกสารและเขียนรหัสเดิมในโปรแกรมแก้ไขไฟล์ GNU ครั้งนี้เราใช้ตัวดำเนินการ ^ ภายในตัวแปรจำนวนเต็มสองตัว และผลลัพธ์จะถูกเก็บไว้ในตัวแปร z ขณะพิมพ์ในเทอร์มินัล

คอมไพล์และรันไฟล์ test.c ส่งคืน 34 ผลลัพธ์ ซึ่งหมายความว่าจำนวนเต็ม 34 ใหม่จะถูกสร้างขึ้นหลังจากที่ตัวดำเนินการ XOR ถูกนำไปใช้กับตัวแปรจำนวนเต็มสองตัว

$./ก.ออก

เสริม Bitwise:

โอเปอเรเตอร์นี้จะถูกนำไปใช้กับตัวแปรเดียวเท่านั้นและจะคืนค่าของตัวเลขบิต ตัวอย่างเช่น มันจะเปลี่ยน 0 บิตเป็น 1 และ 1 เป็น 0 บิต เขียนโค้ดเดียวกันในไฟล์เดียวกันแต่มีการเปลี่ยนแปลงเล็กน้อยที่บรรทัดที่ 6 เราได้กำหนดส่วนกลับของ x เป็น z แล้ว

รวบรวมไฟล์และเรียกใช้ ใน C ผลลัพธ์ของการเสริม Bitwise จะเพิ่มขึ้นด้วย 1 โดยมีเครื่องหมายลบ

ตัวดำเนินการ Shift ซ้าย:

มันจะเปลี่ยนตำแหน่งของบิตในระดับหนึ่ง รหัสเดียวกันสามารถแสดงในภาพต่อท้าย- ด้านล่าง ในตัวอย่างนี้ เราจะเลื่อน 2 บิตไปทางซ้าย

ผลลัพธ์แสดง 188 เป็นค่าที่สร้างขึ้นใหม่

$./ก.ออก

ตัวดำเนินการกะขวา:

มันทำงานเหมือนกับกะซ้ายทำงานแต่ในทิศทางตรงกันข้ามดังแสดงในรหัสด้านล่าง

คราวนี้เราได้ 11 เป็นเอาต์พุตเมื่อเลื่อน 2 บิตไปทางด้านขวา

$./ก.ออก

บทสรุป:

เราได้กล่าวถึงตัวดำเนินการระดับบิต 6 ตัวพื้นฐานทั้งหมดในรหัสภาษา C ของเราแล้วในบทความนี้ ฉันหวังว่าคุณจะได้รับสิ่งที่คุณต้องการจากคำแนะนำของเรา