# 邏輯運算、位元運算

int num = 75;
cout <<  (num > 70 && num < 80) << endl;
cout << (num > 80 || num < 75) << endl;
cout << !(num > 80 || num < 75) << endl;

&&運算中，如果左邊的式子已經被評斷為false，則可立即判斷整個式子為false，因而右邊的式子就不會再評斷； || 運算中如果左邊的式子已經被評斷為true，則可以判斷整個式子為true，因而右邊的式子就不會再評斷。

#include <iostream>
using namespace std;

int main() {
cout << "AND運算：" << endl;
cout << "0 AND 0\t\t" << (0 & 0) << endl;
cout << "0 AND 1\t\t" << (0 & 1) << endl;
cout << "1 AND 0\t\t" << (1 & 0) << endl;
cout << "1 AND 1\t\t" << (1 & 1) << endl;

cout << "OR運算：" << endl;
cout << "0 OR 0\t\t" << (0 | 0) << endl;
cout << "0 OR 1\t\t" << (0 | 1) << endl;
cout << "1 OR 0\t\t" << (1 | 0) << endl;
cout << "1 OR 1\t\t" << (1 | 1) << endl;

cout << "XOR運算：" << endl;
cout << "0 XOR 0\t\t" << (0 ^ 0) << endl;
cout << "0 XOR 1\t\t" << (0 ^ 1) << endl;
cout << "1 XOR 0\t\t" << (1 ^ 0) << endl;
cout << "1 XOR 1\t\t" << (1 ^ 1) << endl;

cout << "NOT運算：" << endl;
cout << "NOT 0\t\t" << (!0) << endl;
cout << "NOT 1\t\t" << (!1) << endl;

return 0;
}

AND運算：
0 AND 0         0
0 AND 1         0
1 AND 0         0
1 AND 1         1
OR運算：
0 OR 0          0
0 OR 1          1
1 OR 0          1
1 OR 1          1
XOR運算：
0 XOR 0         0
0 XOR 1         1
1 XOR 0         1
1 XOR 1         0
NOT運算：
NOT 0           1
NOT 1           0

C++中的位元運算是逐位元運算的，例如10010001與01000001作AND運算，是一個一個位元對應運算，答案就是00000001；而補數運 算是將所有的位元0變1，1變0，例如00000001經補數運算就會變為11111110，例如下面這個程式所示：
char num = 255;
cout << static_cast<int>(~num);

#include <iostream>
using namespace std;

int main() {
int input = 0;

cout << "輸入正整數：";
cin >> input;
cout << "輸入為奇數？"
<< (input&1 ? 'Y' : 'N')
<< endl;

return 0;
}

 00000100