实例十八:去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;
};