Quelle fonction l' ^
opérateur (caret) remplit-il en Java?
Quand j'essaye ceci:
int a = 5^n;
...ça me donne:
pour n = 5, renvoie 0
pour n = 4, renvoie 1
pour n = 6, renvoie 3
... donc je suppose que cela n'exécute pas l'exponentiation. Mais c'est quoi alors?
java
operators
exponentiation
joroj
la source
la source
^
opérateur n'est pas destiné à l'alimentation. Vous auriez besoin à laMath.pow
place. Voir la réponse du polygenelubricant.^
pour l'exponentiation? C'est juste du bon sens!). L'exploration par OP du langage Java doit être encouragée.Réponses:
L'opérateur ^ en Java
^
en Java est l'opérateur exclusif ou ("xor").Prenons
5^6
comme exemple:Voici la table de vérité pour xor au niveau du bit ( JLS 15.22.1 ) et logique ( JLS 15.22.2 ):
Plus simplement, vous pouvez également considérer xor comme "ceci ou cela, mais pas les deux !".
Voir également
Exponentiation en Java
Quant à l'exponentiation d'entier, malheureusement Java n'a pas un tel opérateur. Vous pouvez utiliser
double Math.pow(double, double)
(lancer le résultatint
si nécessaire).Vous pouvez également utiliser l'astuce traditionnelle de décalage de bits pour calculer certains pouvoirs de deux. Autrement dit,
(1L << k)
est deux à la puissance k-e pourk=0..63
.Voir également
Le schéma de Horner
Pour répondre à vos besoins spécifiques , vous n'avez en fait pas besoin de calculer différentes puissances de 10. Vous pouvez utiliser ce que l'on appelle le schéma de Horner , qui est non seulement simple mais aussi efficace.
Puisque vous faites cela comme un exercice personnel, je ne donnerai pas le code Java, mais voici l'idée principale:
Cela peut sembler compliqué au début, mais ce n'est vraiment pas le cas. Vous lisez fondamentalement les chiffres de gauche à droite, et vous multipliez votre résultat jusqu'à présent par 10 avant d'ajouter le chiffre suivant.
Sous forme de tableau:
la source
Comme beaucoup de personnes l'ont déjà souligné, c'est l' opérateur XOR . De nombreuses personnes ont également souligné que si vous souhaitez une exponentiation, vous devez utiliser Math.pow .
Mais je pense qu'il est également utile de noter que ce
^
n'est que l'un d'une famille d'opérateurs appelés collectivement opérateurs au niveau du bit:D' ici .
Ces opérateurs peuvent être utiles lorsque vous devez lire et écrire dans des entiers où les bits individuels doivent être interprétés comme des indicateurs, ou lorsqu'une plage spécifique de bits dans un entier a une signification spéciale et que vous souhaitez extraire uniquement ceux-ci. Vous pouvez effectuer une grande partie de la programmation quotidienne sans jamais avoir besoin d'utiliser ces opérateurs, mais si vous devez travailler avec des données au niveau du bit, une bonne connaissance de ces opérateurs est inestimable.
la source
C'est XOR au niveau du bit, Java n'a pas d'opérateur d'exponentiation, vous devriez utiliser à la
Math.pow()
place.la source
Règle d'opérateur XOR =>
Représentation binaire de 4, 5 et 6:
maintenant, effectuez l'opération XOR sur 5 et 4:
De même,
la source
C'est l'
XOR
opérateur au niveau du bit.la source
Beaucoup de gens ont déjà expliqué ce que c'est et comment il peut être utilisé, mais en dehors de l'évidence, vous pouvez utiliser cet opérateur pour faire beaucoup d'astuces de programmation comme
Beaucoup de ces astuces peuvent être effectuées en utilisant des opérateurs peu sages, sujet intéressant à explorer.
la source
Comme d'autres l'ont dit, c'est XOR au niveau du bit. Si vous voulez élever un nombre à une puissance donnée, utilisez
Math.pow(a , b)
, oùa
est un nombre etb
est la puissance.la source
Règle d'opérateur XOR
L'opérateur au niveau du bit fonctionne sur les bits et effectue des opérations bit par bit. Supposons que a = 60 et b = 13; maintenant au format binaire, ils seront comme suit -
la source
Le lien d'AraK pointe vers la définition de exclusif-or, qui explique comment cette fonction fonctionne pour deux valeurs booléennes.
L'information manquante est de savoir comment cela s'applique à deux entiers (ou valeurs de type entier). Le bit exclusif ou est appliqué aux paires de chiffres binaires correspondants en deux nombres, et les résultats sont réassemblés en un résultat entier.
Pour utiliser votre exemple:
Un moyen simple de définir XOR au niveau du bit est de dire que le résultat a un 1 à chaque endroit où les deux nombres d'entrée diffèrent.
Avec 4 et 5, la seule différence est à la dernière place; alors
0101 ^ 0100 = 0001 (5 ^ 4 = 1).
la source
Vous pouvez utiliser Math.pow à la place:
https://docs.oracle.com/javase/1.5.0/docs/api/java/lang/Math.html#pow%28double,%20double%29
la source
Comme déjà indiqué par les autres réponses, il s'agit de l' opérateur "exclusif ou" (XOR) . Pour plus d'informations sur les opérateurs de bits en Java, voir: http://java.sun.com/docs/books/tutorial/java/nutsandbolts/op3.html
la source
C'est l'opérateur Bitor xor en java qui donne 1 pour une valeur de bit différente (ie 1 ^ 0 = 1) et 0 pour la même valeur de bit (ie 0 ^ 0 = 0) quand un nombre est écrit sous forme binaire.
ex: -
Pour utiliser votre exemple:
La représentation binaire de 5 est 0101. La représentation binaire de 4 est 0100.
Une façon simple de définir Bitwise XOR consiste à dire que le résultat a un 1 à chaque endroit où les deux nombres d'entrée diffèrent.
0101 ^ 0100 = 0001 (5 ^ 4 = 1).
la source
C'est parce que vous utilisez l'opérateur xor.
En java, ou à peu près n'importe quelle autre langue, ^ est xor au niveau du bit, donc bien sûr,
10 ^ 1 = 11. plus d'informations sur les opérateurs au niveau du bit
Il est intéressant de noter que Java et C # n'ont pas d'opérateur puissant.
la source
C'est l'opérateur xor au niveau du bit en java qui donne 1 pour une valeur différente (ie 1 ^ 0 = 1) et 0 pour la même valeur (ie 0 ^ 0 = 0).
la source
^ est un xor binaire (comme dans la base-2), pas une exponentiation (qui n'est pas disponible en tant qu'opérateur Java). Pour l'exponentiation, voir java.lang.Math.pow ().
la source
Il s'agit d'un opérateur XOR. Il est utilisé pour effectuer des opérations binaires sur des nombres. Il a un comportement tel que lorsque vous effectuez une opération xor sur les mêmes bits, dites 0 XOR 0/1 XOR 1, le résultat est 0. Mais si l'un des bits est différent, le résultat est 1. Donc, lorsque vous avez fait 5 ^ 3, vous peut regarder ces nombres 5, 6 sous leurs formes binaires et ainsi l'expression devient (101) XOR (110) qui donne le résultat (011) dont la représentation décimale est 3.
la source
Dans d'autres langues comme Python, vous pouvez faire 10 ** 2 = 100, essayez-le.
la source