Vous n'êtes pas identifié(e).
L'icône rouge permet de télécharger chaque page du wiki visitée au format PDF et la grise au format ODT →
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente | Prochaine révision Les deux révisions suivantes | ||
doc:programmation:shells:page-man-bash-iv-symboles-dans-les-calculs-mathematiques [25/02/2023 11:00] agp91 [Les opérateurs arithmétiques] |
doc:programmation:shells:page-man-bash-iv-symboles-dans-les-calculs-mathematiques [25/02/2023 14:02] agp91 |
||
---|---|---|---|
Ligne 113: | Ligne 113: | ||
a=42 a^2=1764 | a=42 a^2=1764 | ||
</code> | </code> | ||
- | =====Opérateurs d'affectation arithmétique===== | + | ===== Les opérateurs d'affectation ===== |
- | ^opérateurs ^opérations ^ | + | Les opérateurs d'affectation, permettent affecter une valeur à une variable ou d'en modifier la valeur. |
- | | ''<nowiki>=</nowiki> '' | affectation arithmétique | | + | |
- | | ''<nowiki>+=</nowiki> '' | incrémentation | | + | |
- | | ''<nowiki>-=</nowiki> '' | décrémentation | | + | |
- | | ''<nowiki>/=</nowiki> '' | affectation par division | | + | |
- | | ''<nowiki>+=</nowiki> '' | affectation par multiplication | | + | |
- | | ''<nowiki>%=</nowiki> '' | afectation du reste | | + | |
- | **Voir :** | + | | Liste des opérateurs d'affectation ||| |
+ | ^ Opérateurs ^ Désignations ^ Résultats ^ | ||
+ | | Opérateurs unaires ||| | ||
+ | | **''++''** //var// | Ré-affectation par la pré-incrémentation à 1 | //var// = //var// + 1 puis retourne //var// | | ||
+ | | //var// **''++''** | Ré-affectation par la post-incrémentation à 1 | Retourne //var//, puis //var// = //var// + 1 | | ||
+ | | **''--''** //var// | Ré-affectation par la pré-décrémentation à 1 | //var// = //var// - 1 puis retourne //var// | | ||
+ | | //var// **''--''** | Ré-affectation par la post-décrémentation à 1 | Retourne //var//, puis //var// = //var// - 1 | | ||
+ | | Opérateurs binaires ||| | ||
+ | | //var// **''=''** //expr// | Simple affectation | Affecte //epxr// à la variable //var//| | ||
+ | | //var// **''+=''** //expr// | Ré-affectation par l'incrémentation | //var// = //var// + //expr// | | ||
+ | | //var// **''-=''** //expr// | Ré-affectation par la décrémentation | //var// = //var// - //expr// | | ||
+ | | //var// **''*=''** //expr// | Ré-affectation par la multiplication | //var// = //var// * //expr// | | ||
+ | | //var// **''/=''** //expr// | Ré-affectation par la division | //var// = //var// / //expr// | | ||
+ | | //var// **''%=''** //expr// | Ré-affectation par modulo | //var// = //var// % //expr// | | ||
+ | |||
+ | Exemples : | ||
+ | |||
+ | <code user> | ||
+ | declare -p a | ||
+ | let a=24 ; declare -p a | ||
+ | ((a=42)) ; echo a=$a | ||
+ | |||
+ | let 'a += 42' ; echo "a+=42 -> a=$a" | ||
+ | (( a /= 2 )) ; echo "a/=2 -> a=$a" | ||
+ | |||
+ | unset a | ||
+ | </code><code> | ||
+ | bash: declare: a : non trouvé | ||
+ | declare -- a="24" | ||
+ | a=42 | ||
+ | a+=42 -> a=84 | ||
+ | a/=2 -> a=42 | ||
+ | </code> | ||
+ | |||
+ | <note> | ||
+ | Contrairement à la commande **declare -i**, les commandes **let** et **<nowiki>((..))</nowiki>** ne donnent pas l'attribut numérique (**-i**) à une variable. | ||
+ | </note> | ||
+ | |||
+ | <code user> | ||
+ | declare -i b=42 | ||
+ | declare -p b | ||
+ | echo "Pré-incrémentation à 1 : Avant b=$b ; Pendant b=$((++b)) ; Après : b=$b" | ||
+ | echo "Post-décrémentation à 1 : Avant b=$b ; Pendant b=$((b--)) ; Après : b=$b" | ||
+ | |||
+ | unset b | ||
+ | </code><code> | ||
+ | declare -i b="42" | ||
+ | Pré-incrémentation à 1 : Avant b=42 ; Pendant b=43 ; Après : b=43 | ||
+ | Post-décrémentation à 1 : Avant b=43 ; Pendant b=43 ; Après : b=42 | ||
+ | </code> | ||
+ | |||
+ | Voir aussi : | ||
* **[[doc:programmation:shells:script-bash-variables-arguments-parametres?&#typologie-des-variables|typologie de variables]]** | * **[[doc:programmation:shells:script-bash-variables-arguments-parametres?&#typologie-des-variables|typologie de variables]]** | ||
* **[[doc:programmation:shells:script-bash-variables-arguments-parametres?&#variables-numeriques-et-calculs|variables numériques et calculs]]** | * **[[doc:programmation:shells:script-bash-variables-arguments-parametres?&#variables-numeriques-et-calculs|variables numériques et calculs]]** | ||
+ | ===== Les opérateurs relationnels ===== | ||
+ | |||
+ | Les opérateurs relationnels permettent la comparaison entre deux epressions numériques.\\ | ||
+ | Voir [[doc:programmation:shells:page-man-bash-iii-les-operateurs-de-comparaison-numerique#comparaison-numerique-avec|Comparaison numérique avec ((...))]] | ||
+ | |||
+ | ===== Les opérateurs bit-à-bit ===== | ||
+ | |||
+ | Les opérateurs bit-bit, opèrent sur des nombres binaires (une suite de 0 ou de 1). | ||
+ | Les nombres sont d'abords convertis en binaire, l’opération est appliquée, puis le résultat est reconverti en décimal. | ||
+ | |||
+ | | Liste des opérateurs bit-à-bit ||| | ||
+ | ^ Opérateurs ^ Désignations ^ Résultats ^ | ||
+ | | Opérateur unaire ||| | ||
+ | | **''~''** //expr// | Négation binaire | Retourne le complément à 1 de //expr//\\ (~1 -> 0 ; ~0 -> 1) | | ||
+ | | Opérateurs binaires ||| | ||
+ | | //expr1// **''&''** //expr2// | ET binaire | Retourne le ET bit-à-bit entre //expr1// et //expr2//\\ (1 ET 1 -> 1 ; 0 ET 0 -> 0 ; 1 ET 0 -> 0 ; 0 ET 1 -> 0) | | ||
+ | | //expr1// **''|''** //expr2// | OU binaire | Retourne le OU bit-à-bit entre //expr1// et //expr2//\\ (1 OU 1 -> 1 ; 0 OU 0 -> 0 ; 1 OU 0 -> 1 ; 0 OU 1 -> 1) | | ||
+ | | //expr1// **''^''** //expr2// | OU binaire exclusif (XOR) | Retourne le OU bit-à-bit exclusif entre //expr1// et //expr2//\\ (1 XOR 1 -> 0 ; 0 XOR 0 -> 0 ; 1 XOR 0 -> 1 ; 0 XOR 1 -> 1) | | ||
+ | | //expr1// **''<nowiki><<</nowiki>''** //expr2//| Décalage binaire à gauche | Retourne le décalage de //expr2// bit(s) à gauche de //expr1//\\ (//expr2// 0 ajoutés(s) à droite d'//expr1//) | | ||
+ | | //expr1// **''<nowiki>>></nowiki>''** //expr2//| Décalage binaire à droite | Retourne le décalage de //expr2// bit(s) à droite de //expr1//\\ (//expr2// bit(s) tronqué(s) à droite d'//expr1//) | | ||
+ | |||
+ | Exemples | ||
+ | <code user> | ||
+ | echo $((~42)) | ||
+ | echo $((42^42)) | ||
+ | echo $((42<<2)) | ||
+ | </code><code> | ||
+ | -43 | ||
+ | 0 | ||
+ | 168 | ||
+ | </code> | ||
+ | |||
+ | Voir aussi : | ||
+ | |||
+ | * [[atelier:chantier:bash:les-operations-binaires|Les opérations binaire]] | ||
=====Opérateurs binaires ===== | =====Opérateurs binaires ===== | ||
Ces opérateurs s'utilisent sur des binaires, (sur des 1 et des zéro). | Ces opérateurs s'utilisent sur des binaires, (sur des 1 et des zéro). |