Kort oversikt over bitvise operatører
En operatør er et symbol som instruerer kompilatoren om å utføre visse matematiske eller logiske operasjoner. Det er flere typer operatører i C ++, for eksempel:
- Aritmetiske operatører
- Logiske operatører
- Relasjonsoperatører
- Oppdragsoperatører
- Bitvise operatører
- Diverse operatører
Alle Bitwise-operatørene jobber på det enkelte bitnivået. Bitvis operator kan bare brukes på datatypene for heltall og tegn. For eksempel, hvis du har en heltallstypevariabel med størrelsen 32 bits, og du bruker bitvis IKKE-operasjon, vil bitvis IKKE-operatør brukes for alle 32 bitene. Så til slutt vil alle de 32 bitene i variabelen bli omvendt.
Det er seks forskjellige bitvise operatører som er tilgjengelige i C ++:
- Bitvis ELLER [representert som “|”]
- Bitvis OG [representert som “&”]
- Bitvis IKKE [representert som “~”]
- Bitvis XOR [representert som “^”]
- Bitvis venstre skift [representert som “<<”]
- Bitvis høyre skift [representert som “>>”]
Bitvis ELLER Sannhetstabell
Bitvis OR-operatør produserer 1 når minst en operand er satt til 1. Her er sannhetstabellen for Bitwise OR-operatøren:
Bit-1 | Bit-2 | Bit-1 | Bit-2 |
---|---|---|
0 | 0 | 0 |
0 | 1 | 1 |
1 | 0 | 1 |
1 | 1 | 1 |
Bitvis og sannhetstabell
Bitvis OG-operatør produserer 1 når begge operandene er satt til 1. Her er sannhetstabellen for Bitwise AND-operatøren:
Bit-1 | Bit-2 | Bit-1 og Bit-2 |
---|---|---|
0 | 0 | 0 |
0 | 1 | 0 |
1 | 0 | 0 |
1 | 1 | 1 |
Bitvis IKKE sannhetstabell
Bitvis opererer IKKE operatøren. Her er sannhetstabellen for Bitwise IKKE-operatør:
Bit-1 | ~ Bit-1 |
---|---|
0 | 1 |
1 | 0 |
Bitwise XOR sannhetstabell
Bitvis XOR-operatør produserer 1 hvis, og bare hvis en av operandene er satt til 1. Her er sannhetstabellen for Bitwise AND operator:
Bit-1 | Bit-2 | Bit-1 ^ Bit-2 |
---|---|---|
0 | 0 | 0 |
0 | 1 | 1 |
1 | 0 | 1 |
1 | 1 | 0 |
Bitvis venstre skiftoperatør
Bitwise Left Shift-operatør skifter alle bitene igjen med det angitte antallet spesifiserte bits. Hvis du la forskyve alle bitene av dataene med 1, vil de originale dataene bli multiplisert med 2. Tilsvarende, hvis du la skifte alle bitene av dataene med 2, vil de opprinnelige dataene bli multiplisert med 4.
Bitvis høyre skiftoperatør
Bitwise Right Shift-operatør skifter alle bitene rett med det angitte antallet spesifiserte bits. Hvis du rett skifter alle bitene av dataene med 1, blir de opprinnelige dataene delt (heltallsdeling) med 2. Tilsvarende, hvis du høyre skifter alle bitene av dataene med 2, vil de opprinnelige dataene bli delt (heltallsdeling) med 4.
Eksempler
Nå, siden vi har forstått det grunnleggende konseptet med bitvise operasjoner, la oss se på et par eksempler, som vil hjelpe deg å forstå bitvise operasjoner i C ++:
- Eksempel 1: Bitvis ELLER operatør
- Eksempel 2: Bitvis OG operatør
- Eksempel 3: Bitvis IKKE operatør
- Eksempel 4: Bitvis XOR-operatør
- Eksempel 5: Bitvis venstre skiftoperatør
- Eksempel 6: Bitvis høyre skiftoperatør
- Eksempel 7: Sett bit
- Eksempel 8: Fjern bit
Eksempel 7 og 8 er for å demonstrere den virkelige bruken av bitvise operatører i programmeringsspråket C ++.
Eksempel 1: Bitvis ELLER operatør
I dette eksempelprogrammet vil vi demonstrere Bitwise OR-operatøren.
#inkludere#inkludere
#inkludere
bruker navneområde std;
// display () -funksjon
ugyldig visning (streng print_msg, int-nummer)
bitsett<16> myBitSet (nummer);
cout << print_msg;
cout << myBitSet.to_string() << " (" << myBitSet.to_ulong() << ") " << endl;
int main ()
int first_num = 7, second_num = 9, result = 0;
// Bitvis ELLER drift
resultat = første_nummer | second_num;
// skriv ut inngangstallene
cout << endl;
display ("First Number is =", first_num);
display ("Second Number is =", second_num);
// skriv ut verdien
display ("first_num | second_num =", result);
cout << endl;
retur 0;
Eksempel 2: Bitvis OG operatør
I dette eksempelprogrammet vil vi illustrere Bitwise AND operator.
#inkludere#inkludere
#inkludere
bruker navneområde std;
// display () -funksjon
ugyldig visning (streng print_msg, int-nummer)
bitsett<16> myBitSet (nummer);
cout << print_msg;
cout << myBitSet.to_string() << " (" << myBitSet.to_ulong() << ") " << endl;
int main ()
int first_num = 7, second_num = 9, result = 0;
// Bitvis OG drift
resultat = første nummer & andre nummer;
// skriv ut inngangstallene
cout << endl;
display ("First Number is =", first_num);
splay ("Second Number is =", second_num);
// skriv ut verdien
display ("first_num & second_num =", result);
cout << endl;
retur 0;
Eksempel 3: Bitvis IKKE operatør
I dette eksempelprogrammet vil vi forstå hvordan Bitwise NOT-operatør fungerer i C++.
#inkludere#inkludere
#inkludere
bruker navneområde std;
// display () -funksjon
ugyldig visning (streng print_msg, int-nummer)
bitsett<16> myBitSet (nummer);
cout << print_msg;
cout << myBitSet.to_string() << " (" << myBitSet.to_ulong() << ") " << endl;
int main ()
int first_num = 7, second_num = 9, result_1 = 0, result_2 = 0;
// Bitvis IKKE drift
resultat_1 = ~ første_nummer;
resultat_2 = ~ sekundnummer;
// skriv ut inngangstall og utgangsverdi
cout << endl;
display ("First Number is =", first_num);
display ("~ first_num =", result_1);
cout << endl;
// skriv ut inngangstall og utgangsverdi
display ("Second Number is =", second_num);
display ("~ second_num =", result_2);
cout << endl;
retur 0;
Eksempel 4: Bitvis XOR-operatør
Dette programmet har til hensikt å forklare hvordan Bitwise XOR-operatøren fungerer i C++.
#inkludere#inkludere
#inkludere
bruker navneområde std;
// display () -funksjon
ugyldig visning (streng print_msg, int-nummer)
bitsett<16> myBitSet (nummer);
cout << print_msg;
cout << myBitSet.to_string() << " (" << myBitSet.to_ulong() << ") " << endl;
int main ()
int first_num = 7, second_num = 9, result = 0;
// Bitvis XOR-operasjon
resultat = første_nummer ^ andre_nummer;
// skriv ut inngangstallene
cout << endl;
display ("First Number is =", first_num);
display ("Second Number is =", second_num);
// skriv ut verdien
display ("first_num ^ second_num =", result);
cout << endl;
retur 0;
Eksempel 5: Bitvis venstre skiftoperatør
Nå vil vi se eksemplet på Bitwise Left Shift-operatøren. I dette programmet har vi deklarert to tall, first_num og second_num of integer type. Her er "første_nummer" venstre-forskjøvet med en bit, og "andre_nummer" er venstre-forskjøvet med to bits.
#inkludere#inkludere
#inkludere
bruker navneområde std;
// display () -funksjon
ugyldig visning (streng print_msg, int-nummer)
bitsett<16> myBitSet (nummer);
cout << print_msg;
cout << myBitSet.to_string() << " (" << myBitSet.to_ulong() << ") " << endl;
int main ()
int first_num = 7, second_num = 9, result_1 = 0, result_2 = 0;
// Bitvis venstreskiftoperasjon
resultat_1 = første_nummer << 1;
resultat_2 = sekund_nummer << 2;
// skriv ut inngangstall og utgangsverdi
cout << endl;
display ("First Number is =", first_num);
display ("første_nummer << 1 = ", result_1);
cout << endl;
// skriv ut inngangstall og utgangsverdi
display ("Second Number is =", second_num);
display ("second_num << 2 = ", result_2);
cout << endl;
retur 0;
Eksempel 6: Bitvis høyre skiftoperatør
Nå vil vi se et annet eksempel for å forstå Bitwise Right Shift-operatøren. Vi har deklarert to tall, første nummer og andre nummer av heltallstype. Her er "first_num" høyre-skiftet med en bit, og "second_num" er høyre-shifted med to bits.
#inkludere#inkludere
#inkludere
bruker navneområde std;
// display () -funksjon
ugyldig visning (streng print_msg, int-nummer)
bitsett<16> myBitSet (nummer);
cout << print_msg;
cout << myBitSet.to_string() << " (" << myBitSet.to_ulong() << ") " << endl;
int main ()
int first_num = 7, second_num = 9, result_1 = 0, result_2 = 0;
// Bitvis Right Shift-operasjon
resultat_1 = første_nummer >> 1;
resultat_2 = sekundnummer >> 2;
// skriv ut inngangstall og utgangsverdi
cout << endl;
display ("First Number is =", first_num);
display ("first_num >> 1 =", result_1);
cout << endl;
// skriv ut inngangstall og utgangsverdi
display ("Second Number is =", second_num);
display ("second_num >> 2 =", result_2);
cout << endl;
retur 0;
Eksempel 7: Sett bit
Dette eksemplet har til hensikt å vise hvordan du setter en bestemt bit ved hjelp av bitvise operatorer.
#inkludere#inkludere
#inkludere
bruker navneområde std;
// display () -funksjon
ugyldig visning (streng print_msg, int-nummer)
bitsett<16> myBitSet (nummer);
cout << print_msg;
cout << myBitSet.to_string() << " (" << myBitSet.to_ulong() << ") " << endl;
int main ()
int first_num = 7, second_num = 9;
// skriv ut inngangsnummeret - første_nummer
cout << endl;
display ("First Number is =", first_num);
// Sett 5. bit
first_num | = (1UL << 5);
// Utskrift
display ("Set 5th bit of first_num =", first_num);
cout << endl;
// skriv ut inngangsnummeret - second_num
cout << endl;
display ("Second Number is =", second_num); // Sett 6. bit
second_num | = (1UL << 6);
// Utskrift
display ("Set 6th bit of second_num =", second_num);
cout << endl;
retur 0;
Eksempel 8: Fjern bit
Dette eksemplet har til hensikt å vise hvordan du kan fjerne en bestemt bit ved hjelp av bitvise operatorer.
#inkludere#inkludere
#inkludere
bruker navneområde std;
// display () -funksjon
ugyldig visning (streng print_msg, int-nummer)
bitsett<16> myBitSet (nummer);
cout << print_msg;
cout << myBitSet.to_string() << " (" << myBitSet.to_ulong() << ") " << endl;
int main ()
int first_num = 7, second_num = 9;
// skriv ut inngangsnummeret - første_nummer
cout << endl;
display ("First Number is =", first_num);
// Fjern 2. bit
first_num & = ~ (1UL << 2);
// Utskrift
display ("Set 2nd bit of first_num =", first_num);
cout << endl;
// skriv ut inngangsnummeret - second_num
cout << endl;
display ("Second Number is =", second_num);
// Fjern 3. bit
second_num & = ~ (1UL << 3);
// Utskrift
display ("Set 3rd bit of second_num =", second_num);
cout << endl;
retur 0;
Konklusjon
Den bitvise operatøren brukes primært til å manipulere de enkelte bitene for datatype for heltall og tegn. Bitvis operatør er mye brukt i innebygd programvareutvikling. Så hvis du utvikler en enhetsdriver eller et system som er veldig nær maskinvarenivået, kan det være lurt å bruke disse bitvise operatørene.