Bittien käsittely

Bittioperaatiot esimerkkejä

MuunnoksetBinToDes

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=0x40

3. esimerkki a=0 = 0000 0000, operaatio a = a>>1 ; nyt a= 0000 0000 ; lopputulos a = 0