Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Migrated to Confluence 4.0

Etumerkittömät kokonaisluvut

Bittijono voidaan ymmärtää positiiviseksi kokonaisluvuksi:

    kahdeksan bitin tavu voi tällöin sisältää arvot 0 - 255 = 00000000b...11111111b = 0377 = 0xff.
    
    16-bittinen luku voi sisältää arvot 0 - 65 535 = 00000000 00000000b ... 11111111 11111111b =
                                                   = 0 ... 0177777 = 0 ... 0xffff.
    
    32-bittinen luku voi sisältää arvot 0 - 4 294 967 295 = 0.... 037777777777 = 0... 0xffffffff

Mutta yleensä tarvitsemme myös negatiivisia lukuja, jolloin tarvitsemme kahden komplementtiesitystä

    kahdeksan bitin tavu voi tällöin sisältää arvot -128 - 0 -  127= 10000000 ... 00000000 ... 01111111 =

     -0200 ... 0 ... 0177 = -0x80 ... 0 ... 0x7f

    16-bittinen luku voi sisältää arvot 32768 ... 0 ... 32767 .

    32-bittiseen kaksoissanaan mahtuu luku -2147483648 ... 0 ...2147483647 =

    020000000000 ...0...017777777777 = 0x80000000...0... 0x7fffffff

HUOM! jos luvun ensimmäinen numero on nolla (0) , ymmärretään se C-ohjelmassa oktaaliluvuksi ja jos luvun kaksi ensimmäistä merkkiä ovat 0x, ymmärretään luku heksadesimaaliluvuksi. Binäärilukua ei voi suoraan kirjoittaa muuttujan arvoksi, vaan se pitää esittää joko oktaali- tai heksalukuna.

C-ohjelmassa lukuarvot talletetaan aina muuttujiin. Muuttuja on aina tietyn kokoinen esim. char tyypin muuttuja sisältää kahdeksan bittiä. int on 16, 32 tai 64 bittiä riippuen järjestelmän käyttämästä sanan pituudesta. Pienessä sulautetussa järjestelmässä int on yleensä 16 bittiä.

Binäärimuodossa olevan kahden komplementtiluvun etumerkki voidaan vaihtaa kääntämällä (komplementoimalla) luvun kaikki bitit ja lisäämällä saatuun arvoon yksi.

Kannattaa muistaa, että C-kielessä lisättäessä muuttujan arvoon yksi, kun muuttujalla on jo suurin mahdollinen arvo, päädytään lukualueen toiseen äärimmäiseen päähän eli yhden lisäys lukuun saattaa aiheuttaa siirtymisen muuttujan arvossa maksimista minimiin.