首页 > 其他 > 详细

判断一个数是否是2的幂次方以及保留一个数的最高位的方法

时间:2014-06-11 12:42:24      阅读:382      评论:0      收藏:0      [点我收藏+]

#include <stdio.h>

int check_power(unsigned int n)
{

  /****************************************

   * 如果n是2的幂,那么 (n-1)也就是其二进制全为1的数

  *****************************************/
  if (n & (n-1))
  {
    return 1;
  }
  return 0;
}
unsigned int get_next_power(unsigned int n)
{
  unsigned int next = n;
  unsigned int flag = 0;

  /***************************************

   * 将n逐次右移1位,记录移动的次数,然后用1左移记录的次数

   ****************************************/

  while(next)
  {
    next = (next>>1);
    flag++;
  }

  next = (1 << flag);

  return (next);
}
int main()
{
  unsigned int nMax = 0x00800000;
  unsigned int ii = 1;

  for(ii=1; ii<=nMax; ii++)
  {
    if (check_power(ii))
    {
      printf("[%u => %u]\n", ii, get_next_power(ii));
    }
    else
    {
      printf("[%u]\n", ii);
    }
  }

  return 0;
}

判断一个数是否是2的幂次方以及保留一个数的最高位的方法,布布扣,bubuko.com

判断一个数是否是2的幂次方以及保留一个数的最高位的方法

原文:http://www.cnblogs.com/eric-geoffrey/p/3772588.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!