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

判断一个整数是否为2的幂 以及 上向2的幂扩展

时间:2016-12-04 19:37:41      阅读:139      评论:0      收藏:0      [点我收藏+]

标签:dup   can   class   print   round   return   const   int   else   

#include <stdio.h>
#include <stdint.h>

// 判断整数是否为2幂
/*
if (a & (a - 1))
{
    // not
}
else
{
    // yes
}
*/

uint32_t roundup_pow_of_two(const uint32_t x)
{
    if (x == 0){ return 0; }
    if (x == 1){ return 2; }
    uint32_t ret = 1;
    while (ret < x)
    {
        ret = ret << 1;
    }
    return ret;
}

int32_t main()
{
    uint32_t a = 0;
    while (scanf_s("%u",&a))
    {
        printf("%u\n", roundup_pow_of_two(a));
    }
    return 0;
}

 

判断一个整数是否为2的幂 以及 上向2的幂扩展

标签:dup   can   class   print   round   return   const   int   else   

原文地址:http://www.cnblogs.com/tangxin-blog/p/6131326.html

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