用java编写程序计算x的n次幂
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用java编写程序计算x的n次幂相关的知识,希望对你有一定的参考价值。
输入一个正整数repeat (0<repeat<10),做repeat次下列运算:
读入1 个正实数x和1个正整数 n(n<=50),计算并输出x的n次幂。
例:括号内是说明
输入
2 (repeat=2)
1.5 2
2.0 10
输出
2.25
1024.0
import java.util.Scanner;
public class Test40003
public static void main(String[] args)
int ri, repeat;
int i, n;
double x, mypow;
Scanner in=new Scanner(System.in);
repeat=in.nextInt();
for(ri=1; ri<=repeat; ri++)
x=in.nextDouble();
n=in.nextInt();
/*--------------------*/
System.out.println(mypow);
/*
* 用java编写程序计算x的n次幂
* */
public class Test40003
public static void main(String[] args)
int repeat;//定义要幂次
//int i, n;
double x, mypow=1;
Scanner in=new Scanner(System.in);//从控制台输入数字,比如 2 1.5,
//前面是整数,后面是要做幂次运算的数,中间用空格隔开
repeat=in.nextInt();//获取输入的幂次
x=in.nextDouble();//获取要进行幂次运算的数
System.out.println("现在要做"+x+"的"+repeat+"次幂运算!");
for(int ri=1; ri<=repeat; ri++)
mypow = mypow*x;
System.out.println(x+"的"+repeat+"次幂运算的结果是:"+mypow);
参考技术A 用循环或是递归都可以实现. 参考技术B import java.lang.Math;
...
mypow = Math.pow(x,n);
用Java计算x的y次幂x^y以及位运算计算2^n
简介
我们知道 \\(x^y\\) 表示 x的y次幂。特殊地,\\(2^n\\) 表示 2的n次方,或者叫 2的n次幂。
1.计算 x 的 y次幂
易踩坑1:x ^ y
× 之前,在刷算法题时,需要计算 x的y次幂的结果。我们经常用 x^y
在计算机上书面的表示公式 \\(x^y\\)。于是,我掉进了第一个陷阱!
public class Main {
public static void main(String[] args) {
System.out.println(2 ^ 2); // 输出结果为0
}
}
在 Java 中,
^
是异或计算符号,而非n次幂的计算符号!
异或运算是一种逻辑运算。如果a、b两个值不相同,则异或结果为1。如果a、b两个值相同,异或结果为0。
a | b | a ^ b |
---|---|---|
0 | 0 | 0 |
0 | 1 | 1 |
1 | 0 | 1 |
1 | 1 | 0 |
进行异或运算时,首先将左操作数和右操作数转换为二进制数,然后对每一个二进制位分别进行异或计算。
√ 正确的方法是使用 Math.pow
函数。
public class Main {
public static void main(String[] args) {
System.out.println(Math.pow(2, 2); // 输出结果为4
}
}
Math 的返回值是 double,其范围是可以覆盖 long 和 int 的表示范围的!
关键字 | 所占位数 | 范围 |
---|---|---|
int | 32 | \\(-2^{31}\\) ~ 2 ^{31} - 1 |
long | 64 | \\(-2^{63}\\) ~ 2 ^{63} - 1 |
2.用位运算计算 2 ^ n
比如我想要计算 2 ^ 2,用位运算就是 1 << 2
public class Main {
public static void main(String[] args) {
System.out.println(1 << 2); // 输出结果为 4,正确
}
}
但是我在学习一致性Hash时,涉及到 \\(2^{32}-1\\) 的结果运算。
易踩坑: 1 << 32
× 直接用 (1 << 32) - 1
计算我想要的值
public class Main {
public static void main(String[] args) {
System.out.println(1 << 32); // 输出结果为1
System.out.println((1 << 32) - 1); // 输出结果为0
}
}
因为1左移32位,超出了 int 的表示范围。
√ 正确的方法是使用 long 作为被除数。
public class Main {
public static void main(String[] args) {
System.out.println(1L << 32); // 输出结果为4294967296,正确
System.out.println(new BigDecimal(2).pow(32)); // 输出结果为4294967296,正确
}
}
long value = (1L << 32) - 1; // 结果为 4294967295
以上是关于用java编写程序计算x的n次幂的主要内容,如果未能解决你的问题,请参考以下文章
ZZNUOJ_用Java编写程序实现1582:自幂数(附源码)
ZZNUOJ_用Java编写程序实现1582:自幂数(附源码)
2021-09-27:Pow(x, n)。实现 pow(x, n) ,即计算 x 的 n 次幂函数(即,x**n)。力扣50。