Welche Funktion hat der ^
(Caret-) Operator in Java?
Wenn ich das versuche:
int a = 5^n;
...es gibt mir:
für n = 5 gibt 0
für n = 4 zurück, gibt 1
für n = 6 zurück, gibt 3 zurück
... also denke ich, dass es keine Potenzierung durchführt. Aber was ist es dann?
java
operators
exponentiation
joroj
quelle
quelle
^
Operator nicht für das Power-Set gedacht. Sie würdenMath.pow
stattdessen brauchen . Siehe die Antwort des Polygenschmierstoffs.^
zur Potenzierung? Das ist nur gesunder Menschenverstand!). Die Erforschung der Java-Sprache durch OP muss gefördert werden.Antworten:
Der Operator ^ in Java
^
in Java ist der Exklusiv-Oder-Operator ("xor").Nehmen wir
5^6
als Beispiel:Dies ist die Wahrheitstabelle für bitweise ( JLS 15.22.1 ) und logische ( JLS 15.22.2 ) xor:
Einfacher kann man sich xor auch als "dies oder das, aber nicht beides !" Vorstellen .
Siehe auch
Potenzierung in Java
Was die ganzzahlige Potenzierung betrifft, hat Java leider keinen solchen Operator. Sie können verwenden
double Math.pow(double, double)
(Casting des Ergebnisses aufint
bei Bedarf auf).Sie können auch den traditionellen Bitverschiebungstrick verwenden, um einige Zweierpotenzen zu berechnen. Das heißt,
(1L << k)
ist zwei zur k- ten Potenz fürk=0..63
.Siehe auch
Horners Schema
Um Ihren spezifischen Anforderungen gerecht zu werden, müssen Sie tatsächlich keine verschiedenen Potenzen von 10 berechnen. Sie können das sogenannte Horner-Schema verwenden , das nicht nur einfach, sondern auch effizient ist.
Da Sie dies als persönliche Übung durchführen, werde ich den Java-Code nicht angeben, aber hier ist die Hauptidee:
Es mag zunächst kompliziert aussehen, ist es aber wirklich nicht. Grundsätzlich lesen Sie die Ziffern von links nach rechts und multiplizieren Ihr bisheriges Ergebnis mit 10, bevor Sie die nächste Ziffer hinzufügen.
In Tabellenform:
quelle
Wie viele Leute bereits betont haben, ist es der XOR- Operator. Viele Leute haben auch bereits darauf hingewiesen, dass Sie Math.pow verwenden müssen , wenn Sie eine Potenzierung wünschen .
Aber ich denke, es ist auch nützlich zu bemerken, dass dies
^
nur einer aus einer Familie von Operatoren ist, die zusammen als bitweise Operatoren bezeichnet werden:Von hier aus .
Diese Operatoren können nützlich sein, wenn Sie Ganzzahlen lesen und schreiben müssen, bei denen die einzelnen Bits als Flags interpretiert werden sollen, oder wenn ein bestimmter Bitbereich in einer Ganzzahl eine besondere Bedeutung hat und Sie nur diese extrahieren möchten. Sie können jeden Tag viel programmieren, ohne diese Operatoren jemals verwenden zu müssen. Wenn Sie jedoch jemals mit Daten auf Bitebene arbeiten müssen, ist eine gute Kenntnis dieser Operatoren von unschätzbarem Wert.
quelle
Es ist bitweises XOR, Java hat keinen Exponentiationsoperator, den Sie
Math.pow()
stattdessen verwenden müssten .quelle
XOR-Operatorregel =>
Binäre Darstellung von 4, 5 und 6:
Führen Sie nun die XOR-Operation für 5 und 4 aus:
Ähnlich,
quelle
Es ist der
XOR
bitweise Operator.quelle
Viele Leute haben bereits erklärt, was es ist und wie es verwendet werden kann, aber abgesehen von dem Offensichtlichen können Sie diesen Operator verwenden, um viele Programmier-Tricks wie z
Viele solcher Tricks können mit bitweisen Operatoren ausgeführt werden, ein interessantes Thema, das es zu erkunden gilt.
quelle
Wie andere gesagt haben, ist es bitweises XOR. Wenn Sie eine Zahl auf eine bestimmte Potenz erhöhen möchten, verwenden Sie
Math.pow(a , b)
, wobeia
eine Zahl undb
die Potenz ist.quelle
XOR-Operatorregel
Der bitweise Operator arbeitet mit Bits und führt eine bitweise Operation durch. Angenommen, a = 60 und b = 13; jetzt im Binärformat werden sie wie folgt sein -
quelle
Der Link von AraK verweist auf die Definition von exklusiv-oder, die erklärt, wie diese Funktion für zwei boolesche Werte funktioniert.
Die fehlende Information ist, wie dies für zwei Ganzzahlen (oder ganzzahlige Werte) gilt. Bitweises Exklusiv-oder wird auf Paare entsprechender Binärziffern in zwei Zahlen angewendet, und die Ergebnisse werden zu einem ganzzahligen Ergebnis zusammengesetzt.
So verwenden Sie Ihr Beispiel:
Eine einfache Möglichkeit, bitweises XOR zu definieren, besteht darin, zu sagen, dass das Ergebnis an jeder Stelle, an der sich die beiden Eingangsnummern unterscheiden, eine 1 hat.
Bei 4 und 5 ist der einzige Unterschied der letzte; damit
0101 ^ 0100 = 0001 (5 ^ 4 = 1).
quelle
Sie können stattdessen Math.pow verwenden:
https://docs.oracle.com/javase/1.5.0/docs/api/java/lang/Math.html#pow%28double,%20double%29
quelle
Wie bereits in den anderen Antworten angegeben, handelt es sich um den Operator "Exklusiv oder" (XOR) . Weitere Informationen zu Bitoperatoren in Java finden Sie unter: http://java.sun.com/docs/books/tutorial/java/nutsandbolts/op3.html
quelle
Es ist der bitweise xor-Operator in Java, der 1 für einen anderen Bitwert (dh 1 ^ 0 = 1) und 0 für denselben Bitwert (dh 0 ^ 0 = 0) ergibt, wenn eine Zahl in binärer Form geschrieben wird.
Ex :-
So verwenden Sie Ihr Beispiel:
Die binäre Darstellung von 5 ist 0101. Die binäre Darstellung von 4 ist 0100.
Eine einfache Möglichkeit, Bitwise XOR zu definieren, besteht darin, zu sagen, dass das Ergebnis an jeder Stelle, an der sich die beiden Eingangsnummern unterscheiden, eine 1 hat.
0101 ^ 0100 = 0001 (5 ^ 4 = 1).
quelle
Dies liegt daran, dass Sie den Operator xor verwenden.
In Java oder in fast jeder anderen Sprache ist ^ bitweise xor, also natürlich
10 ^ 1 = 11. Weitere Informationen zu bitweisen Operatoren
Es ist interessant, dass Java und C # keinen Energieversorger haben.
quelle
Es ist der bitweise xor-Operator in Java, der 1 für einen anderen Wert (dh 1 ^ 0 = 1) und 0 für denselben Wert (dh 0 ^ 0 = 0) ergibt.
quelle
^ ist binär (wie in Base-2) xor, nicht exponentiation (was als Java-Operator nicht verfügbar ist). Informationen zur Potenzierung finden Sie unter java.lang.Math.pow ().
quelle
Es ist ein XOR-Operator. Es wird verwendet, um Bitoperationen an Zahlen durchzuführen. Es hat das Verhalten, dass, wenn Sie eine xor-Operation mit denselben Bits ausführen, z. B. 0 XOR 0/1 XOR 1, das Ergebnis 0 ist. Wenn jedoch eines der Bits unterschiedlich ist, ist das Ergebnis 1. Wenn Sie also 5 ^ 3 ausgeführt haben, dann Sie kann diese Zahlen 5, 6 in ihren binären Formen betrachten und somit wird der Ausdruck (101) XOR (110), was das Ergebnis (011) ergibt, dessen Dezimaldarstellung 3 ist.
quelle
In anderen Sprachen wie Python können Sie 10 ** 2 = 100 ausprobieren.
quelle