C ++

C ++ Bitvisa operatörer

C ++ Bitvisa operatörer
I den här artikeln ska vi diskutera bitvis operatörer i programmeringsspråket C ++. Vi kommer att se flera arbetsexempel för att förstå bitvisa operationer i detalj. I C ++ arbetar de bitvisa operatörerna på den individuella bitnivån.

Kort översikt över bitvisa operatörer

En operatör är en symbol som instruerar kompilatorn att utföra vissa matematiska eller logiska operationer. Det finns flera typer av operatörer i C ++, till exempel:

  1. Aritmetiska operatörer
  2. Logiska operatörer
  3. Relationsoperatörer
  4. Uppdragsoperatörer
  5. Bitvisa operatörer
  6. Övriga operatörer

Alla Bitwise-operatörer arbetar på individuell bitnivå. Bitvisoperatören kan endast tillämpas på datatyperna för heltal och tecken. Om du till exempel har en heltalstypvariabel med storleken 32 bitar och du använder bitvis INTE-operation, kommer bitvis INTE-operatorn att tillämpas på alla 32 bitar. Så småningom kommer alla 32 bitarna i variabeln att vändas.

Det finns sex olika bitvisa operatörer tillgängliga i C ++:

  1. Bitvis ELLER [representerad som "|"]
  2. Bitvis OCH [representerad som “&”]
  3. Bitvis INTE [representerad som “~”]
  4. Bitvis XOR [representerad som “^”]
  5. Bitvis vänster skift [representerad som “<<”]
  6. Bitvis högerförskjutning [representerad som “>>”]

Bitvis ELLER sanningstabell

Bitvis ELLER-operatör producerar 1 när minst en operand är inställd på 1. Här är sanningstabellen för 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 och sanningstabell

Bitvis AND-operatör producerar 1 när båda operanderna är inställda på 1. Här är sanningstabellen för Bitwise AND-operatören:

Bit-1 Bit-2 Bit-1 & Bit-2
0 0 0
0 1 0
1 0 0
1 1 1

Bitvis INTE Sanningstabell

Bitvis inverterar INTE operatören. Här är sanningstabellen för Bitwise NOT-operatör:

Bit-1 ~ Bit-1
0 1
1 0

Bitvis XOR sanningstabell

Bitvis XOR-operatör producerar 1 om, och endast om, en av operanderna är inställd på 1. Här är sanningstabellen för Bitwise AND-operatör:

Bit-1 Bit-2 Bit-1 ^ Bit-2
0 0 0
0 1 1
1 0 1
1 1 0

Bitvis vänster växeloperatör

Bitvis vänster skiftoperatör flyttar alla bitar kvar med det angivna antalet specificerade bitar. Om du lämnade skiftar alla bitar av data med 1, kommer den ursprungliga informationen att multipliceras med 2. På samma sätt, om du lämnade skiftar alla bitar av data med 2, kommer originaldata att multipliceras med 4.

Bitvis höger skiftoperatör

Bitvis höger skiftoperatör flyttar alla bitar åt höger med det angivna antalet specificerade bitar. Om du höger skiftar alla databitar med 1 delas originaldata (heltal) med 2. På samma sätt, om du höger skiftar alla bitar av data med 2, kommer de ursprungliga uppgifterna att delas (heltalsdelning) med 4.

Exempel

Nu, eftersom vi har förstått det grundläggande begreppet bitvisa operationer, låt oss titta på ett par exempel, som hjälper dig att förstå bitvisa operationer i C ++:

Exemplet 7 och 8 är för att demonstrera den verkliga användningen av bitvisa operatörer i programmeringsspråket C ++.

Exempel 1: Bitvis ELLER operatör

I detta exempelprogram kommer vi att demonstrera Bitwise OR-operatören.

#omfatta
#omfatta
#omfatta
använder namnrymd std;
// display () -funktion
ogiltig visning (sträng print_msg, int nummer)

bitset<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örsta_nummer | second_num;
// skriva ut inmatningsnumren
cout << endl;
display ("First Number is =", first_num);
display ("Second Number is =", second_num);
// skriv ut värdet
display ("first_num | second_num =", result);
cout << endl;
returnera 0;

Exempel 2: Bitvis OCH operatör

I detta exempelprogram illustrerar vi Bitwise AND-operatören.

#omfatta
#omfatta
#omfatta
använder namnrymd std;
// display () -funktion
ogiltig visning (sträng print_msg, int nummer)

bitset<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 OCH-drift
resultat = första_nummer & andra_nummer;
// skriv ut inmatningsnumren
cout << endl;
display ("First Number is =", first_num);
splay ("Second Number is =", second_num);
// skriv ut värdet
display ("first_num & second_num =", result);
cout << endl;
returnera 0;

Exempel 3: Bitvis INTE operatör

I detta exempelprogram kommer vi att förstå hur Bitwise NOT-operatören fungerar i C++.

#omfatta
#omfatta
#omfatta
använder namnrymd std;
// display () -funktion
ogiltig visning (sträng print_msg, int nummer)

bitset<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 drift INTE
resultat_1 = ~ första_nummer;
resultat_2 = ~ andra_nummer;
// skriv ut inmatningsnumren och utmatningsvärdet
cout << endl;
display ("First Number is =", first_num);
display ("~ first_num =", result_1);
cout << endl;
// skriv ut inmatningsnumren och utmatningsvärdet
display ("Second Number is =", second_num);
display ("~ second_num =", result_2);
cout << endl;
returnera 0;

