位运算是基于二进制基础上进行的运算
一.与 &
需输入两个数,我们称其为a和b
1.计算方法
第一步.将a和b转为二进制
第二部.将其二进制的每一位(符号位除外)进行比较,若都为1,该位仍为1;若有1或2个0,该 位变为0
第三部.将其转换为十进制
2.流程图
设a为7,b为2
第一步.
将7转为111,将2转为10 (即都转为其二进制)
※第二步.
7→ 111
2→ 010 ※这里进行了补位(红色的0)
结果: 010
解析:
111 010 有1个0,结果为0
111 010 都是1,结果为1
111 010有1个0,结果为0
结果: 010
第三步.转为十进制
驱0: 010 变为:10
转成十进制:2
所以,(7&2)=2
(这真是一个伟大的发现......)
3.代码
#include <iostream>
using namespace std;
int a,b,c;
int main(){
a=7,b=2;
c=(a&b); //千万别忘加括号
cout<<c;
return 0;
}
看看结果,是不是2
二.或 |
需输入两个数,我们还称其为a和b
1.计算方法
第一步.将a和b转为二进制
第二部.将其二进制的每一位(符号位除外)进行比较,若有1,2个1,该位仍为1;若有2个0,该 位为0
第三部.将其转换为十进制
2.流程图
设a为8,b为5
第一步.
将8转为1000,将5转为101 (即都转为其二进制)
※第二步.
8→ 1000
5→ 0101 ※这里进行了补位(红色的0)
结果: 010
解析:
1000 0101 有1个1,结果为1
1000 0101 有1个1,结果为1
1000 0101 有2个0,结果为0
1000 0101 有1个1,结果为1
结果: 1101
第三步.转为十进制
转成十进制:13
所以,(8|5)=13
(这又是一个伟大的发现......)
3.代码
#include <iostream>
using namespace std;
int a,b,c;
int main(){
a=8,b=5;
c=(a|b); //千万别忘加括号*2
cout<<c;
return 0;
}
看看结果,是不是13