Hvordan bruke bitvis operasjoner i Low-Level Programming

I tillegg til de kjente aritmetiske operasjoner +, -, * og /, programmeringsspråk støtter også bitvis operasjoner. Gjennom disse lavt nivå operasjoner, kan en programmerer tilgang til enkelte bitene i et binært mønster uavhengig av datatype. Bitvis operasjoner implementere logiske aritmetiske og bits skift og kan gi mye bedre virkningsgrad enn høyt nivå operasjoner.

Bruksanvisning

1 Plasser IKKE operatør foran en binær verdi å utføre en bitvis IKKE. Denne såkalte enerkomplementet operasjon reverserer hver bit verdi. I programmeringsspråket C, bruk ~ symbolet for å indikere en NOT-operasjon. For eksempel, dersom X er 0101, da er X ~ 1010.

2 Utføre aritmetiske logiske på binære verdier med samme lengde. Data utføre logiske operasjoner på hvert par av biter som går fra høyre mot venstre. I C, symbolene og, | og ^ indikerer bitvis AND, OR og XOR operasjoner, henholdsvis.

3 Skift litt mønster til venstre eller høyre, forkaster biter som du skifte ut begge ender, for å gjennomføre optimalisert multiplikasjon (venstre shift) eller divisjon (høyre shift) av krefter to. C-språk bruker << og >> operatører for venstre og høyre litt skiftende.

4 Bestemme verdien av en bestemt bit i et binært tall (et lese-flagg operasjon) ved å utføre en OG-operasjon. Opprette en ny binært tall (T, for eksempel) av samme lengde som det antall man ønsker å undersøke (K, for eksempel). Sett alle biter i T til null, med unntak av litt N, hvor bit N i K er den biten som du tester. Etter å ha utført T og K, vil resultatet bli null hvis litt N i K er null, eller det vil være ikke-null hvis bit N i K er en.

5 Sett en bestemt bit i en binær verdi til en (en skrive-flagg operasjon). Man kan utføre denne operasjon på en lignende måte som i trinn 4. Hvis man ønsker å sette bit N K til en, og deretter sette bit N in T til ett og alle andre biter i T til null. Utføre operasjonen T OR K. Det resulterende nummer er identisk med T, med unntak av at bet N av T er en (uavhengig av om det var tidligere en eller null).

Hint

  • Ikke forveksle bitvis operasjoner AND, OR og XOR med sine boolske kolleger. For eksempel bruker C & for en bitvis AND og && for en boolsk AND.