Edit

kc3-lang/kc3/doc/1_KC3/1.14_Integer.fr.md

Branch :

  • doc/1_KC3/1.14_Integer.fr.md
  • # 1.14 Entier
    
    ## 1.14.1 Petits entiers
    
    IKC3 prend en charge toutes les tailles d'entiers C depuis `U8`
    (équivalent à `uint8_t` en C) jusqu'à `U64` (`uint64_t`) pour les
    entiers non signés, et de `S8` à `S64` pour les entiers signés.
    
    En plus de ces 8 types de base, il existe 2 types d'entiers de taille
    pointeur : `Uw` pour les entiers non signés, et `Sw` pour les entiers
    signés.
    
    Les petits entiers prennent peu de place, sont statiques, passés par
    valeur et non par pointeur, ce qui les rend rapides.
    
    Ils n'ont pas besoin d'être nettoyés après usage et peuvent donc être
    utilisés dans des tableaux comme en C.
    
    ```elixir
    ikc3> type(-1)
    S8
    ikc3> type(-128)
    S16
    ikc3> type(-32768)
    S32
    ikc3> type(-2147483648)
    S64
    ikc3> type(-9223372036854775807)
    S64
    ikc3> type(0)
    U8
    ikc3> type(256)
    U16
    ikc3> type(65536)
    U32
    ikc3> type(4294967296)
    U64
    ikc3> type(18446744073709551615)
    U64
    ```
    
    ## 1.14.2 Grands entiers
    
    IKC3 prend en charge les grands entiers, compatibles avec les petits
    entiers. Leur type est `Integer` et ils peuvent contenir des valeurs
    aussi grandes que la mémoire le permet. Ils sont plus lents car alloués
    dynamiquement sur le tas (`malloc`).
    
    ```elixir
    ikc3> type(1000000000000000000000000000000)
    Integer
    ```
    
    ## 1.14.3 Opérations sur les entiers
    
    ### 1.14.3.1 Opérateur `~`
    
    Négation binaire.
    
    ```elixir
    ikc3> ~ 1
    254
    ikc3> ~ -1
    0
    ikc3> ~ 0
    255
    ikc3> ~ 255
    0
    ikc3> ~ (U16) 1
    65534
    ikc3> ~ (S16) 1
    -2
    ```
    
    ### 1.14.3.2 Opérateur `+`
    
    Addition entière.
    
    Tous les entiers positifs peuvent être définis en termes d’addition de
    zéro ou
    d’un entier positif, et un. Par exemple :
    
    ```elixir
    1 = 0 + 1
    2 = 0 + 1 + 1
    3 = 0 + 1 + 1 + 1
    etc.
    ```
    
    ### 1.14.3.3 Opérateur `-`
    
    Soustraction entière. Retire un entier d’un autre entier.
    
    ### 1.14.3.4 Opérateur `*`
    
    Multiplication entière. Initialise le résultat à zéro, ajoute un entier
    `a` et répète cela `b` fois.
    
    ### 1.14.3.5 Opérateur `/`
    
    Division entière. Inverse de la multiplication : pour tous entiers `a`
    et `b`, il existe un couple `q` et `r` tel que `a = b * q + r`.
    La division retourne `q`.
    
    ### 1.14.3.6 Opérateur `mod`
    
    Modulo entier. Retourne `r` dans l’équation précédente (voir `/`).
    
    ### 1.14.3.7 Opérateur `<<`
    
    Décalage à gauche.
    
    ## 1.14.4 Exemples
    
    ```elixir
    ikc3> type(1)
    U8
    ikc3> type(1000000000000000000000000000000)
    Integer
    ikc3> a = 1 + 100000000000000000000000000000000
    100000000000000000000000000000001
    ikc3> a * a
    10000000000000000000000000000000200000000000000000000000000000001
    ikc3> a * a / 1000000000000000000000000000000000000000000000000000
    10000000000000
    ```
    
    ---
    
    Top : [Documentation KC3](../)
    
    Précédent : [1.13 Identifiant](1.13_Ident)
    
    Suivant : [1.15 Liste](1.15_List)