`
粟谷_sugu
  • 浏览: 26257 次
社区版块
存档分类
最新评论

判断一个数是否为2的幂次方

    博客分类:
  • java
 
阅读更多
    看netty源码的时候,看到有一个关于如何判断一个int数值是否为2的幂次方的算法,感觉蛮有意思的,所以简单记录一下。
    先说一下通常判断一个数是否为2的幂次方我会怎么做, 随便写一个最暴力的
public static boolean isPowerOf2(int n) {
        if (n < 1)
            return false;
        int i = 1;
        while (i <= n) {
            if (i == n)
                return true;
            i <<= 1;

        }
        return false;
    }

明显看出这种方法不优雅,现在介绍netty中看到的是怎么做的
    private static boolean isPowerOfTwo(int val) {
        return (val & -val) == val;
    }

提一下在计算机中负数的二进制采用正数的补码,其他具体为什么感觉也不需要追溯了,第二个方法明显优雅多了
分享到:
评论

相关推荐

    C语言判断一个数是否是2的幂次方或4的幂次方

    快速判断一个数是否是2的幂次方,若是,并判断出来是多少次方! 将2的幂次方写成二进制形式后,很容易就会发现有一个特点:二进制中只有一个1,并且1后面跟了n个0; 因此问题可以转化为判断1后面是否跟了n个0就可以...

    判断一个整数是否是2的N次幂实现方法

    实例如下: ... 您可能感兴趣的文章:C语言判断一个数是否是2的幂次方或4的幂次方如何判断一个数是否为4的幂次方?若是,并判断出来是多少次方?如何判断一个数是否为2的幂次方?若是,并判断出来是多少次方?

    js 判断一个数字是不是2的n次方幂的实例

    在JavaScript编程中,判断一个数字是否为2的n次方幂是一个常见的算法问题。这个问题的实质是要找出一个数字是否能够表示为2的某个整数幂次。以下将详细讲解两种不同的方法来解决这个问题。 方法一基于连续除以2并...

    如何判断一个数是否为4的幂次方?若是,并判断出来是多少次方?

    在计算机科学中,判断一个数是否为4的幂次方是一项常见的数学操作,尤其是在处理二进制表示的数值时。4的幂次方可以写成2的幂次方的平方,例如4^2 = 2^4,4^3 = 2^6,4^4 = 2^8,以此类推。这种性质在二进制表示中...

    C# 位运算 判断是否为2的N次幂

    接下来,我们将介绍如何使用位运算来检查一个数是否为2的幂。一种有效的方法是检查该数除以2的余数是否为0,直到除到0为止。在C#中,我们可以连续右移位来实现这个过程: ```csharp bool IsPowerOfTwo(int num) { ...

    如何判断一个数是否为2的幂次方?若是,并判断出来是多少次方?

    将2的幂次方写成二进制形式后,很容易就会发现有一个特点:二进制中只有一个1,并且1后面跟了n个0; 因此问题可以转化为判断1后面是否跟了n个0就可以了。如果将这个数减去1后会发现,仅有的那个1会变为0,而原来的那...

    判断是否为2的N次方

    在这个测试程序中,我们定义了一个包含不同数值的数组`test_values`,然后遍历数组中的每个元素,用`IS_POWER_OF_TWO`宏判断其是否为2的幂次方,并输出结果。运行此程序,我们可以验证宏的正确性。 总结一下,判断...

    类的编写和使用三个案例 :1 判断三角形并求面积 2 求N次方幂的类 3 人民币转换大写

    接下来定义一个名为`Npower`的类,用于求一个数的N次幂。 ```java public class Npower { // 定义两个私有整型变量表示基数和指数 private int x; private int n; // 默认构造方法 public Npower() { } // ...

    一条语句判断整数a是否是2的整数幂

    在计算机科学领域,判断一个整数是否为2的整数幂是一个常见的问题,尤其是在算法设计、数据结构处理以及系统优化等方面。本篇文章将基于提供的标题、描述、标签和部分内容,详细解析如何通过一条C++语句来判断一个...

    Leetcode 326:3的幂

    在这个代码中,我们定义了一个名为 `isPowerOfThree` 的函数,它接受一个整数 `n` 作为参数,并返回一个布尔值表示 `n` 是否是3的幂次方。在 `main` 函数中,我们获取用户输入的整数,并调用 `isPowerOfThree` 函数...

    初等数论中判断一个整数m是否存在原根程序

    原根是指在模一个正整数m下的一个整数g,使得所有不大于m且与m互质的整数a都能表示为g的幂的形式,即存在k使得a ≡ g^k (mod m)。原根的存在性与m的性质紧密相关。 首先,我们来理解一下如何判断一个整数m是否存在...

    判断水仙花数的算法

    给定的代码片段提供了一种基础的方法来判断一个输入的整数是否为水仙花数。下面我们将对这段代码进行详细解析,并在此基础上进一步拓展关于水仙花数的算法设计与实现。 ### 代码解析 代码使用C语言编写,主要包含...

    Project1_水仙花数_自幂数_

    pow是C++标准库中的一个函数,位于头文件内,用于计算一个数的幂。当你提到"使用不了",可能有以下几种情况: 1. **未包含头文件**:确保在代码中包含了`&lt;cmath&gt;`,这是使用pow函数的前提。 2. **类型不匹配**:pow...

    质数、水仙花数、自幂数、冒泡排序(小程序)

    3. **判断条件**:如果找到任意一个因子,则将布尔变量b设置为false,并跳出循环。 4. **输出结果**:如果b仍为true,则输出该数字n,表明n是一个质数。 ### 水仙花数 **定义**:水仙花数是指一个三位数,其各位...

    4的幂(python)1

    题目“4的幂(python)1”是一个典型的算法问题,它要求我们编写一个Python函数,用于判断输入的整数是否为4的幂次方。这个问题可以应用于LeetCode等在线编程平台,用于锻炼和测试程序员的逻辑思维和编程能力。 ...

    Delphi判断是否为水仙花数

    本篇文章将深入解析如何使用Delphi编程语言来实现判断一个数是否为水仙花数的逻辑。 ### 水仙花数的概念 水仙花数(Narcissistic number)又称自恋数、超完全数字不变数,是指一个n位数(n≥3),它的每个位上的...

Global site tag (gtag.js) - Google Analytics