文字有些对不准,建议下滑直接看图
/*
位运算
~:按位求反
<< : 左移
>> : 右移
& : 位与
^ : 异或
| : 位或
~按位求反
原理 : 0变1, 1变0;
eg 10001101
~01110010
左移 <<
原理:把数字向左移动, 右边补零
eg : 1 0 0 0 1 << 2
1 0// 0 0 1 0 0
右移 >>
原理 : 把数字向右移动, 左边补零
eg : 1 0 0 0 1 >> 2
0 0 1 0 0 //0 1
位与(&)
原理 : 按照并且关系进行相应的运算
eg: 1 0 0 1 0
& 0 1 1 1 0
----------------
0 0 0 1 0
异或(^)
原理:异或异或,相异为1,相同为0
eg: 1 0 0 0 1 1 0
^ 0 1 1 0 1 1 0
---------------------
1 1 1 0 0 0 0
位或(|)
原理:按照或者关系进行相应的运算
eg: 1 0 0 1 0
| 0 1 1 1 0
----------------
1 1 1 1 0
优先级别~ , (<>) , & , ^ , |*/
/*
#include
void main()
{
int a = 1, b = 2, c;
c = a ^ b << 2;
printf("%d", c);
}//9
*/
/*
先将十进制转换成二进制(化成八位)
0 0 0 0 0 0 1 0
0 0 0 0 1 0 0 0
^ 0 0 0 0 0 0 0 1
------------------
0 0 0 0 1 0 0 1=9
*/
![cbc8f7ce367c5550575995760a3d7e2a.png](https://i-blog.csdnimg.cn/blog_migrate/af9fef400dd1ee9ce470fbf80d754adb.jpeg)
![83fa719dcde1c55fffdc00cd17f7f60a.png](https://i-blog.csdnimg.cn/blog_migrate/006f8c967bb7734d02132b03ae817e79.jpeg)