写一个比较函数比较哪个大:
void wholarge(int a,int b)
{int c=a-b;
if((unsigned)c>>(sizeof(int)*8-1)==0) (1)
{
cout<<"a larger"<<endl;
}else
{
cout<<"b larger"<<endl;
}
}
(1) : 先把a b 两个数的差进行强制转换成无符号数,因为无符号数右移必须是逻辑右移,
(逻辑右移是左边补0,算术右移最高位是1,则补1, 是0 则补0)
关于移位问题:
有符号数:左移是逻辑移位,右移(这个不是一定的但大多数都是这么来的)是算术移位。
无符号数:左移右移都是逻辑移位。
还有一点是关于整数在计算机中的是以什么方式来存储的,负数是以补码的形式来存的。
比如: -1 的存储形式是111111。。。。。1111111 的形式来存的
如果用无符号数的观点(方式)来看的话这个数就是int (无符号)类型的最大数4294967295