n是否是2的幂
实例五:n是否是2的幂
方法一:result=n&(n-1) 如果result=0 则n是2的幂
方法二:result=n&((~n)+1) 如果result=n 则n是2的幂
原数 0000 1000 ---8 0000 1000 -----8
原数+1 & 0000 1001 ---9 & 0000 0111 -----7 原数-1
------------- --------------
结果 0000 1000 ---8 0000 0000 -----0
int _tmain(int argc, _TCHAR* argv[])
{
int n, nResult1 = 1;nResult2=1;
cout << "请输入原始的值:";
cin >> n;
if (n != 0)
{
nResult1 = n &((~n)+ 1);
nResult2 = n &(n - 1);
}
if (nResult1 == n||result == 0)
{
cout << endl << n<<"是2的幂";
}
else
{
cout << endl << n << "不是2的幂";
}
system("pause");
return 0;
};