不使用比较操作符,如何比较两个数的大小

来源:百度知道 编辑:UC知道 时间:2024/06/30 02:46:41

当A小于B时,则有A-B<0,即(A-B)的符号位(最高位)为1,使用1<<(sizeof(type)-1)可以得到一个符号位,将符号位的相与,得到是否有符号位,若有则表示小于,否则就是不小于.

bool IsLessThan(const int A,const int B)
{
return (bool)(((A-B) & (1<<(sizeof(int)-1)))>>(sizeof(int)-1));
}
bool IsGreatThan(const int A,const int B)
{
return IsLessThan(B,A);
}
bool IsEqual(const int A,const int B)
{
return !(IsLessThan(A,B)||(IsLessThan(B,A))
}

化成分数进行比较 他们的分子分母相差数必须为1 如果分母越大 这个数就是越大

不使用比较?
那可以说不可能实现. 不比较你又如何知道哪个数大呢.
不信你写试试,不能带 > < == 或组合哦

int a,b;
if (a-b)
cout<<"a=b"<<endl;
else if( (a-b)>>(sizeof(int)-1))
cout<<"a<b"<<endl;
else
cout<<"a>b"<<endl;

例如
c=a-b; //假定c占16bit
if(c>>15) printf(&quo