C ++

„C ++“ operatoriai

„C ++“ operatoriai
Šiame straipsnyje aptarsime bitų operatorius C ++ programavimo kalba. Pamatysime keletą veikiančių pavyzdžių, kad galėtume išsamiai suprasti bitų operacijas. C ++ versijoje operatoriai bitais veikia individualiai bitų lygiu.

Trumpa „Bitwise“ operatorių apžvalga

Operatorius yra simbolis, nurodantis kompiliatoriui atlikti tam tikras matematines ar logines operacijas. C ++ yra keli operatorių tipai, pavyzdžiui:

  1. Aritmetikos operatoriai
  2. Loginiai operatoriai
  3. Ryšių operatoriai
  4. Užduočių operatoriai
  5. Operatoriai bitais
  6. Įvairūs operatoriai

Visi „Bitwise“ operatoriai veikia individualiai. Operatorius bitais gali būti taikomas tik sveikųjų skaičių ir simbolių duomenų tipams. Pvz., Jei turite sveiko skaičiaus tipo kintamąjį, kurio dydis yra 32 bitai, ir taikote operaciją NĖRA bitais, operacija „NEBŪTINA“ bus taikoma visiems 32 bitams. Taigi galiausiai visi 32 kintamojo bitai bus apversti.

C ++ versijoje yra šeši skirtingi operatoriai bitais:

  1. ARBA bitais (pavaizduota kaip „|“)
  2. Bitais IR [vaizduojama kaip „&“]
  3. NEMOKAMAI bitais [vaizduojama kaip „~“]
  4. Bitai XOR [vaizduojamas kaip „^“]
  5. Kairysis kairysis poslinkis [pavaizduotas kaip „<<”]
  6. Dešiniuoju poslinkiu į dešinę [vaizduojama kaip „>>“]

Arba tiesos lentelė

Operatorius „Bitwise OR“ sukuria 1, kai bent vienas operandas yra nustatytas kaip 1. Štai „Bitwise“ ARBA operatoriaus tiesos lentelė:

1 bitas Bit-2 Bit-1 | Bit-2
0 0 0
0 1 1
1 0 1
1 1 1

Bitų IR Tiesos lentelė

Operatorius „Bitwise AND“ sukuria 1, kai abu operandai nustatomi į 1. Štai „Bitwise AND“ operatoriaus tiesos lentelė:

1 bitas Bit-2 Bit-1 ir Bit-2
0 0 0
0 1 0
1 0 0
1 1 1

„Bitwise NOT“ tiesos lentelė

Operatorius Bitwise NOT apverčia operandą. Štai „Bitwise NOT“ operatoriaus tiesos lentelė:

1 bitas ~ Bit-1
0 1
1 0

Bitų XOR tiesos lentelė

Operatorius „Bitwise XOR“ sukuria 1 tik tada, jei vienas iš operandų yra nustatytas į 1. Čia yra „Bitwise AND“ operatoriaus tiesos lentelė:

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

Kairės kairės poslinkio operatorius

„Bitwise Left Shift“ operatorius perkelia visus likusius bitus nurodytu nurodytų bitų skaičiumi. Jei kairėje paliksite visus duomenų bitus iš 1, pradiniai duomenys bus padauginti iš 2. Panašiai, jei kairėje paliksite visus duomenų bitus 2, pradiniai duomenys bus padauginti iš 4.

Dešiniuoju greičiu perjungimo operatorius

Operatorius „Bitwise Right Shift“ perkelia visus bitus į dešinę nurodytu nurodytų bitų skaičiumi. Jei dešiniuoju pelės mygtuku perkelsite visus duomenų bitus 1, pradiniai duomenys bus padalyti (sveikasis skaičius) iš 2. Panašiai, jei teisingai perkelsite visus duomenų bitus 2, pradiniai duomenys bus padalyti (sveikasis skaičius) iš 4.

Pavyzdžiai

