Jeder Operator hat eine bestimmte Priorität, so dass der Ausdruck mathematisch korrekt
berechnet wird. (Multiplikation vor Addition etc.)
Wenn Du unsicher bist, dann kannst Du zusätzlich Klammern setzen, was oft allein schon
wegen der besseren Lesbarkeit von Vorteil ist.
z.B. (obwohl völlig unnötig)
(x*2^0) + (x*2^1) + ...
Auf die Programmausführung hat es keinen Einfluß, ist aber übersichtlicher als z.B.
x*2^0+x*2^1+...
Übrigens, verwechsle ^ nicht mit "x hoch y"!!!
^ ist XOR (exklusives ODER; math. Antivalenz)
z.B.
int a = 2^5; // Ergebnis ist 7 und nicht 32
2 = 00000010
5 = 00000101
7 = 00000111
"x hoch y" kriegst Du über Math.pow(x, y); also Math.pow(2, 5) im Beispiel.