Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Migration of unmigrated content due to installation of a new plugin

Aritmeettiset operaattorit

Perusoperaattorit

Suurin osa kaikista matemaattisista toiminnoista on ohjelmakirjastoissa. C-kieleen kuuluvat kuitenkin aritmeettiset perusoperaattorit, jotka ovat seuraavat:
   - vähennyslasku esim.

merkki

operaatio

esimerkki

-

vähennyslasku

x = a-3

...

;

+

yhteenlasku

x = b+2

...

;

*

kertolasku

x = a*b;

/

jakolasku

x = a/2;

%

jakolaskun jakojäännös

x = a % 2; // testaa onko a jaollinen kahdella vai ei

Unaarioperaattorit

merkki

operaatio

esimerkki

-=

vähennyslasku ja sijoitus

a-=3;

+=

lisäyslasku ja sijoitus

a+=3;

*=

tulo ja sijoitus

a*=3;

/=

osamäärä ja sijoitus

a/=3;

%=

modulo ja sijoitus

a%=3; // poistaa a:sta kolmen moninkerrat

--

dekrementointi eli vähennys yhdellä

x--; tai --x; (x:stä pois 1)

...

++

inkrementointi eli lisäys yhdellä

x++; tai ++x; (x:sään lisää 1)

  • Inkrementointi- ja

...

  • dekrementointimerkit 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 jälkeen olevilla merkeillä silmukan suorituksen jälkeen.

...

Esimerkki unaarioperaattorien käytöstä

Seuraava sijoituslause

Code Block

Luku = Luku+5;

voidaan kirjoittaa muotoon:

Code Block

Luku += 5;

Operaatioiden sijoitus

Matemaattisia operaatioita voidaan sijoittaa kaikkiin paikkoihin mihin muuttujiakin.

Sijoituslauseessa

Code Block

int x, luku1, luku2; // Esitellään muuttujat x, luku1 ja luku2
x = luku1 * luku2;   // Sijoitetaan luku1 kertaa luku2 tulos muuttujaan x

Funktion parametrilistassa

Code Block

int luku1, luku2;
printf("%d + %d = %d\n", luku1, luku2, luku1+luku2);

Muuttujien alkuarvona

Code Block

int a = 3;
int b = 5;
int c = a*b; // Sijoitetaan tulon a * b tulos muuttujan c arvoksi

Matemaattiset apufunktiot

Suuri osa kaikista matemaattisista toiminnoista on ohjelmakirjastoissa, kuten esimerkiksi:

toiminto

funktio

esimerkki

neliöjuuri

sqrt()

float a = sqrt(x);

potenssi

pow()

int a = sqrt(x, 3);

sini

sin()

float a = sin(x);

kosini

cos()

float a = cos(x);

tangentti

tan()

float a = tan(x);

jne

kts math.h

Nämä löytyvät headerista math.h.

   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