Was bedeutet der Operator ^ Sie in Java Stack-Überlauf
Nehmen wir 5 ^ 6 als Beispiel:
Dies ist die Wahrheitstabelle für bitweise (JLS 15.22.1) und logischen (JLS 15.22.2) xor:
Einfacher ausgedrückt, können Sie auch als von xor denken „dieses oder jenes, aber beide nicht!“.
Potenzierung in Java
Wie für Integer-Potenzierung, hat leider Java nicht so einen Operator. Sie können doppelt Math.pow (double, double) verwenden (Gießen das Ergebnis notwendig int if).
Sie können auch die traditionelle Bitverschiebung Trick verwenden, um einige Potenzen von zwei zu berechnen. Das heißt, (1L << k) is two to the k -th power for k=0..63 .
Merge Note. Diese Antwort wurde von einer anderen Frage verschmolzen, wo die Absicht Potenzierung zu verwenden, war eine Zeichenfolge „8675309“ zu konvertieren, ohne Integer.parseInt als Programmierübung (^ bezeichnet Potenzierung von jetzt an) in int. Die Absicht des OP betrug 8 * 10 ^ 6 + 6 * 10 ^ 5 + 7 * 10 ^ 4 + 5 * 10 ^ 3 + 3 * 10 ^ 2 + 0 * 10 ^ 1 + 9 * 10 ^ 0 = 8675309 zu berechnen; der nächste Teil dieser Antwort-Adressen, die Potenzierung für diese Aufgabe nicht erforderlich ist.
Horner-Schema
Addressing Ihre spezifischen Bedürfnisse, Sie brauchen eigentlich nicht verschiedene Potenzen von 10. Sie verwenden können, um zu berechnen, was das Programm der Horner genannt wird. die nicht nur einfach, sondern auch effizient.
Da Sie dies als eine persönliche Übung tun, werde ich nicht den Java-Code geben, aber hier ist die Hauptidee:
Wie viele Menschen haben bereits darauf hingewiesen, es ist der XOR-Operator. Viele Menschen haben auch schon darauf hingewiesen, dass, wenn Sie Potenzierung wollen, dann müssen Sie Math.pow verwenden.
Aber ich denke, es ist auch nützlich zu beachten, dass ^ ist nur eine von einer Familie von Operatoren, die gemeinsam bekannt als Bit-Operatoren sind:
Diese Operatoren können nützlich sein, wenn Sie auf ganze Zahlen lesen und schreiben müssen, wo die einzelnen Bits als Flags interpretiert werden sollen, oder wenn ein bestimmte Bereich von Bits in einer ganzen Zahl eine besondere Bedeutung hat, und Sie wollen nur diejenigen extrahieren. Sie können eine Menge von täglichen Programmierung zu tun zu benötigen, ohne jemals diese Operatoren zu verwenden, aber wenn Sie jemals mit Daten auf Bit-Ebene arbeiten, eine gute Kenntnis dieser Operatoren ist von unschätzbarem Wert.
Lot viele Menschen haben bereits erklärt, was es ist und wie sie verwendet werden, aber abgesehen von den offensichtlichen können Sie diesen Operator verwenden eine Menge Programmierung Tricks zu tun, wie
- XOR-Verknüpfung aller Elemente in einem boolean-Array würden Sie sagen, wenn das Array ungerade Anzahl von wahren Elemente hat
- Wenn Sie ein Array mit allen Zahlen zu wiederholen gerade Anzahl von Malen mit einer Ausnahme, die ungerade Anzahl von Malen wiederholt können Sie feststellen, dass durch alle Elemente XOR-Verknüpfung.
- Swapping Werte ohne temporäre Variable
- Suche nach vermisster Zahl im Bereich von 1 bis n
- Grund Validierung von Daten über das Netzwerk gesendet.
Lot viele solche Tricks können mit bitweise Operatoren, interessantes Thema gemacht werden, um zu erkunden.
beantwortet 28. Juli '15 um 10:06
EJP
222K ● 21 ● 167 ● 284
verwenden Math.pow statt:
Arak des Link verweist auf die Definition von Exklusiv-Oder, das erklärt, wie diese Funktion für zwei Boolesche Werte funktioniert.
Das fehlende Stück von Informationen ist, wie dies zu zwei ganzen Zahlen gilt (oder Integer-Wert). Bitweise Exklusiv-Oder ist in zwei Zahlen der entsprechenden Binärziffern auf Paare angewendet, und die Ergebnisse werden wieder zusammengebaut in eine ganzzahlige Ergebnis.
So verwenden Sie Ihr Beispiel:
- Die binäre Darstellung von 5 ist 0101.
- Die binäre Darstellung von 4 ist 0100.
Eine einfache Art und Weise bitweise XOR zu definieren, ist das Ergebnis zu sagen, ein 1 in jedem Ort hat, wo die beiden Eingangszahl unterscheiden.
Mit 4 und 5 ist der einzige Unterschied in dem letzten Platz; damit
^ 0101 0100 = 0001 (5 ^ 4 = 1).
Das ist, weil Sie den XOR-Operator verwenden.
In Java, oder fast jede andere Sprache, ^ ist bitweise xor, so natürlich,
Es ist interessant, wie Java und C # keine Strombetreiber haben.
Es ist der bitweise XOR-Operator in der Java-1 für verschiedenen Wert von Bit-Ergebnissen (dh 1 ^ 0 = 1) und 0 für denselben Wert von Bit (dh 0 ^ 0 = 0), wenn eine Zahl in binärer Form geschrieben wird.
So verwenden Sie Ihr Beispiel:
Die binäre Darstellung von 5 ist 0101. Die binäre Darstellung von 4 ist 0100.
Ein einfacher Weg, bitweise XOR zu definieren, ist das Ergebnis zu sagen, ein 1 in jedem Ort hat, wo die beiden Eingangszahl unterscheiden.
^ 0101 0100 = 0001 (5 ^ 4 = 1).
Es ist der bitweise XOR-Operator in der Java-1 für verschiedenen Wert ergibt (dh 1 ^ 0 = 1) und 0 für denselben Wert (dh 0 ^ 0 = 0).
^ Ist binär (wie in der Basis 2) xor, nicht Potenzierung (die als Java-Operator nicht verfügbar ist). Für Potenzierung finden java.lang.Math.pow ().
In anderen Sprachen wie Python können Sie tun, 10 ** 2 = 100, versuchen Sie es.
Inzwischen in Groovy:
Das Ausführen des oben mit groovyShell zum Beispiel gibt:
beantwortet 21. Juli um 3:46