Za pocetak pogledaj sta kaze Wiki
http://en.wikipedia.org/wiki/Bitwise_operation
... gde se na samom pocetku teksta pominje brzina izvrsavanja.
Operacije sa bitovima su utemeljene poodavno u masinskim jezicima, a C je samo sintaksno omogucio da se isto to koristi u samom jeziku sto kompajliranjem proizvodi ekvivalenciju kao direktno programiranje na asembleru. Mnogi C programi su prepuni operacija sa bitovima i u najmanju ruku pametno je prouciti barem na osnovnom nivou o cemu se radi. Ako ni zbog cega drugog, barem radi razumevanja postojeceg koda.
Postoji i
TOP tema bas u ovom forumu, gde su navedeni neki primeri upotrebe bitwise operatora.
Ipak, operacije sa bitovima se u realnom programiranju uglavnom koriste za sastavljanje i rastavljanje 'atributa' za neku operaciju. U donjem primeru vidi se kako se montiraju atributiti za pretragu fajlova:
Code:
// Primer iz BCB Helpa:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
TSearchRec sr;
int iAttributes = 0;
StringGrid1->RowCount = 1;
iAttributes |= faReadOnly * CheckBox1->Checked;
iAttributes |= faHidden * CheckBox2->Checked;
iAttributes |= faSysFile * CheckBox3->Checked;
iAttributes |= faVolumeID * CheckBox4->Checked;
iAttributes |= faDirectory * CheckBox5->Checked;
iAttributes |= faArchive * CheckBox6->Checked;
iAttributes |= faAnyFile * CheckBox7->Checked;
StringGrid1->RowCount = 0;
if (FindFirst(Edit1->Text, iAttributes, sr) == 0)
{
do
{
if ((sr.Attr & iAttributes) == sr.Attr)
{
StringGrid1->RowCount = StringGrid1->RowCount + 1;
StringGrid1->Cells[1][StringGrid1->RowCount-1] = sr.Name;
StringGrid1->Cells[2][StringGrid1->RowCount-1] = IntToStr(sr.Size);
}
} while (FindNext(sr) == 0);
FindClose(sr);
}
}