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.

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).

ikc3> type(1000000000000000000000000000000)
Integer

1.14.3 Opérations sur les entiers

1.14.3.1 Opérateur ~

Négation binaire.

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 :

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

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