ตัวดำเนินการ Bitwise ใน C [พร้อมตัวอย่างการเข้ารหัส]

เผยแพร่แล้ว: 2020-10-26

สารบัญ

บทนำ

โอเปอเรเตอร์เป็นองค์ประกอบสำคัญของทุกภาษาการเขียนโปรแกรม เป็นสัญลักษณ์ที่ใช้เพื่อให้บรรลุการดำเนินการทางตรรกะ คณิตศาสตร์ หรือโปรแกรมอื่นๆ C จัดเตรียมโอเปอเรเตอร์ที่หลากหลายสำหรับการดำเนินการหลายอย่าง เช่น การคำนวณทางคณิตศาสตร์ ตรรกะ และการจัดการบิต มีโอเปอเรเตอร์ที่แตกต่างกันแปดประเภทใน C. เหล่านี้คือ:

  • ตัวดำเนินการเลขคณิตในC
  • ตัวดำเนินการเชิงตรรกะในC
  • ตัวดำเนินการแบบมีเงื่อนไขใน C
  • ตัวดำเนินการเชิงสัมพันธ์ในC
  • ตัวดำเนินการเพิ่มและลดใน C
  • ตัวดำเนินการ Bitwise ใน C
  • ผู้ปฏิบัติงานที่ได้รับมอบหมายในC
  • เจ้าหน้าที่ปฏิบัติการพิเศษใน C

ในบทความนี้ คุณจะได้เรียนรู้เกี่ยวกับตัว ดำเนินการ Bitwise ใน C และวิธีใช้งาน

ตัวดำเนินการ Bitwise คืออะไร?

ตัว ดำเนินการ Bitwise ใน C เป็นประเภทของโอเปอเรเตอร์ที่ทำงานบนอาร์เรย์บิต สตริงบิต และการปรับแต่งค่าไบนารีด้วยแต่ละบิตที่ระดับบิต สำหรับการจัดการอุปกรณ์อิเล็กทรอนิกส์และการทำงานที่เกี่ยวข้องกับ IoT โปรแกรมเมอร์ใช้ตัวดำเนินการระดับบิต สามารถทำงานได้เร็วขึ้นในระดับบิต

ตัว ดำเนินการ Bitwise ใน C ดำเนินการกับแต่ละบิตของตัวถูกดำเนินการ โดยที่ตัวถูกดำเนินการคือค่าหรือนิพจน์ที่ตัวดำเนินการดำเนินการ โอเปอเรเตอร์เหล่านี้ยังใช้เพื่อดำเนินการหลักเช่นเดียวกับการดำเนินการทางคณิตศาสตร์ระดับสูงที่ต้องการการสนับสนุนโดยตรงจากโปรเซสเซอร์ เราสามารถแบ่งย่อยตัวดำเนินการระดับบิตได้เป็นสามประเภทย่อยตามหลักการทำงาน ตรรกะ (ระดับบิต AND, OR และ XOR), Shift (กะขวาและกะซ้าย) และส่วนประกอบ (ไม่ระดับบิต)

มีตัว ดำเนินการ Bitwise ที่แตกต่างกันหกตัวใน C เหล่านี้คือ:

· Bitwise และตัวดำเนินการ (&)

· ตัวดำเนินการ Bitwise OR (|)

·ตัวดำเนินการ OR พิเศษเฉพาะระดับ Bitwise (^)

· ตัวดำเนินการเสริมของ Binary One หรือตัวดำเนินการ Bitwise NOT (~)

·ตัวดำเนินการกะ Bitwise ซ้าย (<<)

· ตัวดำเนินการกะ Bitwise ขวา (>>)

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

นี่คือตารางที่แสดงให้เห็นว่าการคำนวณตัวดำเนินการระดับบิตนั้นให้ผลลัพธ์อย่างไร

X y x & y x | y x ^ y
0 0 0 0 0
0 1 0 1 1
1 0 0 1 1
1 1 1 1 0

Bitwise Operators ใน C มี ทั้งหมด 6 ประเภท เหล่านี้คือ:

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

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

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

ตัวดำเนินการเสริมของ Binary One หรือตัวดำเนินการ Bitwise NOT (~) ใน C: คอมไพเลอร์ C รู้จักตัวดำเนินการ Bitwise NOT ด้วยตัวดำเนินการ ~ ใช้ตัวถูกดำเนินการเพียงตัวเดียวและทำการผกผันของตัวเลขทั้งหมดของมัน เป็นโอเปอเรเตอร์เอกพจน์ เอาต์พุตของตัวดำเนินการนี้จะกลับบิตที่มีอยู่ทั้งหมดของตัวถูกดำเนินการนั้น

