Hash :
1801295b
Author :
Thomas de Grivel
Date :
2025-05-19T13:47:55
translate and reword a bit using ChatGPT
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.
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
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).
ikc3> type(1000000000000000000000000000000)
Integer
~Négation binaire.
ikc3> ~ 1
254
ikc3> ~ -1
0
ikc3> ~ 0
255
ikc3> ~ 255
0
ikc3> ~ (U16) 1
65534
ikc3> ~ (S16) 1
-2
+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 :
1 = 0 + 1
2 = 0 + 1 + 1
3 = 0 + 1 + 1 + 1
etc.
-Soustraction entière. Retire un entier d’un autre entier.
*
Multiplication entière. Initialise le résultat à zéro, ajoute un entier
a et répète cela b fois.
/
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.
mod
Modulo entier. Retourne r dans l’équation précédente (voir /).
<<Décalage à gauche.
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
Suivant : 1.15 Liste
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134
# 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)