Priča o bitovima i njihovoj manipulaciji je prilično široka, ima puno aspekata (upravljanje grafikom, efikasna izračunavanja, kompaktno definsanje atributa, ...), pa pretpostavljam da se zato niko ne odlučuje da započne sa odgovorima. Tj, šta god se kaže, ostaće još puno toga nedorečenog.
Za početak je dobro znati da je "manipulacija bitovima" sastavni deo instrukcija mašinskih jezika (SHIFT LEFT, SHIFT RIGHT, XOR, ...), a u programske jezike je deo tih funkcionalnosti preuzet kroz operatore ili posebne funkcije. Drugim rečima, manipulacija bitovima nije specijalka viših programskih jezika, već je biblija mašinskih jezika.
Na nivou mašinsih jezika, vodi se bespoštedna borba sa generisanjem koda koji ima što manje "ciklusa" u izvršenju, kako bi se recimo dobilo na brzini. Poznavanje instrukcija koje omogućavaju manipulaciju bitovima, strahovito pomaže ovom zadatku.
Nekakav pregled trikova koje možeš izvesti manipulacijom bitovima, u okviru jezika C/C++ imaš ovde:
http://www.elitesecurity.org/t247378-Bit-Twiddling-Hacks
Na nivou viših programskih jezika uglavnom razmišljaš o sasvim drugim stvarima - čitljivosti koda, prenosivosti koda i sl. Uglavom se ne baviš preterano optimizacijom, jer je ona već u pristojnoj meri ugrađena u bazične funkcije koje se interno koriste.
Mi matorci smo u svet bitova ušli iz "prakse ka teoriji", prvenstveno preko grafike. Na primer, zanimalo nas je kako su programeri uspeli da naprave impresivne grafičke animacije, glatke skrolove teksta i sl, na mašinama koje su imale samo 1MHz brzine. Radilo se o pravilnoj primeni operatora s bitovima.
Ako bi tu istu stvar pokušao da uradiš na konvencionalan način, dobio bi skrol koji se vuče kao mazga, i uz to odvratnim refresh efektima.