Egész (adattípus)

Az oldal jelenlegi verzióját még nem ellenőrizték tapasztalt közreműködők, és jelentősen eltérhet a 2022. március 26-án felülvizsgált verziótól ; az ellenőrzések 7 szerkesztést igényelnek .

Integer , integer adattípus ( angol  integer ) az egyik legegyszerűbb primitív adattípus . Egész számok megjelenítésére szolgál , amelyeket egy minimális és maximális érték korlátoz, a számhoz lefoglalt memóriától függően.

Fajták

Általános szabály, hogy a legtöbb feladathoz egy egész típust használnak, amelyet natív int -nek (vagy egyszerűen int -nek is neveznek ), amelynek szószélessége megegyezik annak a processzornak a szóhosszával, amelyen a program fut (vagy a processzor működési módjával, ha az tud dolgozni különböző hosszúságú gépszavakkal) . Ha szükséges, kisebb (például memóriatakarékosság) és nagyobb ( hosszú aritmetika esetén ) bitmélységű egész számok is használhatók. A nem natív hosszúságú egész számok használatának másik lehetséges oka az adatok hordozhatóságának biztosítása . Az egész leggyakoribb fajtái:

Továbbá, ha memóriát kell takarítani, de nincs szükség negatív számok ábrázolására, akkor előjel nélküli egész számok is használhatók, ami lehetővé teszi a maximális lehetséges érték megduplázását és még egyet: például egy 0 és 65 535 közötti szám előjel nélküli rövid egész számként kell ábrázolni . A szakirodalomban [1] néha ajánlások vannak arra, hogy ne használjunk előjel nélküli egész számokat, mivel előfordulhat, hogy a számítógép processzora nem valósítja meg . Emellett hiányzik az aláíratlan típusok támogatása egyes programozási nyelvekben, például a Java -ban [2] .

Az előjel nélküli egész számok használata indokolt az egész szám túlcsordulást használó algoritmusokban - az a helyzet, hogy az optimalizáló fordítók megváltoztathatják a műveletek sorrendjét és algebrai transzformációkat hajthatnak végre, aminek következtében az optimalizált algoritmusban a túlcsordulás más pillanatban következhet be, mint a nem optimalizált, vagy egyáltalán nem, ami meghatározatlan viselkedéshez vezet . Előjel nélküli egész számok esetén az aritmetikai túlcsordulást befolyásoló optimalizálás le van tiltva, így a túlcsordulási viselkedés mindig definiálva van, de a fordító által generált natív kód kevésbé lesz optimális.

Bemutató

A memóriában egy egész szám bájtokra (oktettekre) osztott bitek sorozataként kerül tárolásra. A bájtsorrend lehet közvetlen ( eng. big-endian ), a legjelentősebb bittől a legkevésbé jelentősig, vagy fordított ( eng. little-endian ).   

A jelábrázolás a különböző architektúrákon is eltérő lehet . A legelterjedtebb az úgynevezett kiegészítő kód , amelyben a negatív számot a 0-ból való kivonással ábrázolják túlcsordulás mellett, míg ha a magas bájt magas bitje be van kapcsolva, akkor a szám negatívnak minősül. Ritkábban használják a fordított kódot (amikor egy negatív számot egy pozitív bitenkénti inverzeként ábrázolunk), a közvetlen kódot (amikor egy negatív számot pozitív számként ábrázolunk az előjelbit bekapcsolásával), vagy az egzotikusabbakat. mint például az alap −2 számrendszer [3] .

A számológépek és néhány korai számítógép is használták az egész számok BCD - reprezentációját . Egy ilyen kód leegyszerűsíti a megjelenítő eszközt, és ember számára olvashatóbbá teszi a memóriában lévő számok ábrázolását, de bonyolítja az aritmetikai-logikai eszközt , és több memóriát igényel ugyanazon számok megjelenítéséhez.

Műveletek egész számokkal

Aritmetikai műveletek

Az aritmetikai műveletek elsősorban egész értékekre alkalmazhatók. Az alábbiakban a leggyakrabban használtakat mutatjuk be (zárójelben vannak feltüntetve a különféle programozási nyelveken és hasonló eszközökön található megnevezések).

Néhány programozási nyelvben a rövidség kedvéért vannak olyan operátorok, amelyek lehetővé teszik számtani művelet végrehajtását egy hozzárendeléssel. Például a " +=" hozzáadja a bal oldali változó aktuális értékét a jobb oldali kifejezéssel, és az eredményt az eredeti változóba helyezi. Ezenkívül bizonyos nyelveken és környezetekben elérhető a MulDiv kombinált művelet is , amely egy számmal szoroz, majd az eredményt elosztja a másodikkal.

Általában a sebesség szempontjából legdrágább műveletek a szorzás és az osztás (az osztás maradékának megszerzése).

A számítógép memóriájában általában rögzített méretű cellákat foglalnak le egész számok tárolására. Emiatt a növelési és csökkentési műveletek túlcsorduláshoz vezethetnek, ami torz eredményt eredményez. Néhány programozási nyelv lehetővé teszi, hogy ilyen esetekben kivételt tegyen. Ezenkívül meghatározhatja a túlcsordulási viselkedést:

Bitenkénti műveletek

A matematikai műveletek mellett egész számokra is alkalmazhatók a bitműveletek , amelyek a pozíciós bináris kódolás sajátosságain alapulnak. Általában sokkal gyorsabban hajtják végre, mint az aritmetikai műveleteket, ezért optimálisabb analógokként használják őket.

Stringekkel való munka

Elég gyakori műveletek a belső reprezentációban szereplő számértékből egy karakterláncot kapnak, és fordítva - egy számot egy karakterláncból. Karakterláncra konvertáláskor a formázási eszközök általában rendelkezésre állnak a felhasználó nyelvétől függően.

Az alábbiakban felsorolunk néhány karakterlánc-ábrázolást a számok közül.

Felsorolt ​​típus

Az egész számok közé tartozik egy felsorolt ​​típus is. . A felsorolt ​​típusú változók véges előre meghatározott értékkészletet vesznek fel. A halmaz méretét nem az ilyen típusú változók egész értékének megjelenítésére használt bájtok száma határozza meg.

Például a Pythonban a logikai érték az egész számok altípusa, és a False és True neveket használja, amelyek egész számra öntve 0 és 1 értéket kapnak [4] .

Jegyzetek

  1. Ben-Ari, 2000 , p. 54.
  2. Típusok, értékek és változók , Java nyelvi specifikáció, 2. kiadás.
  3. Hacker's Delight, 2004 , p. 215-221.
  4. Beazley, 2009 , pp. 38.

Irodalom