Kadangi mes supratome pagrindinę operacijų bitų prasmę, pažiūrėkime į keletą pavyzdžių, kurie padės jums suprasti bitų operacijas C ++:

7 ir 8 pavyzdžiai yra skirti rodyti realų bitų operatorių naudojimą programavimo kalba C ++.

1 pavyzdys: Operatorius bitais arba ARBA

Šioje programos pavyzdyje mes parodysime „Bitwise OR“ operatorių.

# įtraukti
# įtraukti
# įtraukti
naudojant vardų sritį std;
// display () funkcija
negaliojantis ekranas (eilutė print_msg, int numeris)

bitset<16> „myBitSet“ (skaičius);
cout << print_msg;
cout << myBitSet.to_string() << " (" << myBitSet.to_ulong() << ") " << endl;

int main ()

int pirmasis_suma = 7, antrasis_skaitas = 9, rezultatas = 0;
// Operacija bitais arba ARBA
rezultatas = pirmasis_num | antras_numeris;
// atspausdinti įvesties numerius
cout << endl;
rodyti ("Pirmasis skaičius yra =", pirmasis_suma);
rodyti ("Antrasis skaičius yra =", antrasis_numeris);
// išspausdinti išvesties vertę
rodyti ("first_num | second_num =", rezultatas);
cout << endl;
grąžinti 0;

2 pavyzdys: Bitų IR operatorius

Šiame programos pavyzdyje mes iliustruosime „Bitwise AND“ operatorių.

# įtraukti
# įtraukti
# įtraukti
naudojant vardų sritį std;
// display () funkcija
negaliojantis ekranas (eilutė print_msg, int numeris)

bitset<16> „myBitSet“ (skaičius);
cout << print_msg;
cout << myBitSet.to_string() << " (" << myBitSet.to_ulong() << ") " << endl;

int main ()

int pirmasis_suma = 7, antrasis_skaitas = 9, rezultatas = 0;
// Veikimas pagal bitų dydį IR
rezultatas = pirma_suma & antra_suma;
// atspausdinti įvesties numerius
cout << endl;
rodyti ("Pirmasis skaičius yra =", pirmasis_suma);
purslai ("Antrasis skaičius yra =", antrasis_numeris);
// išspausdinti išvesties vertę
rodyti ("first_num & second_num =", rezultatas);
cout << endl;
grąžinti 0;

3 pavyzdys: operatorius, veikiantis bitais, NĖRA

Šioje programos pavyzdyje mes suprasime, kaip operatorius „Bitwise NOT“ veikia C++.

# įtraukti
# įtraukti
# įtraukti
naudojant vardų sritį std;
// display () funkcija
negaliojantis ekranas (eilutė print_msg, int numeris)

bitset<16> „myBitSet“ (skaičius);
cout << print_msg;
cout << myBitSet.to_string() << " (" << myBitSet.to_ulong() << ") " << endl;

int main ()

int pirmas_skaitas = 7, antras_skaitas = 9, rezultatas_1 = 0, rezultatas_2 = 0;
// Veikimas bitais NET
rezultatas_1 = ~ pirmasis_suma;
rezultatas_2 = ~ antras_suma;
// išspausdinti įvesties numerius ir išvesties vertę
cout << endl;
rodyti ("Pirmasis skaičius yra =", pirmasis_suma);
rodyti ("~ first_num =", rezultatas_1);
cout << endl;
// išspausdinti įvesties numerius ir išvesties vertę
rodyti ("Antrasis skaičius yra =", antrasis_numeris);
rodyti ("~ second_num =", rezultatas_2);
cout << endl;
grąžinti 0;

4 pavyzdys: XOR operatorius bitais

Ši programa ketina paaiškinti, kaip „Bitwise XOR“ operatorius veikia C++.

# įtraukti
# įtraukti
# įtraukti
naudojant vardų sritį std;
// display () funkcija
negaliojantis ekranas (eilutė print_msg, int numeris)

