#include <iostream>
using namespace std;
void main()
{
/*********************************************
* 算术运算符:+、-、*、/、%、++、--
* 关系运算符:<、>、>=、<=、==、!=
* 逻辑运算符:&&、||、!
* 赋值运算符:+=、-=、*=、/=、%=、<<=(左移赋值)、>>=(右移赋值)、&=、|=、^=
* 位运算符:&、|、~、^
* 移位运算符:<<、>>
*
*********************************************/
int i = 5, j = 8, k = 12, l = 4, x1, x2;
x1 = i > j && k > l;
x2 = !(i > j) && k > l;
cout << x1 << endl << x2 << endl;
// 位运算符
// &:位逻辑与 两个二进制操作数从低位到高位对齐,每位求与,两数同位都为1,则得1,否则得0。
// 0000 0000 0000 1100
// &0000 0000 0000 1000
// 0000 0000 0000 1000
// |:位逻辑或 两个二进制操作数从低位到高位对齐,每位求或,两数同位都为0,则得0,否则得1。
// 0000 0000 0000 0100
// |0000 0000 0000 1000
// 0000 0000 0000 1100
// ^:位逻辑异或 两个二进制操作数从低位到高位对齐,每位求异或,两数同位不同时为1,则得1,否则得0。
// 0000 0000 0001 1111
// ^0000 0000 0001 0110
// 0000 0000 0000 1001
// ~:取反运算符 将一个二进制操作数每一位,1变成0,0变成1
// ~1010 0011 1001 1011
// 0101 1100 0110 0100
// 移位运算符
// <<:左移运算符 将二进制操作数按指定移动位数向左移,左边(高位端)溢出的位被丢弃,右边(低位端)的空位用0补充。
// 左移位运算相当于乘以2的幂
// 1010 0011 1001 1011 << 1
// 0100 0111 0011 0110
// >>:右移运算符 将二进制操作数按指定移动位数向右移,右边(低位端)溢出的位被丢弃,左边(高位端)的空位用0补充。
// 右移位运算相当于除以2的幂
// 1010 0011 1001 1011 >> 1
// 0101 0001 1100 1101
}