首页 > 代码库 > 去n的第一个出现的1

去n的第一个出现的1

实例十八:去n的第一个出现的1

 

方法:result=n & (n-1)
与实例十七 思路类似。实例十七是不断取1,本例只去最低位。


解释:
n     0000 1111
n-1    0000 1110
&     0000 1110    ----可见把最低位1去掉了

当然,也可以不断循环,把全部1换为0.


代码:

int _tmain(int argc, _TCHAR* argv[])
{
  int n;
  cout<<"请输入数值:";
  cin >> n;
  n = n &(n - 1);
  cout << "去掉最低位1后:" << n;
  system("pause");
return 0;
};

去n的第一个出现的1