bitset<16> „myBitSet“ (skaičius);
cout << print_msg;
cout << myBitSet.to_string() << " (" << myBitSet.to_ulong() << ") " << endl;

int main ()

int pirmasis_suma = 7, antrasis_skaitas = 9, rezultatas = 0;
// Operacija bitais XOR
rezultatas = pirmasis_suma ^ antrasis_suma;
// atspausdinti įvesties numerius
cout << endl;
rodyti ("Pirmasis skaičius yra =", pirmasis_suma);
rodyti ("Antrasis skaičius yra =", antrasis_numeris);
// išspausdinti išvesties vertę
rodyti ("first_num ^ second_num =", rezultatas);
cout << endl;
grąžinti 0;

5 pavyzdys: kairės pusės kairės pavaros operatorius

Dabar pamatysime „Bitwise Left Shift“ operatoriaus pavyzdį. Šioje programoje mes deklaravome du sveiko skaičiaus numerius: first_num ir second_num. Čia „first_num“ yra kairėje perkelta vienu bitu, o „second_num“ kairėje - dviem bitais.

# įtraukti
# įtraukti
# įtraukti
naudojant vardų sritį std;
// display () funkcija
negaliojantis ekranas (eilutė print_msg, int numeris)

bitset<16> „myBitSet“ (skaičius);
cout << print_msg;
cout << myBitSet.to_string() << " (" << myBitSet.to_ulong() << ") " << endl;

int main ()

int pirmas_skaitas = 7, antras_skaitas = 9, rezultatas_1 = 0, rezultatas_2 = 0;
// Perkėlimas kairėn kairėn
rezultatas_1 = pirmasis_suma << 1;
rezultatas_2 = antras_suma << 2;
// išspausdinti įvesties numerius ir išvesties vertę
cout << endl;
rodyti ("Pirmasis skaičius yra =", pirmasis_suma);
rodyti ("first_num << 1     =  ", result_1);
cout << endl;
// išspausdinti įvesties numerius ir išvesties vertę
rodyti ("Antrasis skaičius yra =", antrasis_numeris);
rodyti ("second_num << 2    =  ", result_2);
cout << endl;
grąžinti 0;

6 pavyzdys: dešiniosios perjungimo operatorius

Dabar pamatysime dar vieną pavyzdį, kaip suprasti „Bitwise Right Shift“ operatorių. Mes deklaravome du sveiko skaičiaus tipo skaičius: first_num ir second_num. Čia „first_num“ yra perkeltas į dešinę vienu bitu, o „second_num“ - dešiniuoju - dviem bitais.

# įtraukti
# įtraukti
# įtraukti
naudojant vardų sritį std;
// display () funkcija
negaliojantis ekranas (eilutė print_msg, int numeris)

bitset<16> „myBitSet“ (skaičius);
cout << print_msg;
cout << myBitSet.to_string() << " (" << myBitSet.to_ulong() << ") " << endl;

int main ()

int pirmas_skaitas = 7, antras_skaitas = 9, rezultatas_1 = 0, rezultatas_2 = 0;
// Dešiniuoju poslinkiu dešiniuoju režimu operacija
rezultatas_1 = pirmasis_num >> 1;
rezultatas_2 = antras_skaita >> 2;
// išspausdinti įvesties numerius ir išvesties vertę
cout << endl;
rodyti ("Pirmasis skaičius yra =", pirmasis_suma);
rodyti ("first_num >> 1 =", rezultatas_1);
cout << endl;
// išspausdinti įvesties numerius ir išvesties vertę
rodyti ("Antrasis skaičius yra =", antrasis_numeris);
rodyti ("second_num >> 2 =", rezultatas_2);
cout << endl;
grąžinti 0;

7 pavyzdys: nustatyti bitą

