HM中int xSign (int x) 的分析

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)));  
}  

发布了20 篇原创文章 · 获赞 21 · 访问量 7万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章