Bittioperaatio
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 | muokkaa wikitekstiä]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 | muokkaa wikitekstiä]Lähteet
[muokkaa | muokkaa wikitekstiä]- ↑ a b c Bitwise Operators cs.fsu.edu. Viitattu 16.2.2020. (englanniksi)
- ↑ Oualline, Steve: Practical C Programming, s. 158. (Third edition) O'Reilly, 1997. ISBN 1-56592-306-5 (englanniksi)
- ↑ Code in ARM Assembly: Bit operations eclecticlight.co. 16.7.2021. Viitattu 31.10.2022. (englanniksi)
- ↑ MS QuickBASIC 4.5 Language Reference (englanniksi)
- ↑ NMOS 6502 Opcodes (englanniksi)
- ↑ Z80 CPU Microprocessor Instant Reference Card (englanniksi)
- ↑ Intel ASM86 Language Reference Manual, sivu 6-10 (englanniksi)