Komplementti (tietotekniikka)Tietotekniikassa komplementiksi kutsutaan yleistä negatiivisen kokonaisluvun esitysmuotoa. Yleisin eli luvusta muodostettu kahden komplementti tarkoittaa luvun vastaluvun muodostamista kääntämällä sen bitit ja lisäämällä tulokseen yksi. Komplementtina esitetyn luvun tietotyyppi on kokonaisluku. HistoriaEräät varhaiset tietokoneet kuten UNIVAC 1100 -sarja[1] ovat käyttäneet yhden komplementtia, mutta tämä on pääasiassa jäänyt pois käytöstä. Sen sijaan kahden komplementti on yleistynyt muun muassa IBM S/360:n[2] vaikutuksesta.[3] Etumerkin käyttöNegatiiviset luvut voidaan esittää binäärilaskennassa lisäämällä luvun esitysmuotoon yksi bitti, merkkibitti, jonka toinen arvo tarkoittaa positiivista lukua ja toinen arvo negatiivista lukua. Tällöin kuitenkin positiivisten ja negatiivisten lukujen yhteenlasku täytyy käsitellä erikoistapauksena ja muuttaa se esimerkiksi tarvittaessa vähennyslaskuksi. Esimerkiksi +3 + -3 täytyy muuttaa vähennyslaskuksi 3 - 3. Ei ole myöskään kovin yksinkertaista käsitellä negatiivisia tuloksia antavia laskutoimituksia. Yhden komplementtiYksinkertaisempaa on muuttaa negatiivisten lukujen bitit vastakkaisiksi (ykkönen nollaksi ja päinvastoin) eli luvun yhden komplementiksi. Tällöin yhteenlasku voidaan laskea samalla tavalla positiivisille ja negatiivisille luvuille. Esimerkiksi +3 + -3 on kolmen bitin yhden komplementtiluvuilla esitettynä: 011 +100 ---- 111 Esimerkistä huomaa erään yhden komplementin esitysmuodon ongelman: luvulla nolla on kaksi eri esitysmuotoa: 000 ja 111. Toinen ongelma on merkkibitin käsittely. Jos etumerkillisten lukujen yhteenlaskusta tulee ylimääräinen muistinumero, se pitää erikseen lisätä tulokseen. Esimerkiksi -1 + -2 = -3: 101 +110 ---- 1011 -> 1 + 011 = 100 Kahden komplementti
Yhden komplementtiin liittyvät ongelmat poistuvat, jos käytetään kahden komplementtia. Tällöin luvun vastaluku saadaan kääntämällä luvun bitit ja lisäämällä tulokseen yksi. Kahden komplementtijärjestelmässä luvulla nolla on yksikäsitteinen esitystapa (bittikuvio, jonka kaikki bitit ovat nollia) ja nollan vastaluku on nolla. Sama yhteenlaskuoperaatio toimii sekä etumerkillisten että etumerkittömien lukujen kanssa. Esimerkkinä +3 + -3 on kolmen bitin kahden komplementtiluvuilla esitettynä: 011 +101 ---- 1000 Kun kolmen bitin tilan ylittävä bitti (1) jätetään pois, tulos on 000 eli nolla. Kahden komplementtiluvuissa on aina yksi negatiivinen luku enemmän kuin on positiivisia lukuja (pois lukien luku 0). Esimerkiksi kolmella bitillä esitettävät luvut ovat: 011 3 010 2 001 1 000 0 111 -1 110 -2 101 -3 100 -4 Tyypillisiä lukualueita ovat
Käytännöllisesti katsoen kaikki nykyiset tietokoneet käyttävät kahden komplementtilukuja negatiivisten lukujen esittämiseen. Muutama varhain suunniteltu tietokone käytti yhden komplementtia, esimerkiksi PDP-1 ja Univac/1100. Katso myösLähteet
|