码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2014-06-11 12:45:21      阅读:231      评论:0      收藏:0      [点我收藏+]

标签:ext   get   for   amp   io   一个   

#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的幂次方以及保留一个数的最高位的方法

标签:ext   get   for   amp   io   一个   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!