前言:
位运算符是用来对二进制位进行操作的
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时,结果位才为1。
千万不要与 && 混淆
首先把数转换为2进制
比如:
10 二进制为:1010
11 二进制为:1011
1 0 1 0
1 0 1 1
----------------
1 0 1 0
注意:有对应的两个二进位都为1时,结果位才为1
结果 1010 还是10
10 & 11 等于 10
code:
#include <iostream>int main()
{auto i1 = 10; //2进制:1010 , 10进制:10auto i2 = 20; //2进制:10100 , 10进制:20std::cout << (i1 & i2)<<std::endl; //2进制00000 10进制:0/* 步骤: 当两个都为1时,才为11 0 1 01 0 1 0 0---------0 0 0 0 0 */auto i3 = 11;std::cout << (i1 & i3); //2进制:1010 10进制:10/* 步骤: 当两个都为1时,才为11 0 1 01 0 1 1 ---------1 0 1 0*/system("pause");
}
应该是比较简单易懂的