HM中int xSign (int x) 的分析

来源:互联网 发布:淘宝助理5下载 编辑:程序博客网 时间:2024/04/27 15:24
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)));}

原创粉丝点击