前言:
位运算符是用来对二进制位进行操作的
c语言中有6种位运算符:
& 按位与 [链接]: https://blog.csdn.net/weixin_42837024/article/details/98736834
| 按位或 [链接]:https://blog.csdn.net/weixin_42837024/article/details/98745019
^ 按位异或 [链接]:https://blog.csdn.net/weixin_42837024/article/details/98745896
~ 取反 [链接]:https://blog.csdn.net/weixin_42837024/article/details/98748472
<< 左移 [链接]:https://blog.csdn.net/weixin_42837024/article/details/98734787
>> 右移 [链接]:https://blog.csdn.net/weixin_42837024/article/details/98734787
本篇讲 按位异或^ 运算符
当前位的两个二进制表示不同则为1相同则为0
首先把数转换为2进制
比如:
10 二进制为:1010
11 二进制为:1011
1 0 1 0
1 0 1 1
----------------
0 0 0 1
注意:当前位的两个二进制表示不同则为1相同则为0
结果 0001 是1
10 & 11 等于 1
Code:
int main()
{
auto i1 = 10; //2进制:1010 , 10进制:10
auto i2 = 20; //2进制:10100 , 10进制:20
std::cout << (i1 ^ i2) << std::endl; //2进制11110 10进制:30
/* 步骤: 当前位的两个二进制表示不同则为1相同则为0
1 0 1 0
1 0 1 0 0
---------
1 1 1 1 0
*/
auto i3 = 11;
std::cout << (i1 ^ i3); //2进制:1011 10进制:1
/* 步骤: 当前位的两个二进制表示不同则为1相同则为0
1 0 1 0
1 0 1 1
---------
0 0 0 1
*/
}