มีตัวดำเนินการระดับบิต 3 ตัวใน c++ เหล่านี้คือค่าระดับบิต AND(&), ค่าระดับบิต OR(|) และค่าระดับบิต XOR(^)
ตัวดำเนินการระดับบิต AND (&) เปรียบเทียบแต่ละบิตของตัวถูกดำเนินการแรกกับบิตที่สอดคล้องกันของตัวถูกดำเนินการที่สอง หากทั้งสองบิตเป็น 1 บิตผลลัพธ์ที่สอดคล้องกันจะถูกตั้งค่าเป็น 1 มิฉะนั้น บิตผลลัพธ์ที่สอดคล้องกันจะถูกตั้งค่าเป็น 0 ตัวถูกดำเนินการทั้งสองให้รวมตัวดำเนินการแบบรวมระดับบิตและต้องเป็นประเภทอินทิกรัล ตัวอย่างเช่น
ตัวอย่าง
#include <iostream> using namespace std; int main() { unsigned short a = 0x5555; // pattern 0101 ... unsigned short b = 0xAAAA; // pattern 1010 ... cout << hex << ( a & b ) << endl; }
ผลลัพธ์
สิ่งนี้ให้ผลลัพธ์ -
0
ตัวดำเนินการระดับบิต OR (|) เปรียบเทียบแต่ละบิตของตัวถูกดำเนินการแรกกับบิตที่สอดคล้องกันของตัวถูกดำเนินการที่สอง ถ้าบิตใดบิตหนึ่งเป็น 1 บิตผลลัพธ์ที่สอดคล้องกันจะถูกตั้งค่าเป็น 1 มิฉะนั้น บิตผลลัพธ์ที่สอดคล้องกันจะถูกตั้งค่าเป็น 0 ตัวถูกดำเนินการทั้งสองเป็นโอเปอเรเตอร์ OR ที่รวมระดับบิตต้องเป็นประเภทอินทิกรัล ตัวอย่างเช่น
ตัวอย่าง
#include <iostream> using namespace std; int main() { unsigned short a = 0x5555; // pattern 0101 ... unsigned short b = 0xAAAA; // pattern 1010 ... cout << hex << ( a | b ) << endl; }
ผลลัพธ์
สิ่งนี้ให้ผลลัพธ์ -
ffff
ตัวดำเนินการ OR ระดับบิตพิเศษ (^) เปรียบเทียบแต่ละบิตของตัวถูกดำเนินการตัวแรกกับบิตที่สอดคล้องกันของตัวถูกดำเนินการที่สอง ถ้าบิตหนึ่งเป็น 0 และอีกบิตหนึ่งเป็น 1 บิตผลลัพธ์ที่สอดคล้องกันจะถูกตั้งค่าเป็น 1 มิฉะนั้น บิตผลลัพธ์ที่สอดคล้องกันจะถูกตั้งค่าเป็น 0 ตัวถูกดำเนินการทั้งสองตัวเป็นโอเปอเรเตอร์ OR ระดับบิตพิเศษต้องเป็นประเภทอินทิกรัล ตัวอย่างเช่น
ตัวอย่าง
#include <iostream> using namespace std; int main() { short a = 0x5555; // pattern 0101 ... unsigned short b = 0xFFFF; // pattern 1111 ... cout << hex << ( a ^ b ) << endl; }
ผลลัพธ์
สิ่งนี้ให้ผลลัพธ์ -
aaaa
ซึ่งแสดงถึงรูปแบบ 1010...