wikiC/2.06
Main page
Alphabetic index
Recent Edits

bitwise and

login 38.107.179.242

In programmeertalen als C, C++, Java en JavaScript bestaat er een verschil tussen de logic and (de dubbele && die je bij if-statements gebruikt) en de bitwise and (een enkele &).
De bitwise and voert een bitsgewijze en-operatie uit. Alleen de binaire eenen die twee (of meer) getallen gemeenschappelijk hebben blijven over in het eindresultaat. Bijvoorbeeld 2 getallen in een 4 bits omgeving:
    int a = 1&2;
    1 is binair: 0001
    2 is binair: 0010
    ----------------- &
      resultaat: 0000 = 0 decimaal
En:
    int b = 6&3;
    6 is binair: 0110
    3 is binair: 0011
    ----------------- &
      resultaat: 0010 = 2 decimaal

Bekijk dus de bits --bit voor bit-- in verticale richting.

In sommige gevallen kun je bitwise and gebruiken als vervanging van modulo. bitwise and is (op meeste CPU's) sneller en dus je code sneller (maar op een DSP-processor kan een deling weleens net zolang duren als een binary and).
Andere term voor hetzelfde: bit mask.
Wordt onder andere (in digitale signaalbewerking) toegepast om snelle circulaire buffers op huis-tuin-en-keuken-CPU's te bewerkstelligen.
Beeldbewerking: sprites en layers.

Een laatste C++-voorbeeld:
   int getal = 13;
   if (getal & 1)  // Negeer alle bits behalve het LSBit.
       cout << getal << " is ONEVEN.";
   else
       cout << getal << " is EVEN.";

Als je er snel even mee wil spelen, zie: /~toine/BitLogicOp.html

History of this page