You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 2 Next »

Perusoperaattorit

Suurin osa kaikista matemaattisista toiminnoista on ohjelmakirjastoissa. C-kieleen kuuluvat kuitenkin aritmeettiset perusoperaattorit, jotka ovat seuraavat:
   - vähennyslasku esim. x = a-3,
   - unaari vähennys x-=3 (x:stä otetaan pois 3)
   + yhteenlasku, esim x=b+2
   + unaari summaus x+=5 (X:ään lisätään 5)
   * kertolasku
   / jakolasku
   % jakolaskun jakojäännös
   - dekrementointi eli vähennys yhdellä, esim x- (x:stä pois 1)
   ++ inkrementointi eli lisäys yhdellä

Inkrementointi ja dekrementointi merkit voidaan laittaa muuttujan eteen tai sen jälkeen. Jos lisäys on for- tai while silmukan sisällä, tehdään ennen olevilla merkeillä testaus ennen silmukkaa ja ja jälkeen olevilla merkeillä silmukan suorituksen jälkeen. x=x+1; on sama kuin ++x;jax=x-1; on sama kuin x--;
+ ja - operaattoreita voidaan käyttää unaarioperaattoreina seuraavaan tapaan:

   Luku+=5; vastaa samaa kuin Luku=Luku+5;


Bittien käsittely

Yksi tärkeimmistä C-kielen ominaisuuksista on kyky käsitellä tavussa tai sanassa olevia bittejä yksitellen. C-kielen on suunniteltu ottavan assembly-kielen paikan useimmissa yhteyksissä ja siksi sillä on kyettävä tekemään myös hyvin koneläheistä ohjelmaa. Bitti-operaattoreilla testataan, asetetaan, siirretään bittejä tavuissa tai sanoissa, jotka ovat joko char- tai int-tyyppiä tai niiden variantteja:

  • & ja 
  • | tai
  • ^ ehdoton tai
  • >> siirto oikealle
  • << siirto vasemmalle

Bittioperaatiot kahdeksanbittisellä etumerkittömällä luvulla

TRUE true on muu kuin nolla, FALSE false  on nolla

Ja, And = & ,   Tai, Or =  | ,     Xor =   ^ ,  Negaatio = ~   ,    Shifting left,  Siirto vasemmalle  =  <<  ,    Shifting right,  Siirto oikealle =  >>

JA, AND, operaattori = &  ,  esimerkkejä 8 bittisilla luvuilla, b luvun perässä tarkoittaa sanaa binaari
1. esimerkki,  a = 255 & 15  =  1111 1111b & 0000 1111b  =  0000 1111b = 15  = 0xE  = 017
2. esimerkki   a = 255 & 1    =  1111 1111b & 0000 0001b  =  0000 0001b = 1    = 0x1   = 01
3. esimerkki   a = 2 & 1        =  0000 0010b & 0000 0001b  =  0000 0000b = 0    = 0x1   = 00
4. esimerkki   a = 3 & 1        =  0000 0011b & 0000 0001b  =  0000 0001b = 1
5. esimerkki   a = 3 & 2        =  0000 0011b & 0000 0010b  =  0000 0010b = 2

TAI , OR, operaattori |
1. esimerkki,  a = 0 | 1          =  0000 0000b | 0000 0001b  = 0000 0001b  = 1
2. esimerkki,  a = 2 | 1          =  0000 0010b | 0000 0001b  = 0000 0011b  = 3
3. esimerkki,  a = 4 | 8          =  0000 0100b | 0000 1000b  = 0000 1100b  = 12  =0 xC = 014
4. esimerkki,  a = 4 | 12        =  0000 0100b | 0000 1100b  = 0000 1100b  = 12

Ehdoton TAI , XOR, operaattori ^
1. esimerkki,  a = 0 ^ 1          =  0000 0000b ^ 0000 0001b  = 0000 0001b  = 1
2. esimerkki,  a = 1 ^ 1          =  0000 0001b ^ 0000 0001b  = 0000 0000b  = 0
3. esimerkki,  a = 2 ^ 1          =  0000 0010b ^ 0000 0001b  = 0000 0011b  = 3
4. esimerkki,  a = 3^ 1          =   0000 0011b ^ 0000 0001b  = 0000 0000b  = 2
5. esimerkki,  a = 4 ^ 8          =  0000 0100b ^ 0000 1000b  = 0000 1100b  = 12  =0 xC = 014
6. esimerkki,  a = 4 ^ 12        =  0000 0100b ^ 0000 1100b  = 0000 1000b  = 8

Negaatio, operaattori ~,  Negaatio-operaattori kääntää kaikki muuttujan bitit päinvastaiseksi 
1.esimerkki,  a = 0  = 0000 0000;  operaatio a = ~a; nyt a= 1111 1111; lopputulos a = 255 = 0xFF
2.esimerkki   a = 1  = 0000 0001;  operaatio a =~a; nyt a=  1111 1110; lopputulos a = 254 =  0xFE
3.esimerkki   a = 12= 0000 1100;  operaatio a = ~a; nyt a= 1111 0011; lopputulos a = 243 = 0xF3
4.esimerkki   a = 15= 0000 1111;  operaatio a = ~a; nyt a= 1111 0000; lopputulos a = 240 = 0xF0

Siirto vasemmalle  Shifting left, operaattori <<
1. esimerkki  a=1=     0000 0001,  operaatio a = a<<1 ; nyt a= 0000 0010 ; lopputulos a = 2
2. esimerkki  a=128= 1000 0000,  operaatio a = a<<1 ; nyt a= 0000 0000 ; lopputulos a = 0
3. esimerkki  a=0 =    0000 0000,  operaatio a = a<<1 ; nyt a= 0000 0000 ; lopputulos a = 0

Siirto oikealle,  Shifting right, operaattori >>
1. esimerkki  a=1=     0000 0001,  operaatio a = a>>1 ; nyt a= 0000 0000 ; lopputulos a = 0
2. esimerkki  a=128= 1000 0000,  operaatio a = a>>1 ; nyt a= 0100 0000 ; lopputulos a = 64=0x70
3. esimerkki  a=0 =    0000 0000,  operaatio a = a>>1 ; nyt a= 0000 0000 ; lopputulos a = 0


  • No labels
You must log in to comment.