Kokonaisluku , kokonaislukutietotyyppi ( englanniksi integer ) on yksi yksinkertaisimmista primitiivisistä tietotyypeistä . Se edustaa kokonaislukuja , joita rajoittavat minimi- ja enimmäisarvot riippuen numerolle varatusta muistista.
Yleensä useimmissa tehtävissä käytetään kokonaislukutyyppiä, jota kutsutaan myös natiiviksi int (tai yksinkertaisesti int ), jonka sanan leveys on yhtä suuri kuin sen prosessorin sanan pituus, jolla ohjelma suoritetaan (tai prosessorin toimintatilaa, jos se on osaa työskennellä eripituisten konesanojen kanssa) . Tarvittaessa voidaan käyttää sekä pienempiä (esim. tarvittaessa muistin säästämiseksi) että suurempia (käytettäessä pitkää aritmetiikkaa ) bittisyvyyden kokonaislukuja. Toinen mahdollinen syy käyttää ei-natiivipituisia kokonaislukuja on tietojen siirrettävyyden varmistaminen . Yleisimmät lajikkeet kokonaisuudesta:
Lisäksi, jos haluat säästää muistia, mutta negatiivisia lukuja ei tarvitse esittää, voidaan käyttää etumerkittömiä kokonaislukuja, jolloin voit kaksinkertaistaa suurimman mahdollisen arvon ja vielä yhdellä: esimerkiksi luku 0 - 65 535 voi esitetään etumerkittömänä lyhyenä kokonaislukuna . Joskus kirjallisuudessa [1] on suosituksia olla käyttämättä etumerkittömiä kokonaislukuja, koska tietokoneen prosessori ei välttämättä toteuta sitä . Myös tuki allekirjoittamattomille tyypeille puuttuu joistakin ohjelmointikielistä, kuten Java [2] .
Etumerkittömien kokonaislukujen käyttö on perusteltua kokonaislukujen ylivuotoa käyttävissä algoritmeissa - tosiasia on, että optimoivat kääntäjät voivat muuttaa toimintojen järjestystä ja suorittaa algebrallisia muunnoksia, minkä seurauksena ylivuoto optimoidussa algoritmissa voi tapahtua eri hetkellä kuin ei-optimoitu tai ei ollenkaan, mikä johtaa määrittelemättömään käyttäytymiseen . Etumerkittömien kokonaislukujen osalta aritmeettiseen ylivuotoon vaikuttavat optimoinnit poistetaan käytöstä, joten ylivuodon toiminta on aina määritelty, mutta kääntäjän luomasta alkuperäisestä koodista tulee vähemmän optimaalinen.
Muistiin kokonaisluku tallennetaan tavuiksi (okteteiksi) jaettuna bittijonona . Tavujärjestys voi olla joko suora ( eng. big-endian ), merkittävimmästä bitistä vähiten merkitsevään tai käänteinen ( eng. little-endian ).
Myös kyltin esitys voi vaihdella eri arkkitehtuurien mukaan . Yleisin on ns. lisäkoodi , jossa negatiivinen luku esitetään vähentämällä 0:sta ylivuodolla, kun taas jos korkean tavun yläbitti on päällä, lukua pidetään negatiivisena. Harvemmin käytettyjä ovat käänteiskoodi (kun negatiivinen luku esitetään positiivisen bittikohtaisena käänteisenä), suora koodi (kun negatiivinen luku esitetään positiivisena numerona etumerkkibitin ollessa päällä) tai eksoottisempia. kuten kanta −2-lukujärjestelmä [3] .
Laskimet ja eräät varhaiset tietokoneet käyttivät myös kokonaislukujen BCD -esitystä . Tällainen koodi yksinkertaistaa näyttölaitetta ja tekee lukujen esittämisestä muistissa helpommin luettavaa, mutta monimutkaistaa aritmeettis-loogista laitetta ja vaatii enemmän muistia samojen lukujen esittämiseen.
Aritmeettiset operaatiot soveltuvat ensisijaisesti kokonaislukuarvoille. Alla on yleisimmin käytetyt (niiden nimet eri ohjelmointikielillä ja vastaavat työkalut on merkitty suluissa).
Joissakin ohjelmointikielissä on lyhyyden vuoksi operaattoreita, joiden avulla voit suorittaa aritmeettisen toiminnon tehtävän kanssa. Esimerkiksi " +=" lisää vasemmalla olevan muuttujan nykyisen arvon oikealla olevan lausekkeen kanssa ja sijoittaa tuloksen alkuperäiseen muuttujaan. Joissakin kielissä ja ympäristöissä on myös saatavilla yhdistetty operaatio MulDiv , joka kertoo yhdellä numerolla ja jakaa tuloksen toisella.
Yleensä nopeuden kannalta kalleimmat operaatiot ovat kerto- ja jakooperaatiot (jaon loppuosan saaminen).
Tietokoneen muistissa on yleensä varattu kiinteän kokoisia soluja kokonaislukujen tallentamiseen. Tästä johtuen lisäys- ja vähennystoiminnot voivat johtaa ylivuotoon, mikä johtaa vääristyneeseen tulokseen. Jotkut ohjelmointikielet mahdollistavat poikkeuksen tekemisen tällaisissa tapauksissa. Lisäksi voit määrittää ylivuotokäyttäytymisen:
Matemaattisten operaatioiden lisäksi kokonaislukuihin voidaan soveltaa bittioperaatioita , jotka perustuvat paikannusbinäärikoodauksen ominaisuuksiin. Yleensä ne suoritetaan paljon nopeammin kuin aritmeettiset operaatiot ja siksi niitä käytetään optimaalisempina analogeina.
Melko yleisiä operaatioita ovat merkkijonon saaminen numeerisesta arvosta sisäisessä esityksessä ja päinvastoin - numero merkkijonosta. Merkkijonoksi muunnettaessa muotoilutyökalut ovat yleensä käytettävissä käyttäjän kielen mukaan.
Alla on lueteltu joitakin numeroiden merkkijonoja.
Kokonaisluvut sisältävät myös numeroidun tyypin. . Luetteloidut tyyppimuuttujat ottavat rajallisen ennalta määritetyn joukon arvoja. Joukon kokoa ei määritä tämän tyyppisten muuttujien kokonaislukuarvojen esittämiseen käytettyjen tavujen määrä.
Esimerkiksi Pythonissa boolean on kokonaisluvun alatyyppi ja käyttää nimiä False ja True, jotka kokonaisluvuksi heitettynä saavat arvot 0 ja 1, vastaavasti [4] .
Tietotyypit | |
---|---|
Käsittämätön | |
Numeerinen | |
Teksti | |
Viite | |
Komposiitti | |
abstrakti | |
muu | |
liittyvät aiheet |