지수는 수를 다른 수로 몇 번 곱하는지 나타내는 표기법입니다. 일반적으로 와 같이 표기되며, 여기서 a는 밑(base)이고 b는 지수(exponent)입니다.
예를 들어, 은 2를 3번 곱한 것을 의미합니다. 따라서 이 됩니다.
로그는 지수의 역함수입니다. 즉, 어떤 수를 특정 밑(base)으로 몇 번 곱해야 다른 수가 되는지를 나타냅니다.
일반적으로 로그는 다음과 같이 표기됩니다: , 여기서 b는 밑(base)이고 a는 로그를 적용할 값입니다.
예를 들어, 은 2를 몇 번 곱해야 8이 되는지를 묻는 것입니다. 따라서 = 3이 됩니다.
지수와 로그는 서로 역관계에 있습니다. 즉, 지수와 로그를 사용하여 서로를 취소할 수 있습니다.
예를 들어, 입니다. 이는 밑이 b인 로그를 취한 후 그 결과에 다시 밑이 b인 지수를 취하면 처음의 값 a가 나오게 됩니다.
public class Main {
public static void main(String[] args) {
// 1. 제곱, 제곱근, 지수
System.out.println("== 제곱 ==");
System.out.println(Math.pow(2, 3));
System.out.println(Math.pow(2, -3));
System.out.println(Math.pow(-2, -3));
System.out.println(Math.pow(2, 30));
System.out.printf("%.0f\n", Math.pow(2, 30));
System.out.println("== 제곱근 ==");
System.out.println(Math.sqrt(16));
System.out.println(Math.pow(16, 1.0 / 2));
System.out.println(Math.pow(16, 1.0 / 4));
// 참고) 절대 값
System.out.println("== 절대 값 ==");
System.out.println(Math.abs(5));
System.out.println(Math.abs(-5));
// 2. 로그
System.out.println("== 로그 ==");
System.out.println(Math.E);
System.out.println(Math.log(2.718281828459045));
System.out.println(Math.log10(1000));
System.out.println(Math.log(4) / Math.log(2));
}
}
// 제곱과 제곱근을 Math 없이 구현하기
public class Practice {
static double pow(int a, double b) {
double result = 1;
boolean isMinus = false;
if (b == 0) {
return 1;
} else if (b < 0) {
b *= -1;
isMinus = true;
}
for (int i = 0; i < b; i++) {
result *= a;
}
return isMinus ? 1 / result : result;
}
static double sqrt(int a) {
double result = 1;
for (int i = 0; i < 10; i++) {
result = (result + (a / result)) / 2;
}
return result;
}
public static void main(String[] args) {
System.out.println("== Math pow ==");
System.out.println(Math.pow(2, 3));
System.out.println(Math.pow(2, -3));
System.out.println(Math.pow(-2, -3));
System.out.println("== My pow ==");
System.out.println(pow(2, 3));
System.out.println(pow(2, -3));
System.out.println(pow(-2, -3));
System.out.println("== Math sqrt ==");
System.out.println(Math.sqrt(16));
System.out.println(Math.sqrt(8));
System.out.println("== My sqrt ==");
System.out.println(sqrt(16));
System.out.println(sqrt(8));
}
}