Exempel 4: Bitvis XOR-operatör

Detta program avser att förklara hur Bitwise XOR-operatören fungerar i C++.

#omfatta
#omfatta
#omfatta
använder namnrymd std;
// display () -funktion
ogiltig visning (sträng print_msg, int nummer)

bitset<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-funktion
resultat = första_nummer ^ andra_nummer;
// skriv ut inmatningsnumren
cout << endl;
display ("First Number is =", first_num);
display ("Second Number is =", second_num);
// skriva ut utgångsvärdet
display ("first_num ^ second_num =", result);
cout << endl;
returnera 0;

Exempel 5: Bitvis vänster skiftoperatör

Nu ser vi exemplet med Bitwise Left Shift-operatören. I det här programmet har vi deklarerat två nummer, first_num och second_num av heltalstyp. Här vänster "första_numret" med en bit och "andra_numret" vänsterskiftas med två bitar.

#omfatta
#omfatta
#omfatta
använder namnrymd std;
// display () -funktion
ogiltig visning (sträng print_msg, int nummer)

bitset<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 vänsterförskjutning
resultat_1 = första_nummer << 1;
resultat_2 = andra_nummer << 2;
// skriv ut inmatningsnumren och utmatningsvärdet
cout << endl;
display ("First Number is =", first_num);
display ("första_nummer << 1     =  ", result_1);
cout << endl;
// skriv ut inmatningsnumren och utmatningsvärdet
display ("Second Number is =", second_num);
display ("second_num << 2    =  ", result_2);
cout << endl;
returnera 0;

Exempel 6: Bitvis höger skiftoperatör

Nu ser vi ett annat exempel för att förstå Bitwise Right Shift-operatören. Vi har deklarerat två nummer, första_nummer och andra_tal av heltalstyp. Här höjs "första_numret" med en bit och "andra_numret" högerförskjuts med två bitar.

#omfatta
#omfatta
#omfatta
använder namnrymd std;
// display () -funktion
ogiltig visning (sträng print_msg, int nummer)

bitset<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 högerförskjutning
resultat_1 = första_nummer >> 1;
resultat_2 = andra_nummer >> 2;
// skriv ut inmatningsnumren och utmatningsvärdet
cout << endl;
display ("First Number is =", first_num);
display ("first_num >> 1 =", result_1);
cout << endl;
// skriv ut inmatningsnumren och utmatningsvärdet
display ("Second Number is =", second_num);
display ("second_num >> 2 =", result_2);
cout << endl;
returnera 0;

Exempel 7: Ställ in bit

Detta exempel avser att visa hur man ställer in en viss bit med bitvisa operatorer.

#omfatta
#omfatta
#omfatta
använder namnrymd std;
// display () -funktion
ogiltig visning (sträng print_msg, int nummer)

bitset<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 inmatningsnumret - första_nummer
cout << endl;
display ("First Number is =", first_num);
// Ställ in 5: e biten
first_num | = (1UL << 5);
// Utskrift
display ("Set 5th bit of first_num =", first_num);
cout << endl;
// skriv ut inmatningsnumret - second_num
cout << endl;
display ("Second Number is =", second_num); // Ställ in 6: e bit
second_num | = (1UL << 6);
// Utskrift
display ("Set 6th bit of second_num =", second_num);
cout << endl;
returnera 0;

Exempel 8: Rensa bit

Detta exempel avser att visa hur man rensar en viss bit med bitvisa operatorer.

#omfatta
#omfatta
#omfatta
använder namnrymd std;
// display () -funktion
ogiltig visning (sträng print_msg, int nummer)

bitset<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 inmatningsnumret - första_nummer
cout << endl;
display ("First Number is =", first_num);
// Rensa andra biten
first_num & = ~ (1UL << 2);
// Utskrift
display ("Set 2nd bit of first_num =", first_num);
cout << endl;
// skriv ut inmatningsnumret - second_num
cout << endl;
display ("Second Number is =", second_num);
// Rensa 3: e biten
second_num & = ~ (1UL << 3);
// Utskrift
display ("Set 3rd bit of second_num =", second_num);
cout << endl;
returnera 0;

Slutsats

Bitvis operatör används främst för att manipulera de enskilda bitarna för heltal och teckendatatyp. Den bitvisa operatören används mycket i inbyggd mjukvaruutveckling. Så om du utvecklar en enhetsdrivrutin eller ett system som ligger mycket nära hårdvarunivån kanske du vill använda dessa bitvisa operatörer.

Mus Så här ändrar du inställningar för mus och pekplatta med Xinput i Linux
Så här ändrar du inställningar för mus och pekplatta med Xinput i Linux
De flesta Linux-distributioner levereras med "libinput" -bibliotek som standard för att hantera inmatningshändelser i ett system. Den kan bearbeta inm...
Mus Omforma dina musknappar på olika sätt för olika program med X-Mouse Button Control
Omforma dina musknappar på olika sätt för olika program med X-Mouse Button Control
Kanske behöver du ett verktyg som kan göra att musens kontroll ändras med alla applikationer som du använder. Om så är fallet kan du prova en ansökan ...
Mus Microsoft Sculpt Touch Wireless Mouse Review
Microsoft Sculpt Touch Wireless Mouse Review
Jag har nyligen läst om Microsoft Sculpt Touch trådlös mus och bestämde mig för att köpa den. Efter att ha använt den ett tag bestämde jag mig för att...