logo Debian Debian Debian-France Debian-Facile Debian-fr.org Forum-Debian.fr Debian ? Communautés logo inclusivité

Debian-facile

Bienvenue sur Debian-Facile, site d'aide pour les nouveaux utilisateurs de Debian.

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 → ODT PDF Export

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
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 04:10]
agp91 [Les opérateurs arithmétiques]
doc:programmation:shells:page-man-bash-iv-symboles-dans-les-calculs-mathematiques [25/02/2023 14:02]
agp91 [Opérateurs binaires]
Ligne 79: Ligne 79:
 Les opérateurs arithmétiques permettent de réaliser des calculs numériques classiques. Les opérateurs arithmétiques permettent de réaliser des calculs numériques classiques.
  
-|  ​Les opérateurs arithmétiques ​ |||+|  ​Liste des opérateurs arithmétiques ​ |||
 ^  Opérateurs ​ ^  Désignations ​ ^  Résultats ​ ^ ^  Opérateurs ​ ^  Désignations ​ ^  Résultats ​ ^
 | Opérateurs unaires ||| | Opérateurs unaires |||
Ligne 87: Ligne 87:
 | //expr1// **''​+''​** //​expr2//​ | Addition | //expr2// ajouté à //​expr1//​ | | //expr1// **''​+''​** //​expr2//​ | Addition | //expr2// ajouté à //​expr1//​ |
 | //expr1// **''​-''​** //​expr2//​ | Soustraction | //expr2// retiré de //​expr1//​ | | //expr1// **''​-''​** //​expr2//​ | Soustraction | //expr2// retiré de //​expr1//​ |
-| //expr1// **''​*''​** //​expr2//​ | Multiplication| //expr1// multiplié ​par par //​expr2//​ |+| //expr1// **''​*''​** //​expr2//​ | Multiplication| //expr1// multiplié par //​expr2//​ |
 | //expr1// **''/''​** //​expr2//​ | Division | //expr1// divisé par //​expr2//​ | | //expr1// **''/''​** //​expr2//​ | Division | //expr1// divisé par //​expr2//​ |
 | //expr1// **''​%''​** //​expr2//​ | Modulo | Reste de la division de //expr1// par //expr2// | | //expr1// **''​%''​** //​expr2//​ | Modulo | Reste de la division de //expr1// par //expr2// |
Ligne 103: Ligne 103:
 echo 3/2 reste $((3%2)) # Retourne le reste de 3/2 echo 3/2 reste $((3%2)) # Retourne le reste de 3/2
  
-echo a=$a a^2=$((a**2)) #​ Retourne la valeur de la variable ​puissance 2+echo a=$a a^2=$((a**2)) #​ Retourne la valeur de la variable ​élevée à la puissance 2
  
 unset a unset a
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]]**
  
-=====Opérateurs binaires ​===== +===== Les opérateurs relationnels ​=====
-Ces opérateurs s'​utilisent sur des binaires, (sur des 1 et des zéro).+
  
-^ Opérateurs ​      ^ significations ​                                            ^ +Les opérateurs relationnels permettent la comparaison entre deux epressions numériques.\\ ​ 
-| ''<<'' ​ | décalage d'un bit à gauche (=mutiplication par deux)       | +Voir [[doc:​programmation:​shells:​page-man-bash-iii-les-operateurs-de-comparaison-numerique#​comparaison-numerique-avec|Comparaison numérique avec ((...))]]
-''>>''​ | décalage d'un bit à droite ​(=division par deux)            | +
-| ''&<'' ​  | "​et"​ logique  ​(ex : on a une variable=1; si on fait &1 cela fait 1 (en binaire 1 et 1 = 1)+
-| ''​|<'' ​ | ou (inclusifbinaire ​                                     | +
-| ''​~'' ​  | non binaire ​                                               | +
-| ''​^'' ​  | XOR (ou exclusif) binaire ​                                 | +
  
-<note+===== Les opérateurs bit-à-bit ===== 
-Le ''&​<'' ​( "​et" ​binaire), le ''​|<''​ ("​ou" ​binaire), et le ''​~'' ​("​non" ​binaire)\\ ​peuvent aussi être remplacés ​(de façon équivalentepar les opérateurs logiques que l'on a vus au sujet de la composition ​de commandes sur erreur ou sur réussite.+ 
 +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 
 +
 +168 
 +</​code>​ 
 + 
 +Voir aussi : 
 + 
 +  * [[atelier:​chantier:​bash:​les-operations-binaires|Les opérations binaire]]
  
-> ''&&'' ​ : exécution de la commande suivante si, et seulement si la précédente renvoie 0 
-> 
-> ''​||'' ​ : exécution de la commande suivante si, et seulement si la précédente renvoie autre chose que 0 
-> 
-> ''​!'' ​  : inverse du retour d'une commande, c'est à dire un "​non"​ logique 
-^_^ 
-</​note>​ 
 ===== Écriture utile pour les boucles ===== ===== Écriture utile pour les boucles =====
 ===Post-incrémentation et pré-incrémentation :=== ===Post-incrémentation et pré-incrémentation :===
doc/programmation/shells/page-man-bash-iv-symboles-dans-les-calculs-mathematiques.txt · Dernière modification: 26/04/2023 19:29 par bendia

Pied de page des forums

Propulsé par FluxBB