Avatar ·

如何检查一个数是否为2的幂(C#)?

大家好!我是C#新手,遇到一个问题:需要编写一个方法,检查整数是否为2的幂(1, 2, 4, 8, 16, 32等)。问题看似简单,但我没想到优雅的解决方案。 目前我写了这样的代码: ```csharp public static bool IsPowerOfTwo(int n) { if (n <= 0) return false; while (n > 1) { if (n % 2 != 0) return false; n = n / 2; } return true; } ``` 它似乎能工作,但我觉得太冗长且效率低。我听说有一种巧妙的位运算方法,但不懂原理。能推荐更正确快速的解决方案吗? 特别关心: 1. 如何不用循环进行检查? 2. 什么是位运算,如何应用? 3. .NET中是否有内置方法? 4. 如何处理负数和零? 提前感谢!代码需要在.NET Core上运行,如果这很重要的话。