永发信息网

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

答案:5  悬赏:20  手机版
解决时间 2021-11-11 08:02
  • 提问者网友:半生酒醒
  • 2021-11-10 22:22
不使用比较操作符,如何比较两个数的大小
最佳答案
  • 五星知识达人网友:空山清雨
  • 2021-11-10 23:57
当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楼网友:行雁书
  • 2021-11-11 02:21
例如
c=a-b; //假定c占16bit
if(c>>15) printf("a else if(!(c>>15)&&(c!=0))
printf("a>b");
else
printf("a=b");
  • 2楼网友:底特律间谍
  • 2021-11-11 01:44
int a,b;
if (a-b)
cout<<"a=b"<else if( (a-b)>>(sizeof(int)-1))
cout<<"aelse
cout<<"a>b"<
  • 3楼网友:神的生死簿
  • 2021-11-11 01:31
不使用比较?
那可以说不可能实现. 不比较你又如何知道哪个数大呢.
不信你写试试,不能带 > < == 或组合哦
  • 4楼网友:轻熟杀无赦
  • 2021-11-11 01:13
化成分数进行比较 他们的分子分母相差数必须为1 如果分母越大 这个数就是越大
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