...
Bitit
...
ovat
...
yksinkertaisempia
...
tavallisten
...
tietokoneiden
...
käyttämiä
...
tietoyksiköitä.
...
Kaikki
...
ohjelmissa
...
käytettävät
...
muuttujat
...
koostuvat
...
eri
...
pituisista
...
bittijonoista
...
kuten
...
tavuista,
...
jotka
...
ovat
...
kahdeksan
...
bitin
...
kokoisia.
...
Biteille
...
tehtävät
...
operaatiot
...
ovat
...
bittioperaatioita.
Pythonissa bittioperaatioita voi tehdä vain kokonaisluvuille. Tietokone käsittelee kokonaislukuja binäärilukuina, joiden jokaista numeroa vastaa yksi bitti. Seuraavissa esimerkeissä käytetäänkin bin funktiota tämän havainnollistamiseen.
Loogisia perustoimintoja vastaavat bittioperaatioissa & (and), | (or) ja ~ (not) operaattorit. Sen sijaan, että operaatio kohdistuisi tässä yksittäiseen totuusarvoon, se kohdistuu kaikkiin operandien bitteihin yksitellen. Näiden lisäksi on vielä ns. eksklusiivinen tai toiminto (xor), jonka operaattori on ^. Se palauttaa tosi vain kuin jompikumpi (mutta ei molemmat) operandien biteistä on 1.
Code Block |
---|
Pythonissa bittioperaatioita voi tehdä vain kokonaisluvuille. Tietokone käsittelee kokonaislukuja binäärilukuina, joiden jokaista numeroa vastaa yksi bitti. Seuraavissa esimerkeissä käytetäänkin bin funktiota tämän havainnollistamiseen. Loogisia perustoimintoja vastaavat bittioperaatioissa & (and), \| (or) ja ~ (not) operaattorit. Sen sijaan, että operaatio kohdistuisi tässä yksittäiseen totuusarvoon, se kohdistuu kaikkiin operandien bitteihin yksitellen. Näiden lisäksi on vielä ns. eksklusiivinen tai toiminto (xor), jonka operaattori on \^. Se palauttaa tosi vain kuin jompikumpi (mutta ei molemmat) operandien biteistä on 1. {code} >>> bin(0b1010 | 0b0100) '0b1110' >>> bin(0b1010 & 0b1100) '0b1000' >>> bin(~0b11001100) '-0b11001101' >>> bin(0b1010 ^ 0b0100) '0b1110' >>> {code} |
Operaattorin
...
~
...
tapauksessa
...
toiminta
...
ei
...
ole
...
niin
...
selvää
...
koska
...
miinusmerkki
...
sisältyy
...
myös
...
kokonaisluvun
...
bitteihin,
...
jonka
...
muuttuminen
...
hämärtää
...
binääri
...
esitystä
...
hieman.
...
Näiden lisäksi on vain siirto-operaattorit
...
<<
...
(vasemmalle)
...
ja
...
>>
...
(oikealle),
...
joiden
...
oikealle
...
puolelle
...
tulee
...
numeroarvo,
...
joka
...
kuvaa
...
montako
...
bittiä
...
siirto
...
on.
...
Nämä
...
siirtävät
...
bittien
...
arvoja
...
siihen
...
suuntaan
...
kuin
...
numerot
...
binääri
...
esityksessä
...
esitetään.
...
Oikealle
...
siirrettäessä
...
vähiten
...
merkitsevät
...
bitit
...
vain
...
hävitetään
...
ja
...
vasemmalle
...
siirrettäessä
...
vähiten
...
merkitsevien
...
bittien
...
arvoksi
...
tulee
...
nollia.
Code Block |
---|
} >>> bin(0b110011 << 3) '0b110011000' >>> bin(0b110011 >> 3) '0b110' >>> {code} |