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