82.判断整数是否为2的幂次方

  1. 82. 判断整数是否为2的幂次方
    1. 82.1 题目
    2. 82.2 答案

82. 判断整数是否为2的幂次方


82.1 题目

这个函数是判断一个整数是不是2的n次方。请问 if 语句中应该如何书写?


82.2 答案

// 判断一个整数是否为2的幂次方
public bool IsPowerOfTwo(int n)
{
    // 如果 n <= 0,则不是2的幂次方
    if (n <= 0)
    {
        return false;
    }

    // 如果 n & (n - 1) 等于 0,则是2的幂次方
    return (n & (n - 1)) == 0;
}

在这个函数中,我们使用位运算来判断一个整数是否为2的幂次方。具体来说,如果一个整数 n 是2的幂次方,那么它的二进制表示中只有最高位是1,其余位都是0。而 n - 1 的二进制表示中,除了最高位是0,其他位都是1。因此,如果 n & (n - 1) 等于 0,说明 n 和 n - 1 在二进制表示中没有任何一位是相同的,即 n 只有一个位是1,因此 n 是2的幂次方。



转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 785293209@qq.com

×

喜欢就点赞,疼爱就打赏