只得用C的位算符和逻辑运算符来比较两个数的大小 ,求思路!
只能用C的位算符和逻辑运算符来比较两个数的大小 ,求思路!!!!!
书上一习题。。。
只能用C的位算符和逻辑运算符来比较两个数的大小,百思不得其解!
有会的吗! 给点思路也可以!!!!
------解决方案--------------------
------解决方案--------------------
书上一习题。。。
只能用C的位算符和逻辑运算符来比较两个数的大小,百思不得其解!
有会的吗! 给点思路也可以!!!!
------解决方案--------------------
unsigned int a =654651, b=654541 ;
unsigned int c = a ^b;
unsigned int n = 0, max = 0;
while ( !(c &0xf0000000) )
{
c<<=4;
n+=4;
}
while(!(c &0x80000000 ) )
{
c<<=1;
n++;
}
c>>=32-n-1;
max = (a & c)? a:b;
------解决方案--------------------
int a, b, aXORb;
int adiff, bdiff;
aXORb = a ^ b;//进行异或运算,得出a与b的不同位,相同位即相等,不用管
adiff = a & aXORb; //得出a的不同位
bdiff = b & aXORb; //得出b的不同位
while(1)
{
adiff << 1;
bdiff << 1;
if( tempa & 0x8000 ) //此处把int当两个字节处理,TC下可以;如果int是4字节,则0x8000换成0x8000 0000
{
printf("a is the larger\n"); //此时a与b的最高位必然不同!因为相同位已经在前面过滤
return; //必然有一个先与出来非0,大者即为该数。
} //如果两者与出来都是0,则再向左移动一位
else if( tempb & 0x8000 )
{
printf("b is the larger\n");
return;
}
}