`
liugang594
  • 浏览: 985898 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

如何判断一个数是2的幂次方

J# 
阅读更多

一个数是2的幂次方,那么这个数的二进制位数中,只能有一位数值为1.

 

例如:10000, 100, 1等等。

 

从中可以看到,如果把这个数减去1,那么结果值的2进制位应该如下:1111,11,0等等。

 

这两个数的特点是:他们做或的时候,得到的结果是他们的和,例如:

 

10000和1111的或结果是11111, 100和11的或值是111,1和0的或是1。

 

所以我们可以如果实现一个方法判断一个数是否是2的幂次方:

 

	public static boolean is2Power(int number){
		if(number<=0){
			return false;
		}
		return (number|(number-1))==(2*number-1);
	}

 

做一个测试:

 

		for(int i = 0;i<1000;i++){
			if(is2Power(i)){
				System.out.println(i);
			}
		}

 

 

得到的结果是:

 

1
2
4
8
16
32
64
128
256
512

 

补充(另一种实现方法):

 

也可以通过对1的移位来实现。还是上面说的,如果一个数是2的幂,那么它的二进制表示中就只有一位1,所以如果对数1进行移位操作,总会在移到某个位的时候和这个数相等。所以这个实现如下:

 

	public static boolean is2Power(int number){
		int j = 1;
		while (number>j) {
			j<<=1;
		}
		return j==number?true:false;
	}

 

 

验证:

 

		for(int i = 0;i<10000;i++){
			if(is2Power(i)){
				System.out.println(i);
			}
		}

 

 

结果:

1
2
4
8
16
32
64
128
256
512
1024
2048
4096
8192

 

分享到:
评论

相关推荐

    一个正整数用2的幂次方表示一个正整数用2的幂次方表示

    一个正整数用2的幂次方表示 实例一个正整数用2的幂次方表示 实例一个正整数用2的幂次方表示 实例一个正整数用2的幂次方表示 实例

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

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

    把一个数分解成2的次幂

    标题中的“把一个数分解成2的次幂”是指将一个整数表示为二进制下的各个位上2的幂的和。这是一个基础的数学概念,尤其在计算机科学中至关重要,因为计算机内部处理数据的方式是基于二进制的。在二进制系统中,每个...

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

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

    C#幂次方

    在C#编程语言中,幂次方操作是计算一个数的某个指数的值。这个概念在数学和计算机科学中都非常重要,特别是在处理数值计算、图形学、物理学模拟以及各种算法中。C#提供了多种方法来执行幂次方运算,本节我们将深入...

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

    这是因为如果一个数是2的幂次方,那么它的二进制表示中除了最低位的1之外,其他位都是0,而减1操作会使最低位的1变成0,按位与运算的结果就是0。 2. **4的幂次方的检查**:既然4的幂次方也是2的幂次方,我们可以...

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

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

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

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

    判断是否为2的N次方

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

    任意2的幂次方长度数据快速dct.rar_幂次方

    标题中的“任意2的幂次方长度数据快速DCT”是指一种可以处理任意大小为2的幂次方的数据序列的离散余弦变换(Discrete Cosine Transform, 简称DCT)的快速算法。在图像处理和信号处理领域,DCT是一种重要的变换方法,...

    高精度幂次方计算 C++实现

    对于题目“高精度幂次方计算 C++实现”,我们聚焦于实现一个C++程序,它能计算任意两个大整数的乘方,即求解形如`a^b`的问题,其中`a`和`b`可能是非常大的数值。这个问题在在线判题平台(Online Judge,简称OJ)如...

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

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

    伯努利数求k次方幂

    这是一篇有关用伯努利数求k次方幂的文章,不管是伯努利数还是最终涉及的求k次方幂的方法统统介绍得非常详细,本来是在BDWK里有的,但是看着一堆点点真心很不舒服,于是下载后放在这里……

    2的幂次方.exe

    2的幂次方

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

    在本问题中,我们要讨论如何利用位运算来判断一个数字是否为2的N次幂。 首先,让我们理解什么是2的N次幂。2的N次幂表示为2^n,其中n是一个整数。例如,2^2 = 4, 2^3 = 8, 2^4 = 16等。这些数字在二进制表示中有一个...

    实现一个数的N次方源码

    根据给定的文件信息,我们可以总结出以下关于“实现一个数的N次方源码”的相关知识点: ### 1. 程序目的与功能 该程序的主要目的是计算并输出一个给定数值(记作a)的指定次数幂运算结果(记作b)。即用户可以输入...

Global site tag (gtag.js) - Google Analytics