#include <iostream>
using namespace std;
int same_or(int perm1,int perm2)
{
int tmp=perm1>perm2 ? perm1:perm2;
int n=0, refer=~0, value;
while(tmp>>n)
n++;
refer<<=n;
tmp=perm1&perm2;
perm1=~(perm1|refer); //排除perm1高位上无效bit的干扰,如排除0001 1111的前面3个0
perm2=~(perm2|refer); //同上
value=perm1&perm2;
return value|tmp;
}
int main()
{
int c=same_or(4,5);
cout<<c<<endl;
return 0;
}
本文通过一个具体的函数实现展示了如何使用位操作来处理两个整数的共同部分,并排除高位上的无效比特位的干扰。主要关注于位运算符的使用,如与(&)、或(|)、非(~)以及移位运算符(>> 和 <<)。
1387

被折叠的 条评论
为什么被折叠?