ตัวดำเนินการกะ Bitwise Left (<<) ใน C: คอมไพเลอร์ C รู้จักการ ดำเนินการกะด้านซ้าย ด้วย << ใช้ตัวถูกดำเนินการเพียงสองตัวและเลื่อนบิตทั้งหมดของตัวถูกดำเนินการแรกไปทางซ้าย ตัวถูกดำเนินการที่สองกำหนดจำนวนตำแหน่งที่ตัวดำเนินการนี้จะเปลี่ยนบิต มันเป็นตัวดำเนินการไบนารี

ตัวดำเนินการกะ Bitwise Right (>>) ใน C: คอมไพเลอร์ C รู้จักการดำเนินการกะด้านซ้ายด้วย >> ใช้ตัวถูกดำเนินการเพียงสองตัวและเลื่อนบิตทั้งหมดของตัวถูกดำเนินการแรกไปทางขวา ตัวถูกดำเนินการที่สองกำหนดจำนวนตำแหน่งที่ตัวดำเนินการนี้จะเปลี่ยนบิต มันเป็นตัวดำเนินการไบนารี

อ่าน: Operators in Python: A Beginner's Guide to Arithmetic, Relational, Logical & More

โปรแกรมสำหรับตัวดำเนินการ Bitwise ใน C

ให้เราดูที่โปรแกรมโดยใช้ตัวดำเนินการระดับบิตทั้งหมด

#include <stdio.h>

int หลัก ()

{

ถ่านที่ไม่ได้ลงชื่อ x = 20, y = 21; // x = 20 (00010100), y = 21 (00010101)

int ก. = 0;

ก. = x & y; /* 20 = 010100 */

printf(” ผลลัพธ์ของ Bitwise AND คือ %d \n”, g );

ก. = x | y; /* 21 = 010101 */

printf(” ผลลัพธ์ของ Bitwise OR คือ %d \n”, g );

ก. = x ^ y; /* 1 = 0001 */

printf(” ผลลัพธ์ของ Bitwise XOR คือ %d \n”, g );

ก. = ~x;

printf(” ผลลัพธ์ของ Bitwise NOT คือ %d \n”, g );

ก. = x << 1;

printf(” ผลลัพธ์ของ Bitwise Left Shift คือ %d \n”, g );

ก. = x >> 1;

printf(” ผลลัพธ์ของ Bitwise Right Shift คือ %d \n”, g );

กลับ 0;

}

เอาท์พุท:

ผลลัพธ์ของ Bitwise AND คือ 20

ผลลัพธ์ของ Bitwise OR คือ 21

ผลลัพธ์ของ Bitwise XOR คือ 1

ผลลัพธ์ของ Bitwise ไม่ใช่ -21

ผลลัพธ์ของ Bitwise Left Shift คือ40

ผลลัพธ์ของ Bitwise Right Shift คือ 10

อ่านเพิ่มเติม: บทช่วยสอน Python: การตั้งค่า, เครื่องมือ, คุณสมบัติ, แอปพลิเคชั่น, ประโยชน์, การเปรียบเทียบ

บทสรุป

ตัวดำเนินการระดับบิตคือตัวดำเนินการประเภทหนึ่งในภาษา C ที่ใช้สำหรับการเขียนโปรแกรมระดับบิต จำเป็นต้องรู้การใช้ตัวดำเนินการระดับบิต เนื่องจากเป็นวิธีที่มีประสิทธิภาพในการประหยัดพื้นที่ในการแสดงข้อมูล โปรแกรมเมอร์ใช้ตัวดำเนินการเหล่านี้ในด้านต่างๆ เช่น การเขียนโปรแกรมระบบ การเขียนโปรแกรมแบบฝัง และการออกแบบโปรโตคอล ดังนั้นโปรแกรมเมอร์จึงจำเป็นต้องรู้การใช้งาน

upGrad นำการเขียนโปรแกรมด้วย C และอีกมากมายด้วย ประกาศนียบัตร PG ของ upGrad ด้านความเชี่ยวชาญด้านการพัฒนาซอฟต์แวร์ในการพัฒนาแบบเต็ม กอง โปรแกรมที่จะทำให้คุณกลายเป็นนักพัฒนาเต็มรูปแบบและเรียนรู้การสร้างแอปพลิเคชันที่ยอดเยี่ยม เป็นโปรแกรม 12 เดือนที่ครอบคลุมการทำงานจริงในโครงการและงานที่ได้รับมอบหมาย และการฝึกอบรมภาษาโปรแกรมและเครื่องมือ 15 ภาษา นอกจากนี้ยังมีการสนับสนุนด้านอาชีพตลอดเวลาด้วยการสัมภาษณ์จำลองและความช่วยเหลือด้านงาน

ลงจอดบนงานในฝันของคุณ

อัปเกรดและ PG DIPLOMA ของ IIIT-BANGALORE ใน FULL STACK
สมัครวันนี้