[ Aleksa Stankovic @ 28.04.2008. 19:04 ] @
Zanima me gde se primenljuju bitwise operatori(&, |, >>, <<,...), tj. koliko su zaista zastupljeni i vazni. Ustvari, najbolje pitanje bi bilo: Da li da se opterecujem njima ili bas i nema neke potrebe da ih ucim?

Moze neki primer koda gde su bitwise operatori neizbezni??
[ X Files @ 28.04.2008. 19:51 ] @
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);
  }
}

[ Aleksa Stankovic @ 28.04.2008. 19:59 ] @
Hm... Zanimljivo, u svakom slucaju. Naucicu ih, svakako... Inace i video sam TOP temu pa kad sam ukapiro da bitwise i nije tako prost resih da vidim kolko je potreban...

Hvala na pomoci...

[ obucina @ 30.04.2008. 19:28 ] @
Ako pogledas opise Windows API-ja u MSDN, videces da tamo vri od potrebe za bitwise oeratorima.