Signaalinkäsittelytekniikan laboratorio
Digitaali- ja tietokonetekniikan perusteet

Luennot
Sivukartta
Sanasto

Binäärijärjestelmän komplemeteista

2-komplementti
Olkoon positiivinen B kokonaisluku, jonka suuruusosan esityspituus on n bittiä. B:n 2:n komplementti on silloin
C2,n(B) = 2n - B
Käytännössä helppona nyrkkisääntönä voidaan muistaa seuraavaa: Jos luku on positiivinen, se tulkitaan normalisti. Jos luku on negatiivinen, tulkitaan luvun eniten merkitsevä bitti merkkibitti) aivan kuin se olisi tavallinen kerroin, mutta negatiivisena. Tämän jälkeen tulkitaan muut kertoimet positiivisina.

Esimerkki
Luku 1001102 (luku on siis 2-komplementtimuodossa, merkkibitti on 1 eli luku on negatiivinen) tulkitaan seuraavasti: 1001102 = -1 × 25 + 22 + 2 = -2610

1-komplementti
Olkoon positiivinen B kokonaisluku, jonka suuruusosan esityspituus on n bittiä. B:n 1:n komplementti on silloin
C1,n (B) = 2n - 1 - B
1-komplementin muuntaminen desimaalimuotoon kannattaa tehdä s.e. muunnetaan luku ensin 2-komplementtiin. Komplementtien välillä vallitsee yhteys:
C2,n(B) = C1,n(B) + 1

Binääriluvun komplementin muodostaminen
1-komplementti on helppo muodostaa:
Kaavaa ( C1,n (B) = 2n - 1 - B ) tulkittaessa huomataan, että 1-komplementin luvusta saa suoraan kääntämällä kaikki bitit nurin (eli ykkösestä tulee nolla, nollasta ykkönen). Jos luku on lyhyempi kuin käytetty bittien määrä, lisätään alkuun lisää nollia ja käännetään ne muunnoksessa ykkösiksi.

Esimerkki
Suuruusosan esityspituus 7 bittiä, luku B=11001 (=2510)
  • Lisätään tarvittavat nollat: B=0011001
  • Kännetään bitit: C1,7(B) = 1100110, mikä on haluttu tulos
(Tuloksen voi tarkistaa muuntamalla sen edelleen 2-komplementiksi ja sitä kautta kymmenjärjestelmään:
2-komplementiksi eli lisätään 1: C2,7(B)=1100111=- 26 + 25 + 22 + 21 + 20 = -2510)

2-komplementti muodostetaan joko 1-komplementin kautta lisäämällä siihen 1 (kuten edellisen esimerkin tarkistusosassa) tai suoraan seuraavalla algoritmillä:

  • aloitetaan vähiten merkitsevästä bitistä
  • jos bitti on 0 sitä ei muuteta, vaan siirrytään seuraavaan
  • ensimmäinen vastaantuleva 1-bitti säilytetään ennallaan
  • loput bitit käännetään (kaikki)

Esimerkki
Suuruusosan esityspituus 7 bittiä, luku B=10100= 0010100 ( = 10 10 ) C2,7(B)=1101100 ( = -10 10 )

Lisätietoja:


Tämän sivun sisällöstä vastaa aura@wooster.hut.fi
URL: http://wooster.hut.fi/digis/luento2/komplementti
Sivua on viimeksi päivitetty 20.7.2000.