确定数字是否为二进制序列1 2 4 8 16 32 64等

Shi*_*mmy 6 .net c# math binary

可能重复:
如何检查数字是否为2的幂

我想确定一个数字是否在

1 2 4 8 16 32 64 128 256 512 1024 2048 4096 8192 16384 ...

我试过这个:

public static void Main(string[] args)
{            
    int result = 1;  
    for (int i = 0; i < 15; i++)
    {          
        //Console.WriteLine(result);
        Console.WriteLine(result % 2);
        result *= 2;

    }  
}
Run Code Online (Sandbox Code Playgroud)

你可以看到它返回 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ...

我应该如何有效地使上述印刷品0适用于包括1在内的所有印刷品?

Sam*_*lgh 13

如果i在您的序列中,则以下表达式应为true .

(i & (i-1)) == 0)

http://rextester.com/JRH41036

  • 这是一个非常有用的网站. (2认同)