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萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章