一个数是2的幂次方,那么这个数的二进制位数中,只能有一位数值为1.
例如:10000, 100, 1等等。
从中可以看到,如果把这个数减去1,那么结果值的2进制位应该如下:1111,11,0等等。
这两个数的特点是:他们做或的时候,得到的结果是他们的和,例如:
10000和1111的或结果是11111, 100和11的或值是111,1和0的或是1。
所以我们可以如果实现一个方法判断一个数是否是2的幂次方:
Java代码
public static boolean is2Power(int number){
if(number<=0){
return false;
}
return (number|(number-1))==(2*number-1);
}
做一个测试:
Java代码
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进行移位操作,总会在移到某个位的时候和这个数相等。所以这个实现如下:
Java代码
public static boolean is2Power(int number){
int j = 1;
while (number>j) {
j<<=1;
}
return j==number?true:false;
}
验证:
Java代码
for(int i = 0;i<10000;i++){
if(is2Power(i)){
System.out.println(i);
}
}
结果:
Java代码
1
2
4
8
16
32
64
128
256
512
1024
2048
4096
8192
分享到:
相关推荐
在RSA中,需要找到一个数的模逆元,即找到一个数x,使得ax ≡ 1 (mod m),这里a和m是已知的,x就是我们要求的逆元。扩展欧几里得算法可以有效地解决这个问题,它不仅可以找到最大公约数,还能同时给出逆元的解。 4...
素数判定是确定一个数是否为素数的过程。常见的方法包括试除法(适用于小数)、米勒-拉宾素性检验(适用于大数)和AKS素性检验(更复杂但理论上总是正确)。大数计算器通常会包含至少一种高效的素性测试算法,以快速...
2. 数轴:数轴是一个直线,用于可视化表示所有实数。数轴上的每一个点代表一个实数,原点表示0,向右为正数,向左为负数。 3. 相反数:两个数只有符号不同,则互为相反数。例如,5的相反数是-5,-3的相反数是3。 4...
2. **幂次分裂**:找到2的幂次s和一个整数r,使得n-1 = 2^s * r,其中r是奇数。这一步可以通过二进制位操作快速完成。 3. **随机选择a**:从2到n-2之间随机选取一个整数a。a的选择不应是n的倍数,以避免误判。 4. ...
5. 中位数:数据排序后处于中间位置的数值,对于偶数个数据,中位数是中间两个数的平均值。在给定数据中找到中位数。 6. 函数自变量取值范围:了解函数定义域的概念,例如题目中的函数y=1/x,自变量x不能等于0。 8...
它基于模幂运算和平方根性质,通过多次随机选取基数,进行模幂次方的计算,来验证一个数是否为素数。在实验中,该算法用于生成一定长度的素数数组,确保生成的素数至少比模式串长度短4位,并不超过200万。 2. **Las...
14. 实数的估算:第十四题要求估算一个数,需要将数四舍五入到个位数。 15. 正方形的边长:第十五题需要确定正方形的边长,通常可以通过比例关系来计算。 16. 梯形的周长:第十六题给出了等腰梯形的相关角度和边长...
- **方根**:一个数的n次方等于a,a就是b的n次方根。 - **算术根**:正数a的正n次方根,即a的n次方根,是a的非负的n次方根。 3. **代数式与代数式的值**: - **代数式**:由数、字母以及运算符(加、减、乘、除...
1. **相反数**:在数学中,a 的相反数是 `-a`,这表示一个数与它的负数相加等于零。在选择题第一题中,选项 C 正确。 2. **平行线判定**:在几何学中,如果两条直线在同一直角坐标系内具有相同的斜率,那么它们是...
例如,题1中如果已知一个直角三角形的两边长为3和4,那么第三边的平方可能是3²+4²=9+16=25,或者是4²-3²=16-9=7,因此第三边的平方可能为7或25。 2. **直角三角形的判定**:第二题考察了直角三角形的判定方法,...
这个定理在判定一个数是否为质数时提供了一个方法,同时在数论的其他领域也有应用,比如在解决同余方程或证明某些数学性质时。 这些定理不仅在理论上有重要价值,也是实际问题解决的工具。例如,在求解模幂运算时,...
5. 角平分线的构造:利用角尺平分一个角,这是几何中的基本操作,涉及到全等三角形的判定。题目中提到的角尺作法基于SSS(边边边)判定法则。 6. 5G网络与4G网络的速率比较:这是一个实际应用问题,涉及到了比例和...
21. **解方程**:这是一个含有绝对值和三次方的方程,需要分情况讨论来解。 22. **混合运算**:包括乘方、乘除以及负指数的运算。 这些是试卷中涉及的主要数学概念和技能,涵盖了几何、代数、方程、数论等多个领域...
1. **倒数**:在数学中,如果一个数乘以其倒数等于1,那么这个数就是另一个数的倒数。例如,-2的倒数是-\(\frac{1}{2}\),因为-2乘以-\(\frac{1}{2}\)等于1。 2. **代数运算**:题目中的选项涉及到基本的代数运算,...
1. 绝对值:在数学中,一个数的绝对值是指不考虑数的符号,只取其大小的值。例如,-2的绝对值是2,因为2是-2去掉负号后的数值。 2. 科学记数法:科学记数法是一种表示数字的方法,尤其是当数值很大或很小的时候。...
按照棋盘的64个格子,每个格子的数量是前一个格子的两倍,我们可以用2的幂来表示每一格的麦粒数量。这实际是一个指数函数,需要计算2的63次方,以了解国王应支付的麦粒总数。 3. **王子的数学题**:这是一个代数...
- 题目中提到一个外角和是内角和一半的多边形,设内角和为2S,外角和为S,则2S+S=3S=360°,解得S=120°,所以是六边形。 3. **三角形和直角三角形的性质**: - 第9题涉及直角三角形的判定,给出了多个条件,其中...
- **单数字发散**:即从一个数字出发,思考与其相关的各种特征。 - **多数字联系**:考察考生能否发现数字之间的规律性联系。 - **基础简单数列**:介绍了几种常见的数列形式及其特点。 - **常数数列**:所有项都...
- 第2题涉及对数运算,正确答案D意味着如果一个数的对数等于100,则该数本身等于10的100次方,即10^100。 - 第3题考查了指数与对数的关系,正确答案D揭示了只有当底数相同时,指数的比较才能直接转化为对数值的...
1. 实数的性质:第一题涉及实数的相反数概念,强调了相反数的定义,即一个数加上它的相反数等于零。正确答案是D。 2. 几何体的三视图:第二题通过识别几何体的俯视图,测试了学生对空间几何的理解,特别是从不同...