Šiame pavyzdyje ketinama parodyti, kaip nustatyti tam tikrą bitą naudojant bitų operatorius.

# įtraukti
# įtraukti
# įtraukti
naudojant vardų sritį std;
// display () funkcija
negaliojantis ekranas (eilutė print_msg, int numeris)

bitset<16> „myBitSet“ (skaičius);
cout << print_msg;
cout << myBitSet.to_string() << " (" << myBitSet.to_ulong() << ") " << endl;

int main ()

int pirmasis_suma = 7, antrasis_skaitas = 9;
// atspausdinti įvesties numerį - first_num
cout << endl;
rodyti ("Pirmasis skaičius yra =", pirmasis_suma);
// Nustatykite 5 bitą
first_num | = (1UL << 5);
// Spausdinimo išvestis
rodyti ("Nustatyti 5-ąjį pirmojo_num =" bitą ", pirmasis_suma);
cout << endl;
// atspausdinti įvesties numerį - second_num
cout << endl;
display ("Antrasis skaičius yra =", antrasis_num); // Nustatykite 6-ąjį bitą
second_num | = (1UL << 6);
// Spausdinimo išvestis
rodyti ("Nustatyti 6-ąjį sekundės_num =" bitą ", antrasis_numeris);
cout << endl;
grąžinti 0;

8 pavyzdys: išvalyti bitą

Šiame pavyzdyje ketinama parodyti, kaip išvalyti tam tikrą bitą naudojant bitų operatorių.

# įtraukti
# įtraukti
# įtraukti
naudojant vardų sritį std;
// display () funkcija
negaliojantis ekranas (eilutė print_msg, int numeris)

bitset<16> „myBitSet“ (skaičius);
cout << print_msg;
cout << myBitSet.to_string() << " (" << myBitSet.to_ulong() << ") " << endl;

int main ()

int pirmasis_suma = 7, antrasis_skaitas = 9;
// atspausdinti įvesties numerį - first_num
cout << endl;
rodyti ("Pirmasis skaičius yra =", pirmasis_suma);
// Išvalyti 2 bitą
first_num & = ~ (1UL << 2);
// Spausdinimo išvestis
rodyti ("Nustatyti 2-ąjį pirmojo_num =" bitą ", pirmasis_suma);
cout << endl;
// atspausdinti įvesties numerį - second_num
cout << endl;
rodyti ("Antrasis skaičius yra =", antrasis_numeris);
// Išvalyti 3 bitą
antrasis_numas & = ~ (1UL << 3);
// Spausdinimo išvestis
ekranas ("Nustatyti 3-ąjį sekundės_num = bitą", antrasis_numeris);
cout << endl;
grąžinti 0;

Išvada

Operatorius bitais pirmiausia naudojamas manipuliuoti atskirais skaičiais ir simbolių duomenų tipais. Operatorius bitais yra labai naudojamas kuriant įterptąją programinę įrangą. Taigi, jei kuriate įrenginio tvarkyklę arba sistemą, kuri yra labai artima aparatinės įrangos lygiui, galite naudoti šiuos operatorius bitais.

Geriausi žaidimai, kuriuos reikia žaisti naudojant rankos stebėjimą
„Oculus Quest“ neseniai pristatė puikią rankos stebėjimo be valdiklių idėją. „Oculus Quest“ rankų sekimo žaidimai iki šiol buvo ribojami, kai žaidimų ...
Kaip rodyti OSD perdangą viso ekrano „Linux“ programose ir žaidimuose
Žaisdami viso ekrano žaidimus arba naudodamiesi programomis be išsiblaškymo viso ekrano režimu, galite nutraukti nuo susijusios sistemos informacijos,...
5 geriausios žaidimų fiksavimo kortos
Visi mes matėme ir pamėgome srautinius žaidimus „YouTube“. „PewDiePie“, „Jakesepticye“ ir „Markiplier“ yra tik vieni iš geriausių žaidėjų, kurie uždir...