C ++

C ++ -operaattorit

C ++ -operaattorit
Tässä artikkelissa aiomme keskustella bittioperaattoreista C ++ - ohjelmointikielellä. Näemme useita toimivia esimerkkejä ymmärtääksemme bittioperaatiot yksityiskohtaisesti. C ++: ssa bittikohtaiset operaattorit työskentelevät yksittäisillä bittitasoilla.

Lyhyt kuvaus Bitwise-operaattoreista

Operaattori on symboli, joka kehottaa kääntäjää suorittamaan tiettyjä matemaattisia tai loogisia operaatioita. C ++ --järjestelmässä on useita operaattoreita, kuten:

  1. Aritmeettiset operaattorit
  2. Loogiset operaattorit
  3. Suhteelliset operaattorit
  4. Tehtäväoperaattorit
  5. Bit-operaattorit
  6. Muut operaattorit

Kaikki Bitwise-operaattorit toimivat yksittäisillä bittitasoilla. Bittikohtaista operaattoria voidaan käyttää vain kokonaisluku- ja merkkitietotyyppeihin. Esimerkiksi, jos sinulla on kokonaislukutyyppinen muuttuja, jonka koko on 32 bittiä, ja käytät bittiä EI-operaatiota, bittiä EI-operaattoria käytetään kaikkiin 32 bittiin. Joten lopulta kaikki muuttujan 32 bittiä käännetään.

