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 [24/02/2023 23:56]
agp91 [Introduction]
doc:programmation:shells:page-man-bash-iv-symboles-dans-les-calculs-mathematiques [25/02/2023 14:02]
agp91 [Opérateurs binaires]
Ligne 54: Ligne 54:
 </​note>​ </​note>​
  
-===== Les bases arithmétiques ​=====+===== Les systèmes numériques ​=====
  
 Les expressions numériques évaluées par **let** et **<​nowiki>​((...))</​nowiki>​** peuvent contenir des nombres de différent système numérique.\\ ​ Les expressions numériques évaluées par **let** et **<​nowiki>​((...))</​nowiki>​** peuvent contenir des nombres de différent système numérique.\\ ​
Ligne 75: Ligne 75:
     * De la base 11 à la base 36, les lettres minuscules ou majuscules peuvent être utilisées indifféremment.     * De la base 11 à la base 36, les lettres minuscules ou majuscules peuvent être utilisées indifféremment.
     * De la base 37 à la base 64, les lettres minuscules, majuscules, @ et _ sont à utiliser dans cet ordre.     * De la base 37 à la base 64, les lettres minuscules, majuscules, @ et _ sont à utiliser dans cet ordre.
-=====Opérateurs ​arithmétiques =====+===== Les opérateurs ​arithmétiques =====
  
-^opérateurs ​ ​^opérations ​                    ^ +Les opérateurs ​arithmétiques permettent de réaliser des calculs numériques classiques.
-| ''<​nowiki>​ +</​nowiki>​ '' ​   | addition ​                     | +
-| ''​ <​nowiki>​-</​nowiki>​ '' ​   | soustraction ​                 | +
-| ''​ <​nowiki>/</​nowiki>​ '' ​   | division (récuple quotient) |  +
-| ''​ <​nowiki>​%</​nowiki>​ '' ​   | modulo (récup. le reste) ​     | +
-| ''​ <​nowiki>​* </​nowiki>'' ​   | multiplication ​               | +
-| ''​ <​nowiki>​**</​nowiki>​ '' ​  | puissance (''​bash 2.02 et sup.''​) |+
  
->Pour les calculs complexes bash n'est pas adapté, il faut utiliser le langage ​''​bc''​.+|  Liste des opérateurs arithmétiques ​ ||| 
 +^  Opérateurs ​ ^  Désignations ​ ^  Résultats ​ ^ 
 +| Opérateurs unaires ||| 
 +| **''​+''** //​expr//​ | Signe positif | Valeur de //​expr//​ | 
 +| **''​-''​** //​expr//​ | Signe négatif | Opposé de //​expr//​ | 
 +| Opérateurs binaires ||| 
 +| //expr1// **''​+''​** //​expr2//​ | Addition | //expr2// ajouté à //​expr1//​ | 
 +| //expr1// **''​-''​** //​expr2//​ | Soustraction | //expr2// retiré de //​expr1//​ | 
 +| //expr1// **''​*''​** //​expr2//​ | Multiplication| //expr1// multiplié par //​expr2//​ | 
 +| //expr1// **''/''​** //​expr2//​ | Division | //expr1// divisé par //​expr2//​ | 
 +| //expr1// **''​%''​** //​expr2//​ | Modulo | Reste de la division de //expr1// par //​expr2//​ | 
 +| //expr1// **''<​nowiki>​**</​nowiki>​''​** //expr2//| Puissance | //expr1// multiplié par lui-même //expr2// fois |
  
-=====Opérateurs d'​affectation arithmétique=====+Exemples :
  
-^opérateurs ​                        ​^opérations ​                      ^ +<code user
-| ''​<nowiki>=</​nowiki>​ '' ​          | affectation arithmétique ​       | +a=42 # Affecte 42 à la variable a 
-| ''<​nowiki>​+=</​nowiki>​ '' ​         | incrémentation ​                 | +echo $((-a)) # Retourne l'opposé de la valeur contenue dans la variable a.
-| ''<​nowiki>​-=</​nowiki>​ '' ​         | décrémentation ​                 | +
-| ''<​nowiki>/​=</​nowiki>​ '' ​         | affectation par division ​       | +
-| ''<​nowiki>​+=</​nowiki>​ '' ​         | affectation par multiplication ​ | +
-| ''<​nowiki>​%=</​nowiki>​ '' ​         | afectation du reste             |+
  
-**Voir :**+echo $((21+025)) #​ Retourne l’addition de l'​octal 25 au décimal 21. 
 + 
 +echo 3/​2=$((3/​2)) #​ Retourne 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 élevée à la puissance 2 
 + 
 +unset a 
 +</​code><​code>​ 
 +-42 
 +42 
 +3/2=1 
 +3/2 reste 1 
 +a=42 a^2=1764 
 +</​code>​ 
 +===== Les opérateurs d'​affectation ===== 
 + 
 +Les opérateurs d'​affectation,​ permettent affecter une valeur à une variable ou d'en modifier la valeur. 
 + 
 +|  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