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;
};

posted @ 2017-03-28 16:37  gd_沐辰  阅读(292)  评论(0编辑  收藏  举报