C ++

C ++ bitenkénti operátorok

C ++ bitenkénti operátorok
Ebben a cikkben a bitenkénti operátorokat fogjuk megvitatni a C ++ programozási nyelven. Számos működő példát fogunk látni a bitenkénti műveletek részletes megértéséhez. A C ++ - ban a bitenkénti operátorok az egyes bitek szintjén dolgoznak.

Rövid áttekintés a Bitwise operátorokról

Az operátor olyan szimbólum, amely utasítja a fordítót bizonyos matematikai vagy logikai műveletek végrehajtására. A C ++ operátoroknak több típusa van, például:

  1. Számtani operátorok
  2. Logikai operátorok
  3. Relációs operátorok
  4. Feladatkezelők
  5. Bitenkénti operátorok
  6. Egyéb üzemeltetők

Az összes Bitwise operátor egyedi bit szinten működik. A bitenkénti operátor csak az egész és a karakter adattípusokra alkalmazható. Például, ha van egy egész típusú változója, amelynek mérete 32 bit, és a bitenkénti NEM műveletet alkalmazza, a bitenként NEM operátort alkalmazza mind a 32 bit. Tehát végül a változó mind a 32 bitje megfordul.

Hat különböző bitenkénti operátor érhető el a C ++ nyelven:

  1. Bitenkénti VAGY („|” -ként ábrázolva)
  2. Bitenkénti ÉS [képviselve „&” néven]
  3. Bitenként NEM [ábrázolva: „~”]
  4. Bitenként XOR [„^” -ként ábrázolva]
  5. Bitenkénti bal eltolás<<”]
  6. Bitenkénti jobbra tolás [„>>” -ként ábrázolva]

Bitenkénti VAGY Igazság táblázat

A Bitwise OR operátor akkor állít elő 1-t, ha legalább egy operandus értéke 1. Itt van az igazságtáblázat a Bitwise OR operátorhoz:

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

Bitenkénti ÉS igazság táblázat

Az AND operátor bitenként 1-et állít elő, ha mindkét operandus 1-re van állítva. Itt van az igazságtáblázat a Bitwise ÉS operátor számára:

Bit-1 Bit-2 Bit-1 és Bit-2
0 0 0
0 1 0
1 0 0
1 1 1

Bitenként NEM Igazság Táblázat

A bitenkénti NOT operátor megfordítja az operandust. Itt van az igazságtábla a Bitwise NOT operátorhoz:

Bit-1 ~ 1. bit
0 1
1 0

Bitenkénti XOR igazságtáblázat

A bitenkénti XOR operátor akkor és akkor állít elő 1-t, ha az egyik operandus 1-re van állítva. Itt van az igazságtáblázat a Bitwise ÉS operátor számára:

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

Bitenkénti bal váltáskezelő

Bitenkénti bal váltás operátor eltolja az összes bitet a megadott számú megadott bit mellett. Ha balra tolta az adatok összes bitjét 1-gyel, akkor az eredeti adatot megszorozza 2-vel. Hasonlóképpen, ha balra tolja az adatok összes bitjét 2-vel, akkor az eredeti adatokat megszorozzuk 4-gyel.

Bitenkénti jobb váltáskezelő

A bitenkénti jobb váltás operátor az összes bitet jobbra tolja a megadott számú megadott bitrel. Ha jobbra tolja az adatok összes bitjét 1-gyel, akkor az eredeti adatokat 2-vel osztják el (egész osztás). Hasonlóképpen, ha jobbra tolja az adatok összes bitjét 2-vel, akkor az eredeti adatokat elosztjuk (egész osztás) 4-gyel.

Példák

Most, hogy megértettük a bitenkénti műveletek alapfogalmát, nézzünk meg néhány példát, amelyek segítenek megérteni a bitenkénti műveleteket a C ++ nyelven:

A 7. és 8. példa a bitenkénti operátorok valós használatának bemutatására szolgál a C ++ programozási nyelven.

1. példa: Bitenként VAGY operátor

Ebben a példaprogramban bemutatjuk a Bitwise OR operátort.

#include
#include
#include
névtér használata std;
// display () függvény
void display (string print_msg, int szám)

bitset<16> myBitSet (szám);
cout << print_msg;
cout << myBitSet.to_string() << " (" << myBitSet.to_ulong() << ") " << endl;

int main ()