C ++: ssa on kuusi erilaista bittikohtaista operaattoria:

  1. Bittikohtaisesti TAI [edustaa "|"]
  2. Bittikohtaisesti JA [edustettuina ”&”]
  3. Bittikohtaisesti EI [edustettu ”~”]
  4. Bittikohtaisesti XOR [edustettu nimellä ”^”]
  5. Bittisuuntainen vasen vaihto [edustettu "<<”]
  6. Oikea siirtymä bittiä kohti [edustettuina nimellä “>>”]

Bittitai TAI totuuden taulukko

Bitwise OR -operaattori tuottaa arvon 1, kun ainakin yksi operandi on asetettu arvoon 1. Tässä on totuustaulukko Bitwise OR -operaattorille:

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

Bittitason ja totuuden taulukko

Bit-operaattori AND tuottaa 1, kun molemmat operandit on asetettu 1: een. Tässä on totuustaulukko Bitwise AND -operaattorille:

Bitti-1 Bit-2 Bit-1 ja Bit-2
0 0 0
0 1 0
1 0 0
1 1 1

Bittikohtaisesti EI totuustaulukko

Bit-operaattori EI-operaattori kääntää operandin. Tässä on totuustaulukko Bitwise NOT -operaattorille:

Bitti-1 ~ Bit-1
0 1
1 0

Bittikohtainen XOR-totuustaulukko

Bittikohtaisesti XOR-operaattori tuottaa 1, ja vain, jos jokin operandeista on asetettu 1: ksi. Tässä on totuustaulukko Bitwise AND -operaattorille:

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

Vasemmanpuoleisen vaihdon kuljettaja

Bittisuuntainen vasen siirto -käyttäjä siirtää kaikki bitit, jotka on jätetty määritetyn määrän määritettyjä bittejä. Jos vasemmalle siirrät kaikki databitit yhdellä, alkuperäiset tiedot kerrotaan kahdella. Vastaavasti, jos vasemmalle siirrät kaikki databitit kahdella, alkuperäinen data kerrotaan 4: llä.

Oikeavaihteen kuljettaja bittikohtaisesti

Oikeasiirtonopeuden operaattori siirtää kaikki bitit oikealle määritetyllä määrällä määritettyjä bittejä. Jos siirrät kaikki databitit oikealle yhdellä, alkuperäiset tiedot jaetaan (kokonaislukujako) kahdella. Vastaavasti, jos siirrät kaikki databitit oikealle 2: lla, alkuperäiset tiedot jaetaan (kokonaislukujako) 4: llä.

Esimerkkejä

Nyt kun olemme ymmärtäneet bittikohtaisten operaatioiden peruskäsitteen, katsokaamme muutama esimerkki, jotka auttavat sinua ymmärtämään bittikohtaiset operaatiot C ++: ssa:

Esimerkit 7 ja 8 on tarkoitettu osoittamaan bittioperaattoreiden todellista käyttöä C ++ - ohjelmointikielellä.

Esimerkki 1: Bittikohtaisesti TAI operaattori

Tässä esimerkkiohjelmassa esittelemme Bitwise OR -operaattoria.

#sisältää
#sisältää
#sisältää
käyttämällä nimitilaa vakio;
// display () -toiminto
void-näyttö (merkkijono print_msg, int-numero)

bitset<16> myBitSet (numero);
cout << print_msg;
cout << myBitSet.to_string() << " (" << myBitSet.to_ulong() << ") " << endl;

int main ()

int ensimmäinen_numero = 7, toinen_luku = 9, tulos = 0;
// Bittikohtainen TAI -toiminto
tulos = ensimmäinen_luku | toinen_num;
// tulosta syötetyt numerot
cout << endl;
näyttö ("Ensimmäinen numero on =", ensimmäinen_luku);
näyttö ("Toinen luku on =", toinen_luku);
// tulosta lähtöarvo
näyttö ("first_num | second_num =", tulos);
cout << endl;
paluu 0;

Esimerkki 2: Bittiviiva ja operaattori

Tässä esimerkkiohjelmassa kuvataan Bitwise AND -operaattoria.

#sisältää
#sisältää
#sisältää
käyttämällä nimitilaa vakio;
// display () -toiminto
void-näyttö (merkkijono print_msg, int-numero)

bitset<16> myBitSet (numero);
cout << print_msg;
cout << myBitSet.to_string() << " (" << myBitSet.to_ulong() << ") " << endl;

int main ()

int ensimmäinen_numero = 7, toinen_luku = 9, tulos = 0;
// Bittikohtainen JA-toiminta
tulos = ensimmäinen_numero & toinen_num;
// tulosta syötetyt numerot
cout << endl;
näyttö ("Ensimmäinen numero on =", ensimmäinen_luku);
splay ("Toinen luku on =", toinen_luku);
// tulosta lähtöarvo
näyttö ("first_num & second_num =", tulos);
cout << endl;
paluu 0;

Esimerkki 3: Bittikohtaisesti EI operaattoria

Tässä esimerkkiohjelmassa ymmärrämme kuinka Bitwise NOT -operaattori toimii C: ssä++.

#sisältää
#sisältää
#sisältää
käyttämällä nimitilaa vakio;
// display () -toiminto
void-näyttö (merkkijono print_msg, int-numero)

bitset<16> myBitSet (numero);
cout << print_msg;
cout << myBitSet.to_string() << " (" << myBitSet.to_ulong() << ") " << endl;

int main ()

int ensimmäinen_luku = 7, toinen_luku = 9, tulos_1 = 0, tulos_2 = 0;
// Bittikohtaisesti EI-toiminta
tulos_1 = ~ ensimmäinen_luku;
tulos_2 = ~ toinen_luku;
// tulosta syötetyt numerot ja lähtöarvo
cout << endl;
näyttö ("Ensimmäinen numero on =", ensimmäinen_luku);
näyttö ("~ first_num =", tulos_1);
cout << endl;
// tulosta syötetyt numerot ja lähtöarvo
näyttö ("Toinen luku on =", toinen_luku);
näyttö ("~ second_num =", tulos_2);
cout << endl;
paluu 0;

Esimerkki 4: XOR-operaattori bittikohtaisesti

Tämän ohjelman tarkoituksena on selittää, kuinka Bitwise XOR -operaattori toimii C: ssä++.

#sisältää
#sisältää
#sisältää
käyttämällä nimitilaa vakio;
// display () -toiminto
void-näyttö (merkkijono print_msg, int-numero)

bitset<16> myBitSet (numero);
cout << print_msg;
cout << myBitSet.to_string() << " (" << myBitSet.to_ulong() << ") " << endl;

int main ()

int ensimmäinen_numero = 7, toinen_luku = 9, tulos = 0;
// Bittikohtainen XOR-toiminto
tulos = ensimmäinen_num ^ toinen_num;
// tulosta syötetyt numerot
cout << endl;
näyttö ("Ensimmäinen numero on =", ensimmäinen_luku);
näyttö ("Toinen luku on =", toinen_luku);
// tulosta lähtöarvo
näyttö ("first_num ^ second_num =", tulos);
cout << endl;
paluu 0;

Esimerkki 5: Vasemmanpuoleisen vaihdon operaattori bittiä kohti

Nyt näemme esimerkin Bitwise Left Shift -operaattorista. Tässä ohjelmassa olemme ilmoittaneet kaksi kokonaislukutyyppistä numeroa, ensimmäinen_numero ja toinen_luku. Tällöin “first_num” on vasemmalla siirretty yhdellä bitillä ja “second_num” vasemmalla puolella kahdella bitillä.

#sisältää
#sisältää
#sisältää
käyttämällä nimitilaa vakio;
// display () -toiminto
void-näyttö (merkkijono print_msg, int-numero)

bitset<16> myBitSet (numero);
cout << print_msg;
cout << myBitSet.to_string() << " (" << myBitSet.to_ulong() << ") " << endl;

int main ()

int ensimmäinen_luku = 7, toinen_luku = 9, tulos_1 = 0, tulos_2 = 0;
// Vasemmanpuoleinen siirto bittiä kohti
tulos_1 = ensimmäinen_luku << 1;
tulos_2 = toinen_luku << 2;
// tulosta syötetyt numerot ja lähtöarvo
cout << endl;
näyttö ("Ensimmäinen numero on =", ensimmäinen_luku);
display ("ensimmäinen_num << 1     =  ", result_1);
cout << endl;
// tulosta syötetyt numerot ja lähtöarvo
näyttö ("Toinen luku on =", toinen_luku);
näyttö ("second_num << 2    =  ", result_2);
cout << endl;
paluu 0;

Esimerkki 6: Oikeansiirtonopeuden ohjain bittiä kohti

Näemme nyt toisen esimerkin ymmärtämään Bitwise Right Shift -operaattoria. Olemme ilmoittaneet kaksi kokonaislukutyyppistä numeroa, ensimmäinen_numero ja toinen_luku. Tällöin “first_num” on oikealle siirretty yhdellä bitillä ja ”second_num” on oikealle siirretty kahdella bitillä.

#sisältää
#sisältää
#sisältää
käyttämällä nimitilaa vakio;
// display () -toiminto
void-näyttö (merkkijono print_msg, int-numero)

bitset<16> myBitSet (numero);
cout << print_msg;
cout << myBitSet.to_string() << " (" << myBitSet.to_ulong() << ") " << endl;

int main ()

int ensimmäinen_luku = 7, toinen_luku = 9, tulos_1 = 0, tulos_2 = 0;
// Oikeasiirtonopeus bittinopeudella
tulos_1 = ensimmäinen_luku >> 1;
tulos_2 = toinen_luku >> 2;
// tulosta syötetyt numerot ja lähtöarvo
cout << endl;
näyttö ("Ensimmäinen numero on =", ensimmäinen_luku);
näyttö ("first_num >> 1 =", tulos_1);
cout << endl;
// tulosta syötetyt numerot ja lähtöarvo
näyttö ("Toinen luku on =", toinen_luku);
näyttö ("toinen_numero >> 2 =", tulos_2);
cout << endl;
paluu 0;

Esimerkki 7: Aseta bitti

Tässä esimerkissä on tarkoitus näyttää, kuinka tietty bitti asetetaan bittioperaattoreiden avulla.

#sisältää
#sisältää
#sisältää
käyttämällä nimitilaa vakio;
// display () -toiminto
void-näyttö (merkkijono print_msg, int-numero)

bitset<16> myBitSet (numero);
cout << print_msg;
cout << myBitSet.to_string() << " (" << myBitSet.to_ulong() << ") " << endl;

int main ()

int ensimmäinen numero = 7, toinen luku = 9;
// tulosta syötteen numero - ensimmäinen_numero
cout << endl;
näyttö ("Ensimmäinen numero on =", ensimmäinen_luku);
// Aseta viides bitti
ensimmäinen_num | = (1UL << 5);
// Tulostustulos
näyttö ("Aseta ensimmäisen bitin viides bitti =", ensimmäinen numero);
cout << endl;
// tulosta syötteen numero - toinen_numero
cout << endl;
display ("Toinen luku on =", toinen_luku); // Aseta 6. bitti
toinen_luku | = (1UL << 6);
// Tulostustulos
näyttö ("Aseta sekunninluvun 6. bitti =", sekunninumero);
cout << endl;
paluu 0;

Esimerkki 8: Tyhjennä bitti

Tässä esimerkissä on tarkoitus näyttää, kuinka tietty bitti tyhjennetään bittioperaattoreiden avulla.

#sisältää
#sisältää
#sisältää
käyttämällä nimitilaa vakio;
// display () -toiminto
void-näyttö (merkkijono print_msg, int-numero)

bitset<16> myBitSet (numero);
cout << print_msg;
cout << myBitSet.to_string() << " (" << myBitSet.to_ulong() << ") " << endl;

int main ()

int ensimmäinen numero = 7, toinen numero = 9;
// tulosta syötteen numero - ensimmäinen_numero
cout << endl;
näyttö ("Ensimmäinen numero on =", ensimmäinen_luku);
// Tyhjennä 2. bitti
ensimmäinen_numero & = ~ (1UL << 2);
// Tulostustulos
näyttö ("Aseta ensimmäisen bitin toinen bitti =", ensimmäinen_ luku);
cout << endl;
// tulosta syötteen numero - toinen_numero
cout << endl;
näyttö ("Toinen luku on =", toinen_luku);
// Tyhjennä kolmas bitti
toinen_luku & = ~ (1UL << 3);
// Tulostustulos
näyttö ("Set second bitn of second_num =", second_num);
cout << endl;
paluu 0;

Johtopäätös

Bittikohtaista operaattoria käytetään ensisijaisesti yksittäisten bittien käsittelyyn kokonaisluku- ja merkkitietotyypille. Bittikohtaista operaattoria käytetään voimakkaasti sulautettujen ohjelmistojen kehittämisessä. Joten jos kehität laiteohjainta tai järjestelmää, joka on hyvin lähellä laitteistotasoa, kannattaa ehkä käyttää näitä bittioperaattoreita.

Add Mouse gestures to Windows 10 using these free tools
In recent years computers and operating systems have greatly evolved. There was a time when users had to use commands to navigate through file manager...
Control & manage mouse movement between multiple monitors in Windows 10
Dual Display Mouse Manager lets you control & configure mouse movement between multiple monitors, by slowing down its movements near the border. Windo...
WinMouse lets you customize & improve mouse pointer movement on Windows PC
If you want to improve the default functions of your mouse pointer use freeware WinMouse. It adds more features to help you get the most out of your h...