I denne opplæringen vil vi lære i detalj om bitvise og bitskiftoperatører i C #. C # gir 4 bitvise og 2 bit skiftoperatører.
Bitvise og bitskiftoperatører brukes til å utføre bitnivåoperasjoner på heltall (int, long, etc) og boolske data. Disse operatørene brukes ikke ofte i virkelige situasjoner.
Hvis du er interessert i å utforske mer, kan du gå til praktiske anvendelser av bitvis operasjoner.
De bitvise og bitskiftoperatørene som er tilgjengelige i C #, er oppført nedenfor.
Liste over C # bitvise operatører| Operatør | Operatørens navn |
|---|---|
| ~ | Bitvis komplement |
| & | Bitvis OG |
| | | Bitvis ELLER |
| ^ | Bitwise Exclusive OR (XOR) |
| << | Bitvis venstre skift |
| >> | Bitvis høyre skift |
Bitvis ELLER
Bitvis ELLER operatør er representert av |. Den utfører bitvis ELLER operasjon på de tilsvarende bitene i to operander. Hvis noen av bitene er 1, blir resultatet 1. Ellers blir resultatet 0.
Hvis operandene er av type bool, tilsvarer bitvis ELLER-operasjon logisk ELLER-operasjon mellom dem.
For eksempel,
14 = 00001110 (i binær) 11 = 00001011 (i binær)
Bitvis ORdrift mellom 14 og 11:
00001110 00001011 -------- 00001111 = 15 (i desimal)
Eksempel 1: Bitvis ELLER
using System; namespace Operator ( class BitWiseOR ( public static void Main(string() args) ( int firstNumber = 14, secondNumber = 11, result; result = firstNumber | secondNumber; Console.WriteLine("(0) | (1) = (2)", firstNumber, secondNumber, result); ) ) )
Når vi kjører programmet, vil utdataene være:
14 | 11 = 15
Bitvis OG
Bitvis OG operatør er representert av &. Den utfører bitvis OG operasjon på de tilsvarende bitene i to operander. Hvis noen av bitene er 0, blir resultatet 0. Ellers blir resultatet 1.
Hvis operandene er av type bool, tilsvarer bitvis AND-operasjon logisk OG-operasjon mellom dem.
For eksempel,
14 = 00001110 (i binær) 11 = 00001011 (i binær)
Bitvis OG drift mellom 14 og 11:
00001110 00001011 -------- 00001010 = 10 (i desimal)
Eksempel 2: Bitvis OG
using System; namespace Operator ( class BitWiseAND ( public static void Main(string() args) ( int firstNumber = 14, secondNumber = 11, result; result = firstNumber & secondNumber; Console.WriteLine("(0) & (1) = (2)", firstNumber, secondNumber, result); ) ) )
Når vi kjører programmet, vil utdataene være:
14 & 11 = 10
Bitvis XOR
Bitvis XOR-operatør er representert med ^. Den utfører bitvis XOR-operasjon på de tilsvarende bitene i to operander. Hvis de tilsvarende bitene er like , blir resultatet 0. Hvis de tilsvarende bitene er forskjellige , blir resultatet 1.
Hvis operandene er av type bool, tilsvarer bitvis XOR-operasjon logisk XOR-operasjon mellom dem.
For eksempel,
14 = 00001110 (i binær) 11 = 00001011 (i binær)
Bitvis XOR-drift mellom 14 og 11:
00001110 00001011 -------- 00000101 = 5 (i desimal)
Hvis du vil ha mer informasjon om bruken av Bitwise XOR, kan du gå til The Magic of XOR
Eksempel 3: Bitvis XOR
using System; namespace Operator ( class BitWiseXOR ( public static void Main(string() args) ( int firstNumber = 14, secondNumber = 11, result; result = firstNumber^secondNumber; Console.WriteLine("(0) (1) = (2)", firstNumber, secondNumber, result); ) ) )
Når vi kjører programmet, vil utdataene være:
14 11 = 5
Bitvis komplement
Bitwise komplement operatør er representert av ~. Det er en unarisk operatør, dvs. opererer på bare en operand. Den ~operatør inverterer hver bit vil si at endringer 1 til 0 og 0 eller 1.
For eksempel,
26 = 00011010 (i binær)
Bitvis komplementoperasjon 26:
~ 00011010 = 11100101 = 229 (i desimal)
Eksempel 4: Bitvis komplement
using System; namespace Operator ( class BitWiseComplement ( public static void Main(string() args) ( int number = 26, result; result = ~number; Console.WriteLine("~(0) = (1)", number, result); ) ) )
Når vi kjører programmet, vil utdataene være:
~ 26 = -27
Vi fikk - 27som produksjon da vi forventet 229. Hvorfor skjedde dette?
Det skjer fordi den binære verdien 11100101som vi forventer å være 229, faktisk er et 2-komplement representasjon av -27. Negative tall i datamaskinen er representert i 2s komplementrepresentasjon.
For ethvert heltall n vil 2s komplement av nvære -(n+1).
| Desimal | Binær | 2's komplement |
|---|---|---|
| 0 | 00000000 | - (11111111 + 1) = -00000000 = -0 (i desimal) |
| 1 | 00000001 | - (11111110 + 1) = -11111111 = -256 (i desimal) |
| 229 | 11100101 | - (00011010 + 1) = -00011011 = -27 |
Overløpsverdier ignoreres i komplement fra 2.
Bitvis komplement av 26er 229 (i desimal) og 2 komplement av 229er -27. Derfor er produksjonen i -27stedet for 229.
Bitvis venstre skift
Bitvis venstre skiftoperatør er representert med <<. Den <<operatør forskyver et nummer til venstre med et gitt antall bit. Nuller legges til de minst viktige bitene.
I desimal tilsvarer det
antall * 2biter
For eksempel,
42 = 101010 (i binær)
Bitvis løfteskiftoperasjon på 42:
42 << 1 = 84 (I binær 1010100) 42 << 2 = 168 (I binær 10101000) 42 << 4 = 672 (I binær 1010100000)
Eksempel 5: Bitvis venstre skift
using System; namespace Operator ( class LeftShift ( public static void Main(string() args) ( int number = 42; Console.WriteLine("(0)<<1 = (1)", number, number<<1); Console.WriteLine("(0)<<2 = (1)", number, number<<2); Console.WriteLine("(0)<<4 = (1)", number, number<<4); ) ) )
Når vi kjører programmet, vil utdataene være:
42 << 1 = 84 42 << 2 = 168 42 << 4 = 672
Bitvis høyre skift
Bitvis venstre skiftoperatør er representert med >>. Den >>operatør forskyver et nummer til høyre ved et gitt antall bit. Den første operanden forskyves til høyre av antall bits spesifisert av andre operand.
I desimal tilsvarer det
etasje (antall / 2biter)
For eksempel,
42 = 101010 (i binær)
Bitvis løfteskiftoperasjon på 42:
42 >> 1 = 21 (I binær 010101) 42 >> 2 = 10 (I binær 001010) 42 >> 4 = 2 (I binær 000010)
Eksempel 6: Bitvis høyre skift
using System; namespace Operator ( class LeftShift ( public static void Main(string() args) ( int number = 42; Console.WriteLine("(0)>>1 = (1)", number, number>>1); Console.WriteLine("(0)>>2 = (1)", number, number>>2); Console.WriteLine("(0)>>4 = (1)", number, number>>4); ) ) )
Når vi kjører programmet, vil utdataene være:
42 >> 1 = 21 42 >> 2 = 10 42 >> 4 = 2








