/// <summary>
/// 判读是否为2的次幂
/// </summary>
/// <param name="value">要判断的值</param>
/// <returns>true:是2的整数次幂</returns>
public static bool is2Power(int value)
{
return value > 0 && ((value & (value - 1)) == 0);
}
/// <summary>
/// 判断一个数是2的多少次幂
/// </summary>
/// <param name="value">要判断的值</param>
/// <returns>2的多少次幂</returns>
public static int log2(int value)
{
int count = 0;
while (value > 1)
{
count++;
value = value >> 1;
}
return count;
}
递归版本
/// <summary>
/// 判断一个数是2的多少次幂
/// </summary>
/// <param name="value">要判断的值</param>
/// <returns>2的多少次幂</returns>
public static int log2(int value)
{
if (value == 1)
{
return 0;
}
else
{
return 1 + log2(value >> 1);
}
}