int első_szám = 7, második_szám = 9, eredmény = 0;
// Bitenként VAGY művelet
eredmény = első_szám | second_num;
// kinyomtatja a bemeneti számokat
cout << endl;
display ("Az első szám =", első_szám);
kijelző ("A második szám =", második_szám);
// kinyomtatja a kimeneti értéket
display ("első_szám | második_szám =", eredmény);
cout << endl;
visszatér 0;

2. példa: Bitenkénti ÉS operátor

Ebben a példaprogramban bemutatjuk a Bitwise AND operátort.

#include
#include
#include
névtér használata std;
// display () függvény
void display (string print_msg, int szám)

bitset<16> myBitSet (szám);
cout << print_msg;
cout << myBitSet.to_string() << " (" << myBitSet.to_ulong() << ") " << endl;

int main ()

int első_szám = 7, második_szám = 9, eredmény = 0;
// Bitenkénti ÉS művelet
eredmény = első_szám & második_szám;
// kinyomtatja a bemeneti számokat
cout << endl;
display ("Az első szám =", első_szám);
szórás ("A második szám =", második_szám);
// kinyomtatja a kimeneti értéket
display ("első_szám & második_szám =", eredmény);
cout << endl;
visszatér 0;

3. példa: Bitenként NEM kezelő

Ebben a példaprogramban megértjük, hogyan működik a Bitwise NOT operátor C-ben++.

#include
#include
#include
névtér használata std;
// display () függvény
void display (string print_msg, int szám)

bitset<16> myBitSet (szám);
cout << print_msg;
cout << myBitSet.to_string() << " (" << myBitSet.to_ulong() << ") " << endl;

int main ()

int első_szám = 7, második_szám = 9, eredmény_1 = 0, eredmény_2 = 0;
// Bitenként NEM művelet
eredmény_1 = ~ első_szám;
eredmény_2 = ~ másodperc_szám;
// kinyomtatja a bemeneti számokat és a kimeneti értéket
cout << endl;
display ("Az első szám =", első_szám);
display ("~ first_num =", eredmény_1);
cout << endl;
// kinyomtatja a bemeneti számokat és a kimeneti értéket
kijelző ("A második szám =", második_szám);
display ("~ másodperc_szám =", eredmény_2);
cout << endl;
visszatér 0;

4. példa: Bitenként XOR operátor

Ez a program elmagyarázni kívánja, hogy a Bitwise XOR operátor hogyan működik C-ben++.

#include
#include
#include
névtér használata std;
// display () függvény
void display (string print_msg, int szám)

bitset<16> myBitSet (szám);
cout << print_msg;
cout << myBitSet.to_string() << " (" << myBitSet.to_ulong() << ") " << endl;

int main ()

int első_szám = 7, második_szám = 9, eredmény = 0;
// Bitenként XOR művelet
eredmény = első_szám ^ második_szám;
// kinyomtatja a bemeneti számokat
cout << endl;
display ("Az első szám =", első_szám);
kijelző ("A második szám =", második_szám);
// kinyomtatja a kimeneti értéket
display ("első_szám ^ második_szám =", eredmény);
cout << endl;
visszatér 0;

5. példa: Bitenkénti bal váltáskezelő

Most látni fogjuk a Bitenkénti bal váltás operátor példáját. Ebben a programban két számot deklaráltunk, az első_szám és a második_szám egész típusú. Itt az „first_num” balra tolódik egy bitrel, a „second_num” pedig két bit balra tolódik.

#include
#include
#include
névtér használata std;
// display () függvény
void display (string print_msg, int szám)

bitset<16> myBitSet (szám);
cout << print_msg;
cout << myBitSet.to_string() << " (" << myBitSet.to_ulong() << ") " << endl;

int main ()

int első_szám = 7, második_szám = 9, eredmény_1 = 0, eredmény_2 = 0;
// Bitenkénti bal váltás művelet
eredmény_1 = első_szám << 1;
eredmény_2 = második_szám << 2;
// kinyomtatja a bemeneti számokat és a kimeneti értéket
cout << endl;
display ("Az első szám =", első_szám);
display ("első_szám << 1     =  ", result_1);
cout << endl;
// kinyomtatja a bemeneti számokat és a kimeneti értéket
kijelző ("A második szám =", második_szám);
display ("második_szám << 2    =  ", result_2);
cout << endl;
visszatér 0;

6. példa: Bitenkénti jobbra váltás kezelője

