Какую функцию выполняет ^
оператор (caret) в Java?
Когда я пытаюсь это:
int a = 5^n;
... это дает мне:
для n = 5 возвращает 0
для n = 4, возвращает 1
для n = 6, возвращает 3
... так что я думаю, что это не выполняет возведения в степень. Но что это тогда?
java
operators
exponentiation
joroj
источник
источник
^
оператор не предназначен для установки мощности. Вам нужно было быMath.pow
вместо этого. Смотрите ответ полигеномасляной смазки.^
для возведения в степень? Это просто здравый смысл!). Исследование OP языка Java нуждается в поддержке.Ответы:
Оператор ^ в Java
^
в Java это оператор с исключительным или ("xor").Давайте возьмем в
5^6
качестве примера:Это таблица истинности для побитового ( JLS 15.22.1 ) и логического ( JLS 15.22.2 ) xor:
Проще говоря, вы также можете думать о xor как о «том или ином, но не обоем !».
Смотрите также
Экспонирование в Java
Что касается целочисленного возведения в степень, то, к сожалению, в Java такого оператора нет. Вы можете использовать
double Math.pow(double, double)
(приведение результата кint
необходимости).Вы также можете использовать традиционный трюк со сдвигом битов для вычисления некоторых степеней двойки. То есть
(1L << k)
это два к k-й степени дляk=0..63
.Смотрите также
Схема Хорнера
Для удовлетворения ваших конкретных потребностей вам не нужно вычислять различные степени 10. Вы можете использовать так называемую схему Хорнера , которая не только проста, но и эффективна.
Поскольку вы делаете это как личное упражнение, я не буду давать код Java, но вот основная идея:
Сначала это может показаться сложным, но на самом деле это не так. Вы в основном читаете цифры слева направо, и вы умножаете свой результат до 10, прежде чем добавить следующую цифру.
В форме таблицы:
источник
Как уже отмечали многие люди, это оператор XOR . Многие люди также уже отметили, что если вы хотите возвести в степень, то вам нужно использовать Math.pow .
Но я думаю, что также полезно отметить, что
^
это только один из семейства операторов, которые все вместе известны как побитовые операторы:От сюда .
Эти операторы могут пригодиться, когда вам нужно читать и записывать в целые числа, где отдельные биты должны интерпретироваться как флаги, или когда определенный диапазон битов в целом числе имеет особое значение, и вы хотите извлечь только их. Вы можете выполнять большую часть ежедневного программирования без необходимости использовать эти операторы, но если вам когда-либо придется работать с данными на битовом уровне, хорошее знание этих операторов неоценимо.
источник
Это побитовое XOR, Java не имеет оператора возведения в степень, вы должны использовать
Math.pow()
вместо этого.источник
Правило оператора XOR =>
Двоичное представление 4, 5 и 6:
Теперь выполните операцию XOR на 5 и 4:
Так же,
источник
Это
XOR
побитовый оператор.источник
Многие уже объяснили, что это такое и как его можно использовать, но помимо очевидного, вы можете использовать этот оператор для выполнения множества программных трюков, таких как
Многие такие трюки могут быть выполнены с использованием немного мудрых операторов, интересная тема для изучения.
источник
Как уже говорили другие, это побитовый XOR. Если вы хотите поднять число до определенной степени, используйте
Math.pow(a , b)
, гдеa
это число, аb
это сила.источник
Правило оператора XOR
Побитовый оператор работает с битами и выполняет побитовую операцию. Предположим, если а = 60 и б = 13; теперь в двоичном формате они будут выглядеть следующим образом -
источник
Ссылка AraK указывает на определение exclusive-or, которое объясняет, как эта функция работает для двух логических значений.
Недостающая часть информации - как это применяется к двум целым числам (или значениям целочисленного типа). Побитовое исключающее-или применяется к парам соответствующих двоичных цифр в двух числах, и результаты повторно собираются в целочисленный результат.
Чтобы использовать ваш пример:
Простой способ определить побитовое XOR - сказать, что результат имеет 1 в каждом месте, где два входных числа различаются.
С 4 и 5 разница только в последнем месте; так
0101 ^ 0100 = 0001 (5 ^ 4 = 1).
источник
Вместо этого вы можете использовать Math.pow:
https://docs.oracle.com/javase/1.5.0/docs/api/java/lang/Math.html#pow%28double,%20double%29
источник
Как уже говорилось в других ответах, это оператор «исключающее или» (XOR) . Для получения дополнительной информации о битовых операторах в Java см .: http://java.sun.com/docs/books/tutorial/java/nutsandbolts/op3.html.
источник
Это битовый оператор xor в java, который дает 1 для другого значения бита (т.е. 1 ^ 0 = 1) и 0 для того же значения бита (то есть 0 ^ 0 = 0), когда число записывается в двоичной форме.
пример: -
Чтобы использовать ваш пример:
Двоичное представление 5 - 0101. Двоичное представление 4 - 0100.
Простой способ определить побитовое XOR - сказать, что результат имеет 1 в каждом месте, где два входных числа различаются.
0101 ^ 0100 = 0001 (5 ^ 4 = 1).
источник
Это потому, что вы используете оператор xor.
В Java, или почти любом другом языке, ^ является побитовым xor, поэтому, конечно,
10 ^ 1 = 11. подробнее о побитовых операторах
Интересно, что в Java и C # нет оператора power.
источник
Это битовый оператор xor в Java, который приводит 1 к другому значению (то есть 1 ^ 0 = 1) и 0 к тому же значению (то есть 0 ^ 0 = 0).
источник
^ является двоичным (как в base-2) xor, а не возведением в степень (которое недоступно как оператор Java). Для возведения в степень см. Java.lang.Math.pow ().
источник
Это оператор XOR. Используется для выполнения битовых операций над числами. Такое поведение таково, что когда вы выполняете операцию xor с теми же битами, скажем, 0 XOR 0/1 XOR 1, результат равен 0. Но если любой из битов отличается, результат равен 1. Итак, когда вы сделали 5 ^ 3, тогда вы можно смотреть на эти числа 5, 6 в их двоичных формах, и, таким образом, выражение становится (101) XOR (110), что дает результат (011), десятичное представление которого равно 3.
источник
В других языках, таких как Python, вы можете сделать 10 ** 2 = 100, попробуйте.
источник