如果给定的int是2 C的指数,则返回#

Nar*_*Dog 2 c#

给定一个接收int变量的bool数据类型的方法,什么是单行代码,它将确定int是否为2或2 ^ n的指数..... 2,4,8,16, 32等我知道使用while循环和if语句的方法,但我正在寻找它在一条线上.

dtb*_*dtb 9

来自Bit Twiddling Hacks:

uint v;         // we want to see if v is a power of 2
bool f;         // the result goes here 

f = (v != 0) && ((v & (v - 1)) == 0);
Run Code Online (Sandbox Code Playgroud)


Ian*_*nry 6

只需检查数字的对数(基数2)是否为整数.

在一行C#中:

Math.Log(x, 2) % 1 == 0
Run Code Online (Sandbox Code Playgroud)

按位操作更有趣,但是主人怜悯任何人必须维护该代码.

  • 为什么这会被贬低?这是__a__解决方案. (3认同)