Most egy másik példát fogunk látni a Bitwise Right Shift operátor megértéséhez. Két számot deklaráltunk, az első_szám és a második_szám egész típusú. Itt az „first_num” jobbra tolódik egy bittel, a „second_num” pedig két bittel jobbra.

#include
#include
#include
névtér használata std;
// display () függvény
void display (string print_msg, int szám)

bitset<16> myBitSet (szám);
cout << print_msg;
cout << myBitSet.to_string() << " (" << myBitSet.to_ulong() << ") " << endl;

int main ()

int első_szám = 7, második_szám = 9, eredmény_1 = 0, eredmény_2 = 0;
// Bitenkénti jobb váltás művelet
eredmény_1 = első_szám >> 1;
eredmény_2 = második_szám >> 2;
// kinyomtatja a bemeneti számokat és a kimeneti értéket
cout << endl;
display ("Az első szám =", első_szám);
display ("első_szám >> 1 =", eredmény_1);
cout << endl;
// kinyomtatja a bemeneti számokat és a kimeneti értéket
kijelző ("A második szám =", második_szám);
display ("második_szám >> 2 =", eredmény_2);
cout << endl;
visszatér 0;

7. példa: Bit beállítása

Ez a példa bemutatni kívánja, hogyan állítson be egy adott bitet bitenként operátorok segítségével.

#include
#include
#include
névtér használata std;
// display () függvény
void display (string print_msg, int szám)

bitset<16> myBitSet (szám);
cout << print_msg;
cout << myBitSet.to_string() << " (" << myBitSet.to_ulong() << ") " << endl;

int main ()

int első_szám = 7, második_szám = 9;
// kinyomtatja a beviteli számot - first_num
cout << endl;
display ("Az első szám =", első_szám);
// Állítsa be az 5. bitet
első_szám | = (1UL << 5);
// Kimenet nyomtatása
display ("Állítsa be az első_szám = 5. bitjét", első_szám);
cout << endl;
// kinyomtatja a bemeneti számot - second_num
cout << endl;
display ("A második szám =", második_szám); // Állítsa be a 6. bitet
second_num | = (1UL << 6);
// Kimenet nyomtatása
display ("Állítsa be a második_szám = 6. bitjét", második_szám);
cout << endl;
visszatér 0;

8. példa: Tiszta bit

Ez a példa azt kívánja bemutatni, hogyan lehet egy adott bitet törölni bitenként operátorok segítségével.

#include
#include
#include
névtér használata std;
// display () függvény
void display (string print_msg, int szám)

bitset<16> myBitSet (szám);
cout << print_msg;
cout << myBitSet.to_string() << " (" << myBitSet.to_ulong() << ") " << endl;

int main ()

int első_szám = 7, második_szám = 9;
// kinyomtatja a beviteli számot - first_num
cout << endl;
display ("Az első szám =", első_szám);
// 2. bit törlése
első_szám & = ~ (1UL << 2);
// Nyomtatási kimenet
display ("Állítsa be a first_num = 2. bitjét", first_num);
cout << endl;
// kinyomtatja a bemeneti számot - second_num
cout << endl;
kijelző ("A második szám =", második_szám);
// 3. bit törlése
másodperc_szám & = ~ (1UL << 3);
// Nyomtatási kimenet
display ("Állítsa be a második_num = 3. bitjét", második_szám);
cout << endl;
visszatér 0;

Következtetés

A bitenkénti operátort elsősorban az egyes bitek manipulálására használják egész szám és karakter adattípus esetén. A bitenkénti operátort erősen használják a beágyazott szoftverek fejlesztésében. Tehát, ha eszközillesztőt vagy a hardverszinthez nagyon közel álló rendszert fejleszt, érdemes ezeket a bitenkénti operátorokat használni.

HD Remastered Games for Linux, amelyeknek soha nem volt korábban Linux kiadásuk
Számos játékfejlesztő és kiadó a régi játékok HD remasterjével áll elő a franchise élettartamának meghosszabbítása érdekében. Kérjük, hogy a rajongók ...
Az AutoKey használata a Linux játékok automatizálásához
Az AutoKey egy asztali automatizáló segédprogram Linux és X11 rendszerekhez, Python 3, GTK és Qt programozással. A parancsfájlok és a MACRO funkcióina...
Az FPS-számláló megjelenítése a Linux-játékokban
A Linux játék komoly lendületet kapott, amikor a Valve 2012-ben bejelentette a Linux támogatását a Steam kliensnek és játékaiknak. Azóta sok AAA és in...