您的位置:首页 > 其它

逻辑位运算小结3——求x|y最小值

2016-12-21 21:39 267 查看
通信原理考试挂了,郁闷。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

直接上代码;测试通过

#include <iostream>

using namespace std;
//已知a<=x<=b , c<=y<=d, 求解x|y的最小值
unsigned MinOr(unsigned a, unsigned b, unsigned c, unsigned d )
{
unsigned m, tmp;
m = 0x80000000;
while ( m != 0 )
{
if( ~a & c & m )
{
tmp = ( a | m ) & -m;
if( tmp <= b )
{
a = tmp;
break;
}
}
else
if ( a & ~c & m )
{
tmp = ( c | m ) & -m;
if( tmp <= d )
{
c = tmp;
break;
}
}
m = m >> 1;
}
return a | c;
}

int main()
{
unsigned a, b, c, d;
cin>>a>>b>>c>>d;
cout<<MinOr(a, b, c, d)<<endl;
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息