Ответ 1
^
является побитовым эксклюзивным OR (XOR) оператором в Java (и многими другими языками). Он не используется для возведения в степень. Для этого вы должны использовать Math.pow
.
Какая разница между:
Math.pow ( x,y ); // x^y
To:
x^y; // x^y
?
Я предпочитаю использовать x^y
с номерами double
типа? Или оболочку, которую я должен использовать всегда с помощью метода Math.pow()
?
^
является побитовым эксклюзивным OR (XOR) оператором в Java (и многими другими языками). Он не используется для возведения в степень. Для этого вы должны использовать Math.pow
.
Кроме того, для того, что было сказано, если вам нужны целые степени из двух, то 1 << x
(или 1L << x
) - это более быстрый способ вычисления 2 x чем Math.pow(2,x)
, или цикл умножения, и гарантированно даст вам результат int
(или long
).
Он использует только наименьшие 5 (или 6) бит x
(т.е. x & 31
(или x & 63
)), хотя и сдвигает между 0 и 31 (или 63) битами.
В Java x ^ y
работает XOR
.
x^y
не "x
до степени y
". Это "x
XOR y
" .