1.问题
存储单元内以补码形式表示的两个带符号数X和Y,要判断X和Y的大小关系,可采用如下的算法:
若X、Y两数符号相同,且(X-Y)为正,表明X>Y;否则,X<Y。
若两数符号不同,则根据符号判定大小。
2.源程序
int x,y;
int compdata(int x1,int y1);
void main()
{
int bigdata;
x=0x8fef;y=0x8fed;
bigdata=compdata(x,y);
}
int compdata(int x1,int y1)
{
int temp;
temp=x1;
temp=temp^y1;
if(temp==0)
return x1; //两数相等
else
{
if((temp&0x8000)==0) //两数同号
{
temp=temp^y1; //恢复temp为x1;
temp=temp-y1; //temp=x1-y1
{
if((temp&0x8000)==0)
return x1;
else
return y1;
}
}
else if((temp&0x8000)!=0) //两数异号
{
temp=temp^y1;
if((temp&0x8000)==0)
return x1;
else
return y1;
}
}
}
求得较大数为0x8fef。