Julia Opérateurs de base
Un opérateur est un symbole qui indique au compilateur d'effectuer des opérations mathématiques ou logiques spécifiques, telles que :3+2=5。
Le langage Julia dispose d'un riche ensemble d'opérateurs intégrés. Les opérations prises en charge sont :
- Opérateurs arithmétiques
- Opérateurs logiques
- Opérateurs relationnels
- Opérateurs bit à bit
- Opérateurs d'affectation
- Opérateurs « point » vectorisés
Opérateurs arithmétiques
Le tableau suivant présente les opérateurs arithmétiques de base de Julia, qui s'appliquent à tous les types numériques de base :
| Expression | Name | Description |
|---|---|---|
+x |
Opérateur plus unaire | Opération d'identité |
-x |
Opérateur moins unaire | Transforme la valeur en son négatif |
x + y |
Opérateur d'addition binaire | Additionne deux nombres |
x - y |
Opérateur de soustraction binaire | Soustrait deux nombres |
x * y |
Opérateur de multiplication | Multiplie deux nombres |
x / y |
Opérateur de division | Divise deux nombres |
x ÷ y |
Division entière | Prend la partie entière de x / y |
x \ y |
Division inverse | Équivalent ày / x |
x ^ y |
Opérateur de puissance | xdeyPuissance |
x % y |
Reste | Équivalent àrem(x,y) |
Exemples
6
julia> 1 - 2
-1
julia> 3*2/12
0.5
julia> 2+20-5
17
julia> 50*2/10
10.0
julia> 23%2
1
julia> 2^4
16
Opérateurs booléens
Le tableau suivant présente les opérateurs booléens de Julia :
| Expression | Name |
|---|---|
!x |
Négation |
x && y |
ET court-circuit. Dans l’expression x && y, la sous-expression y n’est exécutée que si x est vrai. |
x || y |
OU court-circuit. Dans l’expression x || y, la sous-expression y n’est exécutée que si x est faux. |
Exemples
false
julia> !false
vrai
julia> true && (x = (1, 2, 3))
(1, 2, 3)
julia> false && (x = (1, 2, 3))
false
julia> false || (x = (1, 2, 3))
(1, 2, 3)
Opérateurs relationnels
Le tableau suivant présente les opérateurs relationnels de Julia :
| Operator | Name |
|---|---|
== |
Égalité |
!=, ≠ |
Inégalité |
< |
Inférieur à |
<=, ≤ |
Inférieur ou égal à |
> |
Supérieur à |
>=, ≥ |
Supérieur ou égal à |
Exemples
vrai
julia> 100 == 101
false
julia> 100 != 101
vrai
julia> 100 == 100.0
vrai
julia> 100 < 500
vrai
julia> 100 > 500
false
julia> 100 >= 100.0
vrai
julia> -100 <= 100
vrai
julia> -100 <= -100
vrai
julia> -100 <= -500
false
julia> 100 < -10.0
false
Comparaisons chaînées
Les comparaisons chaînées sont particulièrement pratiques lors de l'écriture de code numérique. Elles utilisent l'opérateur && pour comparer des scalaires, et pour les tableaux, elles utilisent & pour effectuer une comparaison élément par élément. Par exemple, 0 .< A .< 1 produit un tableau booléen dont tous les éléments sont true si les éléments de A sont tous compris entre 0 et 1.
Julia permet les comparaisons chaînées :
Exemples
vrai
Notez l'ordre d'évaluation des comparaisons chaînées :
Exemples
M (fonction générique avec 1 méthode)
julia> M(1) < M(2) <= M(3)
2
1
3
vrai
julia> M(1) > M(2) <= M(3)
2
1
false
Opérateurs bit à bit
Le tableau suivant présente les opérateurs bit à bit de Julia :
| Expression | Name |
|---|---|
~x |
NON bit à bit |
x & y |
ET bit à bit |
x | y |
OU bit à bit |
x ⊻ y |
XOR bit à bit (OU exclusif logique) |
x ⊼ y |
NAND bit à bit |
x ⊽ y |
NOR bit à bit |
x >>> y |
Décalage à droite logique |
x >> y |
Décalage à droite arithmétique |
x << y |
Décalage à gauche logique/arithmétique |
Exemples
-124
julia> 123 & 234
106
julia> 123 | 234
251
julia> 123 ⊻ 234
145
julia> xor(123, 234)
145
julia> nand(123, 123)
-124
julia> 123 ⊼ 123
-124
julia> nor(123, 124)
-128
julia> 123 ⊽ 124
-128
julia> ~UInt32(123)
0xffffff84
julia> ~UInt8(123)
0x84
Opérateurs d'affectation
Chaque opérateur binaire et opérateur bit à bit peut effectuer une affectation composée à l'opérande gauche en plaçant = directement après l'opérateur binaire. Par exemple,x += 3est équivalent à x = x + 3 。Le tableau suivant présente les opérateurs d'affectation de Julia :
| Operator | Description | Exemple |
|---|---|---|
| = | Opérateur d'affectation simple : affecte la valeur de l'opérande droit à l'opérande gauche. | C = A + B affecte la valeur de A + B à C |
| += | Opérateur d'addition et d'affectation : affecte à l'opérande gauche le résultat de l'addition de l'opérande droit à l'opérande gauche. | C += A équivaut à C = C + A |
| -= | Opérateur de soustraction et d'affectation : affecte à l'opérande gauche le résultat de la soustraction de l'opérande droit de l'opérande gauche. | C -= A est équivalent à C = C - A |
| *= | Opérateur de multiplication et d'affectation : affecte à l'opérande gauche le résultat de la multiplication de l'opérande droit par l'opérande gauche. | C *= A est équivalent à C = C * A |
| /= | Opérateur de division et d'affectation : affecte à l'opérande gauche le résultat de la division de l'opérande gauche par l'opérande droit. | C /= A est équivalent à C = C / A |
| %= | Opérateur de modulo et d'affectation : affecte le modulo des deux opérandes à l'opérande gauche. | C %= A est équivalent à C = C % A |
| <<= | Opérateur de décalage à gauche et d'affectation | C <<= 2 est équivalent à C = C << 2 |
| >>= | Opérateur de décalage à droite et d'affectation | C >>= 2 est équivalent à C = C >> 2 |
| &= | Opérateur ET bit à bit et d'affectation | C &= 2 est équivalent à C = C & 2 |
| ^= | Opérateur XOR bit à bit et d'affectation | C ^= 2 est équivalent à C = C ^ 2 |
| |= | Opérateur OR bit à bit et d'affectation | C |= 2 est équivalent à C = C | 2 |
| >>>= | Opérateur de décalage à droite logique et d'affectation | C >>>= 2 est équivalent à C = C >>>2 |
| ⊻= | Opérateur d'affectation XOR (OU exclusif logique) | C ⊻= 2 est équivalent à C = C ⊻= 2 |
Exemples
1
julia> x += 3
4
julia> x
4
Opérateurs « point » vectorisés
En Julia, chaque opérateur binaire a un opérateur "point" correspondant ; par exemple,^il existe un.^correspondant. Ce.^correspondant est automatiquement défini par Julia pour effectuer des opérations élément par élément^opération. Par exemple,[1,2,3] ^ 3est illégal, car les mathématiques n'ont pas défini le cube d'un tableau (avec des longueurs de ligne et de colonne différentes). Mais[1,2,3] .^ 3est légal en Julia, et il effectue l'opération ^ élément par élément (aussi appelée opération vectorisée), donnant [1^3, 2^3, 3^3]. De même,!ou√les opérateurs unaires comme celui-ci ont aussi un.√ correspondant utilisé pour effectuer des opérations élément par élément.
Exemples
3-element Vector{Int64}:
1
8
27
En plus des opérateurs point, nous avons aussi des opérateurs d'affectation élément par élément, tels quea .+= b(ou@. a += b) est analysé commea .= a .+ b。
Précédence et associativité des opérateurs
La priorité des opérateurs détermine le regroupement des termes dans une expression. Cela affecte la façon dont une expression est évaluée. Certains opérateurs ont une priorité plus élevée que d'autres ; par exemple, les opérateurs de multiplication et de division ont une priorité plus élevée que les opérateurs d'addition et de soustraction.
Par exemplex = 7 + 3 * 2, ici, x reçoit 13 au lieu de 20, car l'opérateur*a+une précédence plus élevée, donc la multiplication 3*2 est calculée en premier, puis ajoutée à 7.
Le tableau suivant répertorie les opérateurs par priorité, de la plus élevée à la plus faible. Les opérateurs ayant une priorité plus élevée apparaissent en haut du tableau, et les opérateurs ayant une priorité plus faible apparaissent en bas. Dans une expression, les opérateurs ayant une priorité plus élevée sont évalués en premier.
| Catégorie | Operator | Associativité |
|---|---|---|
| Syntaxe | . suivi de :: |
Associatif à gauche |
| Exponentiation | ^ |
Associatif à droite |
| Opérateurs unaires | + - √ |
Associatif à droite |
| Opérations de décalage | << >> >>> |
Associatif à gauche |
| Division | // |
Associatif à gauche |
| Multiplication | * / % & \ ÷ |
Associatif à gauche |
| Addition | + - | ⊻ |
Associatif à gauche |
| Syntaxe | : .. |
Associatif à gauche |
| Syntaxe | |> |
Associatif à gauche |
| Syntaxe | <| |
Associatif à droite |
| Comparaison | > < >= <= == === != !== <: |
Non associatif |
| Contrôle du flux | && suivi de || suivi de ? |
Associatif à droite |
| Opérations sur les paires | => |
Associatif à droite |
| Affectation | = += -= *= /= //= \= ^= ÷= %= |= &= ⊻= <<= >>= >>>= |
Associatif à droite |
Nous pouvons également utiliser la fonction intégréeBase.operator_precedencepour afficher la valeur de priorité de n'importe quel opérateur donné ; plus la valeur est grande, plus la priorité est élevée.
Exemples
(11, 12, 17)
julia> Base.operator_precedence(:sin), Base.operator_precedence(:+=), Base.operator_precedence(:(=)) # (Remarque : il doit y avoir des parenthèses autour du signe égal `:(=)`)
(0, 1, 1)
De plus, les fonctions intégréesBase.operator_associativitypeuvent renvoyer une représentation symbolique de l'associativité des opérateurs :
Exemples
(:left, :none, :right)
julia> Base.operator_associativity(:⊗), Base.operator_associativity(:sin), Base.operator_associativity(:→)
(:left, :none, :right)