Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

ตัวดำเนินการ Bitwise ใน C++


มีตัวดำเนินการระดับบิต 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...