ในโปรแกรมคอมพิวเตอร์ตัวดำเนินการระดับบิตเป็นตัวดำเนินการสำหรับจัดการรูปแบบบิตในนิพจน์ Bitwise AND, OR, exclusive OR (XOR), ไม่ใช่, กะขวาและกะซ้ายเป็นการดำเนินการทั่วไป ภาษาโปรแกรมคอมพิวเตอร์ส่วนใหญ่มีตัวดำเนินการทั้งหกนี้ พวกเขามักจะใช้สำหรับการตั้งค่าการล้างหรือพลิกแต่ละบิตในโปรแกรมที่ควบคุมฮาร์ดแวร์คอมพิวเตอร์ ตัวดำเนินการ Bitwise มักใช้ในการเข้ารหัสข้อมูลและอัลกอริทึมการบีบอัด
ตัวดำเนินการบิตเรตทั่วไปจะแสดงสัญลักษณ์ในภาษาโปรแกรมเช่น C, C ++ และ Java พวกเขาจะใช้ในการแสดงออกเช่นเดียวกับผู้ประกอบการทางคณิตศาสตร์เช่นเครื่องหมายบวกหรือลบจะเป็น ตัวดำเนินการ bitwise AND แสดงด้วยเครื่องหมาย & & , หรือกับ pipe | และ XOR ด้วยเครื่องหมายรูปหมวก ^ ไม่หรือที่รู้จักกันในชื่อโอเปอร์เรเตอร์ระบุด้วยเครื่องหมายตัวหนอน ~
ตัวดำเนินการกะด้านขวาใช้เครื่องหมายคาเร็ตสองครั้งชี้ไปทางขวา >> ในทางตรงกันข้ามกะซ้ายจะถูกระบุด้วยเครื่องหมายคาเร็ตสองจุดซ้าย << Java รวมการดำเนินการเปลี่ยนกะขวาอีกอันหนึ่งซึ่งแสดงด้วยเครื่องหมายคาเร็ตสามจุดที่ถูกต้อง >>>
ตัวดำเนินการ Bitwise ใช้การดำเนินการทางตรรกะกับแต่ละคู่ของบิตในตัวถูกดำเนินการ ไม่กะขวาและกะซ้ายมีตัวถูกดำเนินการจริงเพียงหนึ่งตัวเท่านั้น ค่าที่สองในการดำเนินการกะคือจำนวนบิต เพื่อให้เข้าใจถึงวิธีการทำงานของผู้ประกอบการระดับบิตได้ดีขึ้นแต่ละคนสามารถเห็นภาพตัวถูกดำเนินการเป็นเลขฐานสอง ตัวอย่างเช่นตัวดำเนินการส่วนเสริมพลิกแต่ละบิตของตัวถูกดำเนินการเดี่ยวเป็นสถานะตรงข้าม หนึ่งกลายเป็นศูนย์และศูนย์กลายเป็นหนึ่ง ความสมบูรณ์ของค่าไบนารี 8 บิต 00110101 คือ 11001010
ตัวดำเนินการ AND มีตัวถูกดำเนินการสองตัว ทีละบิตตรรกะและการดำเนินการจะดำเนินการโดยใช้หนึ่งบิตที่สอดคล้องกันจากแต่ละตัวถูกดำเนินการ ผลลัพธ์ของการดำเนินการแต่ละบิตจะอยู่ในตำแหน่งบิตนั้นของผลลัพธ์โดยรวม ตัวอย่างเช่นตัวดำเนินการ AND จะประมวลผลบิต 7 จากหนึ่งตัวถูกดำเนินการกับบิต 7 ของตัวถูกดำเนินการอื่น ผลลัพธ์จะถูกเก็บไว้ในบิตที่ 7 ของผลลัพธ์โดยรวม
ในการดำเนินการ AND จะต้องมีบิตตัวถูกดำเนินการหนึ่งอันเพื่อให้ผลลัพธ์เป็นหนึ่งมิฉะนั้นผลลัพธ์จะเป็นศูนย์ ตัวอย่างเช่นหากค่าไบนารี 8 บิตของตัวถูกดำเนินการคือ 00110101 และ 11110000 ผลลัพธ์จะเป็น 00110000 การใช้งานทั่วไปของตัวดำเนินการ AND คือการไม่ใช้บิตพิเศษในผลลัพธ์ สิ่งนี้ทำได้โดยการวางศูนย์ในตำแหน่งบิตเหล่านั้นในหนึ่งในตัวถูกดำเนินการ
ในการดำเนินการ OR บิตตัวถูกดำเนินการทั้งสองจะต้องเป็นศูนย์เพื่อให้ผลลัพธ์เป็นศูนย์ มิฉะนั้นผลลัพธ์จะเป็นหนึ่ง การใช้งานทั่วไปของโอเปอเรเตอร์ OR คือการตั้งค่าบิตของผลลัพธ์ให้เป็นบิต สิ่งนี้ทำได้โดยการวางคนในตำแหน่งบิตเหล่านั้นในหนึ่งในตัวถูกดำเนินการ สำหรับการดำเนินการ XOR ผลลัพธ์จะเป็นศูนย์ถ้าตัวถูกดำเนินการทั้งสองบิตเป็นศูนย์หรือถ้าตัวถูกดำเนินการทั้งสองเป็นหนึ่ง - มิฉะนั้นผลลัพธ์จะเป็นหนึ่ง
การเลื่อนซ้ายและการเลื่อนขวาเลื่อนบิตในตัวถูกดำเนินการไปทางซ้ายหรือขวาตามจำนวนตำแหน่งบิตที่ระบุ การเลื่อนขวาอย่างมีเหตุผลจะย้ายศูนย์ไปที่บิตซ้ายสุดซึ่งเป็นส่วนหนึ่งของการเปลี่ยนแปลง การคำนวณทางขวาของเลขคณิตจะคัดลอกบิตซ้ายสุด - บิตสัญญาณก่อนที่การเปลี่ยนแปลงจะอยู่ในตำแหน่งเดียวกันหลังจากการเลื่อน บิตต้นฉบับจะเลื่อนไปทางขวาพร้อมกับส่วนที่เหลือ การเลื่อนไปทางซ้ายอย่างใดอย่างหนึ่งจะย้ายศูนย์ไปที่บิตขวาสุด
เมื่อตัวถูกดำเนินการถูกเลื่อนบิตขวาสุดก่อนที่การเปลี่ยนแปลงจะถูกโยนทิ้งไป ในทำนองเดียวกันบิตที่อยู่ทางซ้ายสุดก่อนที่การเปลี่ยนแปลงทางซ้ายจะถูกกำจัด มันไม่ได้ล้อมรอบไปยังส่วนอื่น ๆ ของตัวถูกดำเนินการ
การดำเนินการเลื่อนระดับบิตเป็นภาษาและขึ้นอยู่กับการนำไปใช้ ตัวอย่างเช่นใน C และ C ++, >> และ << ทำการเลื่อนแบบลอจิคัลหากตัวถูกดำเนินการเป็นจำนวนเต็มไม่ได้ลงนาม หากตัวถูกดำเนินการเป็นจำนวนเต็มที่ลงนามมีแนวโน้มว่าการเปลี่ยนแปลงทางคณิตศาสตร์จะกระทำแทน ใน Java ตัวถูกดำเนินการทั้งหมดจะถูกพิจารณาว่ามีการเซ็นชื่อและการดำเนินการทางคณิตศาสตร์จะดำเนินการด้วย >> และ << เสมอ ตัวดำเนินการ >>> ใช้สำหรับการเลื่อนขวาแบบลอจิคัล แต่ก็ยังเป็นไปได้ที่จะทำการกะขวาแบบเลขคณิตโดยไม่ตั้งใจแทนโดยไม่ต้องพิมพ์ดีดอย่างระมัดระวัง
ภาวะแทรกซ้อนยังสามารถเกิดขึ้นได้เมื่อตัวถูกดำเนินการมีความยาวบิตแตกต่างกันหรือเมื่อบางคนลงนามและบางคนไม่ได้ลงนาม ตัวดำเนินการระดับบิตและค่าคงที่ตัวเลขที่อยู่ตรงกลางของนิพจน์ที่ซับซ้อนอาจไม่ได้รับการประเมินตามที่คาดไว้ ต้องใช้ความระมัดระวังในการระบุขนาดและลักษณะที่ลงชื่อ / ไม่ได้ลงชื่อของแต่ละปริมาณในนิพจน์ สิ่งนี้สามารถทำได้ด้วยการพิมพ์อย่างระมัดระวังหรือการกำหนดระหว่างกาลให้กับประเภทตัวแปรเฉพาะในรหัสโปรแกรม


