&与运算符:

int a=85,b=45;
cout<<(a&b);

输出:5

说明:1010101和101101进行与运算

1&1=1 0&1=0 1&0=0 0&0=0

所以(1010101)&(101101)=(101)=5

————————————————————————————————————————

|或运算符:

int a=85,b=45;
cout<<(a|b);

输出:125

说明:1010101和101101进行或运算

1|1=1 0|1=1 1|0=1 0|0=0

所以(1010101)&(101101)=(1111101)=125

————————————————————————————————————————

^异或运算符:

int a=85,b=45;
cout<<(a^b);

输出:5

说明:1010101和101101进行异或运算

1^1=0 0^1=1 1^0=1 0^0=0

所以(1010101)&(101101)=(1111000)=120

异或运算有以下性质:

a^0=a

a^a=0

a^b^b=a

一般地

int a=85,b=45;
a^=b;
b^=a;
a^=b;
cout<<a<<" "<<b;

输出:45 85

说明:

a^=b //a=a^b

b^=a //b=a^b=a^b^b=a

a^=b //a=a^b=b

——————————————————————————————————————

~ 按位取反

int a=85;
cout<<(~a);

输出:-86

说明:1010101进行按位取反

~1=0 ~0=1

所以~(000…0001010101)=(111^1110101010)=-86

[https://excalidraw.com/#json=4cHZx2VRh0VxdAAjF7m06,vpe5Q8WWLA3nDhDZTcL8hw] 13922419896 陈弈伊01