Integer , celočíselný datový typ ( anglicky integer ) je jedním z nejjednodušších primitivních datových typů . Slouží k reprezentaci celých čísel omezených minimální a maximální hodnotou v závislosti na paměti přidělené číslu.
Zpravidla se pro většinu úloh používá celočíselný typ, nazývaný také nativní int (nebo jednoduše int ), se šířkou slova rovnou délce slova procesoru, na kterém se program spouští (nebo provozního režimu procesoru, pokud umí pracovat se strojovými slovy různých délek) . V případě potřeby lze použít celá čísla menší (například v případě potřeby pro úsporu paměti) i větší (při použití dlouhé aritmetiky ) bitové hloubky. Dalším možným důvodem pro použití nenativních celých čísel je zajištění přenositelnosti dat . Nejběžnější odrůdy celku:
Také, pokud potřebujete šetřit paměť, ale není potřeba reprezentovat záporná čísla, lze použít celá čísla bez znaménka, což vám umožní zdvojnásobit maximální možnou hodnotu a ještě o jednu: například číslo od 0 do 65 535 může být reprezentován jako krátké celé číslo bez znaménka . Někdy se v literatuře [1] objevují doporučení nepoužívat celá čísla bez znaménka, protože to nemusí být implementováno procesorem počítače . Také podpora nepodepsaných typů chybí v některých programovacích jazycích, jako je Java [2] .
Použití celých čísel bez znaménka má své opodstatnění v algoritmech, které používají přetečení celého čísla - faktem je, že optimalizační kompilátory mohou měnit pořadí operací a provádět algebraické transformace, v důsledku čehož může přetečení v optimalizovaném algoritmu nastat v jiném okamžiku než v ten neoptimalizovaný nebo vůbec ne, což vede k nedefinovanému chování . U celých čísel bez znaménka jsou optimalizace, které ovlivňují aritmetické přetečení, zakázány, takže chování při přetečení je vždy definováno, ale kompilátorem generovaný nativní kód se stává méně optimálním.
V paměti je celé číslo uloženo jako sekvence bitů rozdělených na bajty (oktety). Pořadí bajtů může být buď přímé ( eng. big-endian ), od nejvýznamnějšího bitu po nejméně významný, nebo obrácené ( eng. little-endian ).
Reprezentace znaku se také může lišit pro různé architektury . Nejběžnější je tzv. doplňkový kód , ve kterém je záporné číslo reprezentováno odečtením od 0 s přetečením, zatímco pokud je zapnutý horní bit vysokého bajtu, je číslo považováno za záporné. Méně běžně používané jsou reverzní kód (když je záporné číslo reprezentováno jako bitová inverze k kladnému), přímý kód (když je záporné číslo reprezentováno jako kladné číslo se zapnutým bitem znaménka) nebo exotičtější kódy. jako je základní −2 číselná soustava [3] .
Kalkulačky a některé časné počítače také používaly BCD reprezentaci celých čísel . Takový kód zjednodušuje zobrazovací zařízení a činí reprezentaci čísla v paměti čitelnější pro člověka, ale komplikuje aritmeticko-logické zařízení a vyžaduje více paměti k reprezentaci stejných čísel.
Aritmetické operace jsou primárně použitelné pro celočíselné hodnoty. Níže jsou uvedeny ty nejpoužívanější (jejich označení v různých programovacích jazycích a podobných nástrojích je uvedeno v závorkách).
V některých programovacích jazycích pro stručnost existují operátory, které umožňují provádět aritmetickou operaci s přiřazením. Například " +=" sčítá aktuální hodnotu proměnné vlevo s výrazem vpravo a umístí výsledek do původní proměnné. V některých jazycích a prostředích je také k dispozici kombinovaná operace MulDiv , která se vynásobí jedním číslem a pak se výsledek vydělí druhým.
Obvykle nejdražší operace z hlediska rychlosti jsou násobení a dělení (získání zbytku dělení).
V paměti počítače jsou buňky pevné velikosti obvykle přiděleny pro ukládání celých čísel. Z tohoto důvodu mohou operace zvýšení a snížení vést k přetečení, což má za následek zkreslený výsledek. Některé programovací jazyky umožňují v takových případech vyvolat výjimku. Kromě toho můžete definovat chování přetečení:
Kromě matematických jsou bitové operace použitelné pro celá čísla , které jsou založeny na vlastnostech pozičního binárního kódování. Obvykle se provádějí mnohem rychleji než aritmetické operace, a proto se používají jako optimálnější analogy.
Poměrně časté operace jsou získání řetězce z číselné hodnoty v interní reprezentaci a naopak - číslo z řetězce. Při převodu na řetězec jsou obvykle k dispozici formátovací nástroje v závislosti na jazyku uživatele.
Níže jsou uvedeny některé z řetězcových reprezentací čísel.
Celá čísla také zahrnují výčtový typ. . Proměnné výčtového typu mají konečnou předem definovanou sadu hodnot. Velikost sady není určena počtem bajtů použitých k reprezentaci celočíselných hodnot proměnných tohoto typu.
Například v Pythonu je boolean podtypem celého čísla a používá názvy False a True, které při přetypování na celé číslo získají hodnoty 0 a 1 [4] .
Typy dat | |
---|---|
Neinterpretovatelné | |
Numerický | |
Text | |
Odkaz | |
Kompozitní | |
abstraktní | |
jiný | |
související témata |