Что касается целочисленного возведения в степень, к сожалению, в Java такого оператора нет. Вы можете использовать double Math.pow(double, double) (при необходимости преобразуя результат в int).
Вы также можете использовать традиционный прием сдвига битов для вычисления некоторых степеней двойки. То есть, (1L << k) равно двум в k-й степени для k=0..63.
Примечание о слиянии: этот ответ был объединен с другим вопросом, где предполагалось использовать возведение в степень для преобразования строки "8675309" в int без использования Integer.parseInt в качестве упражнения по программированию (^ отныне обозначает возведение в степень). Целью OP было вычислить 8*10^6 + 6*10^5 + 7*10^4 + 5*10^3 + 3*10^2 + 0*10^1 + 9*10^0 = 8675309; в следующей части этого ответа говорится, что возведение в степень не требуется для этой задачи.
Схема Хорнера
Учитывая ваши конкретные потребности, вам на самом деле не нужно вычислять различные степени 10. Вы можете использовать то, что называется схемой Хорнера, которая не только проста, но и эффективна.
Поскольку вы делаете это в качестве личного упражнения, я не буду приводить Java-код, но вот основная идея:
На первый взгляд это может показаться сложным, но на самом деле это не так. В основном вы считываете цифры слева направо и умножаете полученный результат на 10, прежде чем добавить следующую цифру.
Как уже указывали многие, это оператор XOR. Многие люди также уже указывали, что если вы хотите возведение в степень, то вам нужно использовать Math.pow.
Но я думаю, также полезно отметить, что ^ - это всего лишь один из семейства операторов, которые в совокупности известны как побитовые операторы:
Operator Name Example Result Description a & b and 3 & 511if both bits are 1. a | b or 3 | 571if either bit is 1. a ^ b xor 3 ^ 561if both bits are different. ~a not ~3 -4 Inverts the bits. n << p left shift 3 << 212 Shifts the bits of n left p positions. Zero bits are shifted into the low-order positions. n >> p right shift 5 >> 21 Shifts the bits of n right p positions. If n is a 2's complement signed number, the sign bit is shifted into the high-order positions. n >>> p right shift -4 >>> 28 15 Shifts the bits of n right p positions. Zeros are shifted into the high-order positions.
Отсюда.
Эти операторы могут пригодиться, когда вам нужно читать и записывать в целые числа, где отдельные биты должны интерпретироваться как флаги, или когда определенный диапазон битов в целом числе имеет особое значение, и вы хотите извлечь только их. Вы можете выполнять множество повседневных программ, даже не прибегая к использованию этих операторов, но если вам когда-нибудь придется работать с данными на битовом уровне, хорошее знание этих операторов бесценно.
Ответ 3
Это побитовый XOR, в Java нет оператора возведения в степень, вам пришлось бы использовать Math.pow() вместо этого.