Csharp/Binære operasjoner
Binære operasjoner
redigerSom alle andre programmeringsspråk, benytter C# binærtall i bunn og grunn, fordi prosessoren gjør det. I noen tilfeller er man interessert i å jobbe på et binært nivå, og da bruker man binære operasjonene: Og, eller ekskluderende eller, og bitshift. Man regner bit fra høyere mot venstre, som med tall. Verdien av hvert byte er i samme rekkefølge.
<-Høyest Lavest-> 11111111 11111111 11111111 11111111 3 2 1 0
- & binær og
- | binær eller
- ^ binær ekskluderende eller
- >> binær shift høyere
- << binær shift venstre
og, eller og ekskluderende eller har stort sett samme resultat her, som i logisk, men her jobbes det på hvert bit, framfor hele tallet som helhet. bitshift flytter bitmønsteret i tallet med spesifisert antall. f.eks.
00000001 << 1 = 00000010 00000001 << 4 = 00010000
hvis bit forsvinner ut av tallet, kalles det overflow, men vil ikke gi noen feilmelding, og verdien av bittet er tapt.
binær og kan brukes for å teste om bit er satt, dette er spesielt nyttig sammen med enums, som DaysInWeek enumen som vi definerte tidligere. Man kan da si at man har flere verdier i én, og etterpå teste verdien. Man bruker Og for å legge til flere bit.
DaysInWeek days_at_mother;
days_at_mother = DaysInWeek.Monday | DaysInWeek.Wednsday | DaysInWeek.Sunday;
if( (days_at_mother & DaysInWeek.Thursday) == DaysInWeek.Thursday )
MessageBox.Show("I was at my mother thursday");
else
MessageBox.Show("I was at home thursday.");
Merk her at vi først henter ut alle bits i days_at_mother som også er i Thursday, og sjekker at de er like, hvis Thursday består av flere bit, men bare ett av dem er satt, ville vi fått true dersom vi hadde sjekket om det var større, derfor skal man alltid sjekke med "==".