一个数是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的幂次方写成二进制形式后,很容易就会发现有一个特点:二进制中只有一个1,并且1后面跟了n个0; 因此问题可以转化为判断1后面是否跟了n个0就可以...
标题中的“把一个数分解成2的次幂”是指将一个整数表示为二进制下的各个位上2的幂的和。这是一个基础的数学概念,尤其在计算机科学中至关重要,因为计算机内部处理数据的方式是基于二进制的。在二进制系统中,每个...
在JavaScript编程中,判断一个数字是否为2的n次方幂是一个常见的算法问题。这个问题的实质是要找出一个数字是否能够表示为2的某个整数幂次。以下将详细讲解两种不同的方法来解决这个问题。 方法一基于连续除以2并...
这是因为如果一个数是2的幂次方,那么它的二进制表示中除了最低位的1之外,其他位都是0,而减1操作会使最低位的1变成0,按位与运算的结果就是0。 2. **4的幂次方的检查**:既然4的幂次方也是2的幂次方,我们可以...
实例如下: ... 您可能感兴趣的文章:C语言判断一个数是否是2的幂次方或4的幂次方如何判断一个数是否为4的幂次方?若是,并判断出来是多少次方?如何判断一个数是否为2的幂次方?若是,并判断出来是多少次方?
将2的幂次方写成二进制形式后,很容易就会发现有一个特点:二进制中只有一个1,并且1后面跟了n个0; 因此问题可以转化为判断1后面是否跟了n个0就可以了。如果将这个数减去1后会发现,仅有的那个1会变为0,而原来的那...
在这个测试程序中,我们定义了一个包含不同数值的数组`test_values`,然后遍历数组中的每个元素,用`IS_POWER_OF_TWO`宏判断其是否为2的幂次方,并输出结果。运行此程序,我们可以验证宏的正确性。 总结一下,判断...
对于题目“高精度幂次方计算 C++实现”,我们聚焦于实现一个C++程序,它能计算任意两个大整数的乘方,即求解形如`a^b`的问题,其中`a`和`b`可能是非常大的数值。这个问题在在线判题平台(Online Judge,简称OJ)如...
标题中的“任意2的幂次方长度数据快速DCT”是指一种可以处理任意大小为2的幂次方的数据序列的离散余弦变换(Discrete Cosine Transform, 简称DCT)的快速算法。在图像处理和信号处理领域,DCT是一种重要的变换方法,...
接下来定义一个名为`Npower`的类,用于求一个数的N次幂。 ```java public class Npower { // 定义两个私有整型变量表示基数和指数 private int x; private int n; // 默认构造方法 public Npower() { } // ...
这是一篇有关用伯努利数求k次方幂的文章,不管是伯努利数还是最终涉及的求k次方幂的方法统统介绍得非常详细,本来是在BDWK里有的,但是看着一堆点点真心很不舒服,于是下载后放在这里……
2的幂次方
在本问题中,我们要讨论如何利用位运算来判断一个数字是否为2的N次幂。 首先,让我们理解什么是2的N次幂。2的N次幂表示为2^n,其中n是一个整数。例如,2^2 = 4, 2^3 = 8, 2^4 = 16等。这些数字在二进制表示中有一个...
水仙花数c语言程序水仙花数,也称为阿姆斯特朗数,是指一个 n 位数 ( n≥3 ),它的每个位上的数字的 n 次幂之和等于它本身。 #include #include int isArmstrong(int num) { int originalNum, remainder, n = 0,...
根据给定的文件信息,我们可以总结出以下关于“实现一个数的N次方源码”的相关知识点: ### 1. 程序目的与功能 该程序的主要目的是计算并输出一个给定数值(记作a)的指定次数幂运算结果(记作b)。即用户可以输入...