用一个表达式,判断一个数X是否是2^N(2,4,8,16,…),不可用循环语句

用一个表达式,判断一个数X是否是2^N(2,4,8,16,…),不可用循环语句

用一个表达式,判断一个数X是否是2^N(2,4,8,16,…),不可用循环语句

答案:!(X & (X - 1))

分析:2^N(2,4,8,16)这样的数转化成二进制是10、100、1000、10000。

         若X-1与X做与运算,结果是0,则X是2^N。

扩展:求一个整数的二进制形式中包含1的数量

 1 int func(int x)
 2 {
 3     int count = 0;
 4     while(x)
 5     {
 6         count ++;
 7         x = x & (x - 1);
 8     }
 9     return count;
10 }

 

转载于:.html

发布者:admin,转转请注明出处:http://www.yc00.com/web/1731147244a3622590.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信