Bittioperaatio (engl. bitwise operation) on ohjelmointikielissä bittioperaattoreilla tehtäviä toimintoja.[1]

Bittitason operaattorit ja niiden vastineet C-kielessä ovat:[1][2]

AND (&): jos molemmat bitit ovat 1, tulos on 1, muutoin 0:

    0101 
AND 0011
  = 0001

OR (|): jos jompikumpi bitti on 1, tulos on 1, muutoin 0:

    0101
 OR 0011
  = 0111

XOR (^): jos vain toinen bitti on 1, tulos on 1. Jos molemmat bitit ovat samat, tulos on 0:

    0101
XOR 0011
  = 0110

Komplementti eli NOT (~): vaihtaa kaikki ykköset nolliksi ja nollat ykköseksi:

NOT 0111
  = 1000

Siirto vasemmalle (<<): siirtää bittejä vasemmalle, täytetään nollalla vapautuvat:

 << 0110
  = 1100

Siirto oikealle (>>): siirtää bittejä oikealle, täyttö riippuu koneesta (yleensä riippuu etumerkistä):

 >> 0110
  = 0011

Bittioperaatiot eri alustoilla

muokkaa

Suorittimet sisältävät erilaisia käskyjä operaatioiden suorittamiseen. Esimerkiksi looginen ja aritmeettinen siirto oikealle (LSR ja ASR) ovat eri tavoin toimivia käskyjä ARM-suorittimissa.[3]

Taulukossa on eräiden ohjelmointikielten ja suorittimien bittioperaattorit.

Operaatio C[1] QBasic[4] 6502[5] Z80[6] 8086[7]
AND & AND AND AND AND
OR | OR ORA OR OR
XOR ^ XOR EOR XOR XOR
NOT ~ NOT (ei ole) CPL NOT
siirto vasemmalle << (ei ole) ASL, ROL SLA, RL, RLC SHL, SAL, ROL, RCL
siirto oikealle >> (ei ole) LSR, ROR SRL, SRA, RR, RRC SHR, SAR, ROR, RCR

Katso myös

muokkaa

Lähteet

muokkaa
  1. a b c Bitwise Operators cs.fsu.edu. Viitattu 16.2.2020. (englanniksi)
  2. Oualline, Steve: Practical C Programming, s. 158. (Third edition) O'Reilly, 1997. ISBN 1-56592-306-5 (englanniksi)
  3. Code in ARM Assembly: Bit operations eclecticlight.co. 16.7.2021. Viitattu 31.10.2022. (englanniksi)
  4. MS QuickBASIC 4.5 Language Reference (englanniksi)
  5. NMOS 6502 Opcodes (englanniksi)
  6. Z80 CPU Microprocessor Instant Reference Card (englanniksi)
  7. Intel ASM86 Language Reference Manual, sivu 6-10 (englanniksi)
  NODES