#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);