当前位置:编程学习 > C/C++ >>

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++ ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,