Heippa.
Olin äsken kävelylenkillä ja mieleeni juolahti seuraava probleema. Kuvitellaan, että 8-bittiselle prosessorille syötetään kaksi binäärilukua ja ne lasketaan yhteen:
11111111 + 00000001
Mikä on lopputulos? Seuraako overflow?
Joo, seuraa jonkinlainen overflow. Prosessorista riippuen voisi tapahtua mm. seuraavaa:
Ainakin x86-prosessoreihin (ja luultavasti aika moniin muihinkin) pätee kohta a: tieto ylityksestä (tai vastaavasti 0, jos ylitystä ei tapahdu) tallennetaan jokaisen laskun jälkeen lippurekisterin (FLAGS) yhteen bittiin (CF, Carry Flag). Tätä tietoa voidaan suoraan käyttää ehdollisissa hyppykäskyissä (JC, Jump If Carry). Lisäksi x86 sisältää käskyn ADC eli Add With Carry, joka laskee yhteen kaksi lukua ja lisää päälle ylityslipun arvon; tällä tavalla voidaan tehokkaasti laskea yhteen pitempiäkin lukuja pala kerrallaan.
Riippuu prosessoriarkkitehtuurista. Luku voi esimerkiksi "pyörähtää" ympäri, jolloin tulokseksi tulee 00000000 ja CF-lippu (carry) asetetaan ykköseksi. Näin ainakin x86:ssa.
11111111 voi tarkoittaa myös -1 jolloin 1+(-1) onkin aika luontevasti 0.
Aihe on jo aika vanha, joten et voi enää vastata siihen.