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

判断一个数是否为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() { } // ...

    python爱心代码-4.幂次方-但是0 2.py

    本篇文章将深入探讨一个具体的 Python 编程实践:使用 Python 实现幂次方运算,同时特别关注幂次方结果为0和2的情况。 首先,幂次方是一个数学概念,指的是某个数的若干次方乘积。例如,a的n次方表示为a^n,即a乘以...

    python-30.判断 2 的幂-反正你没它快.py

    快速判断一个数是否为2的幂,可以利用对数的性质,因为2的幂次方的特性是其对数是以2为底的整数。 以n为底数的对数函数log(n, x)表示为x需要多少个n相乘才能得到。如果一个数是2的幂,那么它除以2的任何次方(例如1...

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

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

    Leetcode 326:3的幂

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

    输入任何的底数和幂数,计算一个数任意次方的后三位

    比如,底数可以是任意整数,幂数应该是一个非负整数,当幂数为0时,结果应当为1。 这个计算任意次方的后三位问题,不仅是计算机二级C语言考试中的常见题目,而且是一个很好的实践项目,有助于初学者全面掌握编程的...

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

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

    判断一个三位整数是非为水仙花数-2021.10.28.zip

    在实际应用中,判断一个数是否为水仙花数不仅是一个有趣的数学问题,它也是编程入门中常见的练习题,有助于理解循环、条件判断和数学运算等编程基础概念。此外,这类问题还能激发人们对数学和计算机科学的兴趣,促进...

    判断水仙花数的算法

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

Global site tag (gtag.js) - Google Analytics