Kahden komplementti -laskuri
Valitse muunnoksen suunta ja bittileveys, syötä sitten luku. Tulos ja lisätiedot päivittyvät heti.
Muunna etumerkillinen kokonaisluku kahden komplementin binääriksi tai päinvastoin – valitse bittileveys, niin saat täydellisen esityksen.
Valitse muunnoksen suunta ja bittileveys, syötä sitten luku. Tulos ja lisätiedot päivittyvät heti.
Kahden komplementti -laskuri auttaa sinua muuntamaan etumerkillisen kokonaisluvun kahden komplementin binääriesitykseksi ja päinvastoin. Valitse bittileveys ja suunta, niin laskuri näyttää täydellisen esityksen sekä lisätiedot, kuten etumerkittömän arvon, heksamuodon ja sallitun arvoalueen. Laskuri sopii tietotekniikan opiskelijoille ja kaikille, jotka työskentelevät matalan tason ohjelmoinnin parissa.
Kahden komplementti on yleisin tapa esittää etumerkilliset kokonaisluvut binäärimuodossa. Siinä luvun ylin bitti toimii etumerkkibittinä: 0 tarkoittaa positiivista tai nollaa ja 1 negatiivista lukua. Menetelmän etu on, että yhteen- ja vähennyslasku toimivat samalla logiikalla riippumatta lukujen merkeistä.
Positiivinen luku kirjoitetaan tavallisena binäärinä valitulla bittileveydellä. Negatiivinen luku muunnetaan kolmessa vaiheessa:
−x = ~(x) + 1
Tässä ~ tarkoittaa bittien kääntämistä. Lopputulos on luvun −x kahden komplementin esitys.
Muunnetaan luku −5 kahden komplementiksi 8 bitillä.
−5 = 11111011₂ (8 bittiä)
Ylin bitti on 1, mikä kertoo, että luku on negatiivinen.
Kun kahden komplementin binääri muunnetaan takaisin desimaaliksi, tarkistetaan ensin etumerkkibitti. Jos se on 0, luku luetaan tavallisena binäärinä. Jos se on 1, luku on negatiivinen ja sen arvo saadaan kaavalla:
arvo = (etumerkitön arvo) − 2^n
jossa n on bittien määrä. Esimerkiksi 8-bittinen 11111011 on etumerkittömänä 251, ja 251 − 256 = −5.
n-bittisellä kahden komplementilla esitettävät luvut ovat välillä −2^(n−1) … 2^(n−1)−1:
Tämän alueen ulkopuolista lukua ei voi esittää kyseisellä bittimäärällä, ja laskuri ilmoittaa, jos luku ei mahdu.
Kahden komplementti on käytössä lähes kaikissa nykyaikaisissa prosessoreissa ja ohjelmointikielissä etumerkillisten kokonaislukujen tallennukseen. Sen ymmärtäminen on tärkeää muun muassa matalan tason ohjelmoinnissa, sulautetuissa järjestelmissä ja ylivuototilanteiden hahmottamisessa.