HM中int xSign (int x) 的分析
[cpp]inline Int xSign(Int x) //!< 取出x的符号,x大于0返回+1,x小于0返回-1
{//! 当x等于0时,返回0;当x小于0时,由于x是int型,x>>31(算术右移)后结果为0xffffffff,即-1,而-x为0x00000001,右移31位后结果为0,
//! 因此此时返回值为-1;当x大于0时,x>>31后结果为0x00000000,即0,而-x即为补码形式表示的负数(最高位为1),被转换为unsigned int后,
//! 再右移31位时,符号位不会保留,最终移位结果为0x00000001,即1
return ((x >> 31) | ((Int)( (((UInt) -x)) >> 31)));
}
补充:软件开发 , C++ ,