Lühiülevaade Bitwise operaatoritest
Operaator on sümbol, mis käsib kompilaatoril teha teatud matemaatilisi või loogilisi toiminguid. C ++ keeles on mitut tüüpi operaatoreid, näiteks:
- Aritmeetikaoperaatorid
- Loogilised operaatorid
- Suheteoperaatorid
- Ülesandeoperaatorid
- Bitipõhised operaatorid
- Muud operaatorid
Kõik Bitwise operaatorid töötavad individuaalsete bitide tasemel. Bitipõhist operaatorit saab rakendada ainult täis- ja tähemärgi andmetüüpidele. Näiteks kui teil on täisarvu tüübi muutuja suurusega 32 bitti ja rakendate toimingut bitipidi EI, rakendatakse kõigi 32-bitiste bittide kaupa operaatorit. Nii et lõpuks muutuvad kõik muutuja 32 bitti.
C ++ versioonis on saadaval kuus erinevat bitipõhist operaatorit:
- Pikkade kaupa VÕI [tähistatud kui "|"]
- Pikkade kaupa AND [tähistatud kui “&”]
- Pikkade kaupa EI [tähistatud kui "~"]
- Bititi XOR [tähistatud tähega “^”]
- Biti kaupa vasak nihe [tähistatud kui “<<”]
- Parempoolne nihe paremal [tähistatud kui “>>”]
Bititi VÕI tõe tabel
Operaator Bitwise OR toodab 1, kui vähemalt üks operand on seatud väärtusele 1. Siin on operaatori Bitwise OR tõetabel:
Bitt-1 | Bitt-2 | Bitt-1 | Bitt-2 |
---|---|---|
0 | 0 | 0 |
0 | 1 | 1 |
1 | 0 | 1 |
1 | 1 | 1 |
Pikkade ja tõde tabel
Biti kaupa annab AND operaatori 1, kui mõlemad operandid on seatud 1-le. Siin on operaatori Bitwise AND tõetabel:
Bitt-1 | Bitt-2 | Bit-1 ja Bit-2 |
---|---|---|
0 | 0 | 0 |
0 | 1 | 0 |
1 | 0 | 0 |
1 | 1 | 1 |
Bititi EI tõde tabel
Operaator Bitwise EI pöörab operandi ümber. Siin on operaatori Bitwise NOT tõetabel:
Bitt-1 | ~ Bit-1 |
---|---|
0 | 1 |
1 | 0 |
Bitu XOR-i tõetabel
Biti XOR operaator toodab 1 siis ja ainult siis, kui üks operandidest on seatud 1-le. Siin on operaatori Bitwise AND tõetabel:
Bitt-1 | Bitt-2 | Bit-1 ^ Bit-2 |
---|---|---|
0 | 0 | 0 |
0 | 1 | 1 |
1 | 0 | 1 |
1 | 1 | 0 |
Biti kaupa vasakpoolse vahetuse operaator
Vasakpoolse nihke vasakpoolne nihe operaator nihutab kõik bitid määratud arvu määratud bitide võrra. Kui lahkusite kõigi andmebittide nihutamisest 1-ga, korrutatakse algandmed 2-ga. Samamoodi, kui vasakule nihutate kõik andmebitid 2-ga, korrutatakse algandmed 4-ga.
Parempoolse vahetuse operaator
Operaator Bitwise Right Shift nihutab kõik bitid paremale määratud arvu määratud bitide võrra paremale. Kui nihutate kõik andmebitid paremale ühe võrra, jagatakse algandmed (täisarvude jagamine) 2-ga. Samamoodi, kui muudate kõik andmebitid paremale 2 võrra, jagatakse algandmed (täisarvu jagamine) 4-ga.
Näited
Kuna oleme mõistnud bitipõhiste toimingute põhimõiste, vaatame paari näidet, mis aitavad teil mõista bitipõhiseid toiminguid C ++ -s:
- Näide 1: bitipõhine VÕI operaator
- Näide 2: bitipõhine JA operaator
- Näide-3: bittide kaupa EI operaator
- Näide 4: Operaator bitipidi XOR
- Näide 5: vasakpoolse vahetuse operaator
- Näide 6: parempoolse vahetuse operaator
- Näide 7: biti määramine
- Näide-8: tühjendage bitt
Näited 7 ja 8 on mõeldud bitipõhiste operaatorite reaalse kasutamise demonstreerimiseks C ++ programmeerimiskeeles.
Näide 1: bitipõhine VÕI operaator
Selles näidisprogrammis demonstreerime operaatorit Bitwise OR.
# kaasata# kaasata
# kaasata
nimeruumi kasutamine std;
// funktsioon display ()
tühine kuva (stringi print_msg, int number)
bitset<16> myBitSet (number);
cout << print_msg;
cout << myBitSet.to_string() << " (" << myBitSet.to_ulong() << ") " << endl;
int main ()
int esimene_arv = 7, teine = 9, tulemus = 0;
// Toiming bititi või OR
tulemus = esimene_arv | teine_num;
// printige sisendnumbrid
cout << endl;
kuva ("Esimene number on =", esimene_arv);
kuva ("Teine number on =", teine_arv);
// printida väljundväärtus
kuva ("esimene_num | teine_number =", tulemus);
cout << endl;
tagastama 0;
Näide 2: bitipõhine JA operaator
Selles näidisprogrammis illustreerime operaatorit Bitwise AND.
# kaasata# kaasata
# kaasata
nimeruumi kasutamine std;
// funktsioon display ()
tühine kuva (stringi print_msg, int number)
bitset<16> myBitSet (number);
cout << print_msg;
cout << myBitSet.to_string() << " (" << myBitSet.to_ulong() << ") " << endl;
int main ()
int esimene_arv = 7, teine = 9, tulemus = 0;
// Toiming bititi ja AND
tulemus = esimene_number & teine_num;
// printige sisendnumbrid
cout << endl;
kuva ("Esimene number on =", esimene_arv);
splay ("Teine number on =", teine_arv);
// printida väljundväärtus
kuva ("first_num & second_num =", tulemus);
cout << endl;
tagastama 0;
Näide-3: bittide kaupa EI operaator
Selles näidisprogrammis saame aru, kuidas operaator Bitwise NOT C-s töötab++.
# kaasata# kaasata
# kaasata
nimeruumi kasutamine std;
// funktsioon display ()
tühine kuva (stringi print_msg, int number)
bitset<16> myBitSet (number);
cout << print_msg;
cout << myBitSet.to_string() << " (" << myBitSet.to_ulong() << ") " << endl;
int main ()
int esimene_arv = 7, teine_arv = 9, tulemus_1 = 0, tulemus_2 = 0;
// Bititi EI toimi
tulemus_1 = ~ esimene_arv;
tulemus_2 = ~ teine_arv;
// printige sisendnumbrid ja väljundväärtus
cout << endl;
kuva ("Esimene number on =", esimene_arv);
kuva ("~ esimene_num =", tulemus_1);
cout << endl;
// printige sisendnumbrid ja väljundväärtus
kuva ("Teine number on =", teine_arv);
kuva ("~ second_num =", tulemus_2);
cout << endl;
tagastama 0;
Näide 4: Operaator bitipidi XOR
Selle programmi eesmärk on selgitada, kuidas operaator Bitwise XOR töötab C-s++.
# kaasata# kaasata
# kaasata
nimeruumi kasutamine std;
// funktsioon display ()
tühine kuva (stringi print_msg, int number)
bitset<16> myBitSet (number);
cout << print_msg;
cout << myBitSet.to_string() << " (" << myBitSet.to_ulong() << ") " << endl;
int main ()
int esimene_arv = 7, teine = 9, tulemus = 0;
// Operatsioon bitipidi XOR
tulemus = esimene_num ^ teine_num;
// printige sisendnumbrid
cout << endl;
kuva ("Esimene number on =", esimene_arv);
kuva ("Teine number on =", teine_arv);
// printida väljundväärtus
kuva ("esimene_num ^ teine_num =", tulemus);
cout << endl;
tagastama 0;
Näide 5: vasakpoolse vahetuse operaator
Nüüd näeme operaatori Bitwise Left Shift näidet. Selles programmis oleme deklareerinud kaks täisarvu numbrit: esimene_arv ja teine_arv. Siin nihutatakse “first_num” vasakule ühe bitiga ja “second_num” vasakule kahe biti võrra.
# kaasata# kaasata
# kaasata
nimeruumi kasutamine std;
// funktsioon display ()
tühine kuva (stringi print_msg, int number)
bitset<16> myBitSet (number);
cout << print_msg;
cout << myBitSet.to_string() << " (" << myBitSet.to_ulong() << ") " << endl;
int main ()
int esimene_arv = 7, teine_arv = 9, tulemus_1 = 0, tulemus_2 = 0;
// Vasakpoolse nihutamise toiming bitipidi
tulemus_1 = esimene_arv << 1;
tulemus_2 = teine_arv << 2;
// printige sisendnumbrid ja väljundväärtus
cout << endl;
kuva ("Esimene number on =", esimene_arv);
kuva ("esimene_num << 1 = ", result_1);
cout << endl;
// printige sisendnumbrid ja väljundväärtus
kuva ("Teine number on =", teine_arv);
kuva ("teine_num << 2 = ", result_2);
cout << endl;
tagastama 0;
Näide 6: parempoolse vahetuse operaator
Nüüd näeme operaatori Bitwise Right Shift mõistmiseks veel ühte näidet. Oleme deklareerinud kaks täisarvu numbrit: esimene_arv ja teine_arv. Siin nihutatakse “first_num” ühe bitiga paremale ja “second_num” paremale kahe bitiga.
# kaasata# kaasata
# kaasata
nimeruumi kasutamine std;
// funktsioon display ()
tühine kuva (stringi print_msg, int number)
bitset<16> myBitSet (number);
cout << print_msg;
cout << myBitSet.to_string() << " (" << myBitSet.to_ulong() << ") " << endl;
int main ()
int esimene_arv = 7, teine_arv = 9, tulemus_1 = 0, tulemus_2 = 0;
// Operatsioon biti kaupa paremale
tulemus_1 = esimene_arv >> 1;
tulemus_2 = teine_arv >> 2;
// printige sisendnumbrid ja väljundväärtus
cout << endl;
kuva ("Esimene number on =", esimene_arv);
kuva ("esimene_num >> 1 =", tulemus_1);
cout << endl;
// printige sisendnumbrid ja väljundväärtus
kuva ("Teine number on =", teine_arv);
kuva ("teine_arv >> 2 =", tulemus_2);
cout << endl;
tagastama 0;
Näide 7: biti määramine
Selles näites kavatsetakse näidata, kuidas seada konkreetne bitt bitipõhiste operaatorite abil.
# kaasata# kaasata
# kaasata
nimeruumi kasutamine std;
// funktsioon display ()
tühine kuva (stringi print_msg, int number)
bitset<16> myBitSet (number);
cout << print_msg;
cout << myBitSet.to_string() << " (" << myBitSet.to_ulong() << ") " << endl;
int main ()
int esimene_arv = 7, teine = 9;
// printige sisendnumber - esimene_arv
cout << endl;
kuva ("Esimene number on =", esimene_arv);
// Määra 5. bit
esimene_arv | = (1UL << 5);
// Prindiväljund
kuva ("Määra first_num = 5. bitt =", first_num);
cout << endl;
// printige sisendnumber - second_num
cout << endl;
display ("Teine number on =", teine_arv); // Määra 6. bit
teine_arv | = (1UL << 6);
// Prindiväljund
kuva ("Määra 6. bitt sekundi_arv =", teine_arv);
cout << endl;
tagastama 0;
Näide-8: tühjendage bitt
Selles näites kavatsetakse näidata, kuidas konkreetne bit tühistada bitipõhiste operaatorite abil.
# kaasata# kaasata
# kaasata
nimeruumi kasutamine std;
// funktsioon display ()
tühine kuva (stringi print_msg, int number)
bitset<16> myBitSet (number);
cout << print_msg;
cout << myBitSet.to_string() << " (" << myBitSet.to_ulong() << ") " << endl;
int main ()
int esimene_arv = 7, teine = 9;
// printige sisendnumber - esimene_arv
cout << endl;
kuva ("Esimene number on =", esimene_arv);
// Kustuta 2. bitti
esimene_arv & = ~ (1UL << 2);
// Prindiväljund
kuva ("Määra esimese bitinumbri =", esimene_arv ");
cout << endl;
// printige sisendnumber - second_num
cout << endl;
kuva ("Teine number on =", teine_arv);
// Kustuta 3. bitti
teine_arv & = ~ (1UL << 3);
// Prindiväljund
kuva ("Määra sekundi_arv = 3. nupp =", teine_arv);
cout << endl;
tagastama 0;
Järeldus
Bitipõhist operaatorit kasutatakse peamiselt täis- ja tähemärgi andmetüübi üksikute bitide manipuleerimiseks. Bitipõhist operaatorit kasutatakse palju sisseehitatud tarkvara arendamisel. Niisiis, kui arendate seadme draiverit või riistvaratasemele väga lähedast süsteemi, võiksite kasutada neid bitipõhiseid operaatoreid.