У C++ присутні різні оператори. Кожен Оператор має певний символ, а також Операцію для виконання. У C++ є різні категорії операторів.
- Арифметичні оператори
- Оператори відношення
- Логічні оператори
- Оператори присвоєння
- Порозрядні оператори
У цій статті ми дізнаємося про побітові оператори в C++.
Порозрядні оператори C++
Порозрядні оператори — це оператори, які використовуються для виконання операцій на бітовому рівні над цілими числами. При виконанні цієї операції цілі числа розглядаються як послідовності двійкових цифр. У C++ є різні типи побітових операторів.
- Побітове І (&)
- Побітове АБО (|)
- Побітове XOR (^)
- Побітове НІ (~)
- Ліворуч (<<)
- Правий зсув (>>)
1. Порозрядне І (&)
Порозрядна операція І виконується між двома цілими числами. Вона порівнює кожен біт на тій самій позиції, а біт результату буде встановлено (1) лише тоді, коли встановлено обидва відповідні біти (1). Символом, який використовується для виконання порозрядної операції І, є &.
приклад : ми виконаємо побітову операцію між двома числами 7 і 4. У двійковому вигляді 7 буде представлено як 111, а 4 буде представлено як 100.
1 1 1 & 1 0 0 ------ 1 0 0>
як ми можемо бачити в наведеному вище прикладі, лише ті біти є встановленими, чиї відповідні біти (обидва) встановлені. Тому 7&4=4
2. Порозрядне АБО (|)
Якщо операція порозрядного АБО виконується між двома цілими числами, вона порівнює кожен біт на одній позиції, і біт результату буде встановлено (1), якщо встановлено будь-який із відповідних бітів (1). Символом, який використовується для виконання побітової операції АБО, є |.
приклад: ми виконаємо порозрядну операцію АБО між двома числами 7 і 4. У двійковій системі 7 буде представлено як 111, а 4 буде представлено як 100.
1 1 1 | 1 0 0 ------ 1 1 1>
як ми бачимо у прикладі вище, ці біти є встановленими бітами, у яких встановлено принаймні будь-який відповідний біт. Тому 7|4=7.
3. Побітове XOR (^)
Якщо побітова операція XOR виконується між двома цілими числами, вона порівнює кожен біт на тій самій позиції, і біт результату буде встановлено (1), якщо будь-який із відповідних бітів відрізняється, тобто один із них має бути 1, а інший має бути нулем. Символом, який використовується для виконання порозрядної операції XOR, є ^.
приклад: ми виконаємо порозрядну операцію XOR між двома числами 7 і 4. У двійковій системі 7 буде представлено як 111, а 4 буде представлено як 100.
1 1 1 ^ 1 0 0 ------ 0 1 1>
як ми бачимо у прикладі вище, ці біти є встановленими бітами, відповідні біти яких відрізняються. Тому 7^4=3.
4. Побітово НІ (~)
Побітова операція НЕ виконується над одним числом. Він змінює поточний біт на його доповнення, тобто якщо поточний біт дорівнює 0, то в результаті він буде 1, а якщо поточний біт дорівнює 1, то він стане 0. Це позначається символом ~.
приклад: Ми виконаємо побітову операцію НЕ над числом 4. Число 4 представлено як 100 у двійковій системі.
~ 1 0 0 ------ 0 1 1>
Як ми бачимо в результаті, біти, початкове значення яких було 1, є 0 у результаті, і навпаки. Тому порозрядне НЕ числа 4 буде 3.
5.Лівий Shift (<<)
Цей оператор зсуває біти Integer ліворуч на певне число (як згадувалося). Ця операція зсуву вліво еквівалентна множенню цілого числа на 2 степеня кількості зміщених позицій. Символ, який використовується для представлення оператора зсуву вліво, — <<.
приклад: Уявіть, що у нас є ціле число 5, і ми зрушимо його біти вліво на 2 позиції. Операція буде представлена як x << 2.
Число 5 представлено як 101 у двійковій системі. Ми додамо кілька нулів на початку, щоб зсунути біти вліво. Тому він буде представлений як 00000101. Тепер ми перемістимо всі біти на дві позиції ліворуч і заповнимо порожні позиції 0. Таким чином, це стане 00010100, що дорівнює 20. Як згадувалося раніше, зсув числа вліво на два біти означає множення його на 2, збільшене до 2, що дорівнює 4. 5*4 = 20 показує згадане вище твердження.
6. Правий Shift (>>)
Цей оператор зсуває біти Integer праворуч на певне число (як згадувалося). Ця операція зсуву вправо еквівалентна діленню цілого числа на 2 степеня кількості зміщених позицій. Символ, який використовується для представлення оператора зсуву вліво, —>>.
приклад: Припустімо, що у нас є ціле число 16, і ми змістимо його біти вправо на 2 позиції. Операція буде представлена як x>> 2.
Число 16 представлено як 10000 у двійковій системі. Ми додамо кілька нулів на початку, щоб зсунути біти вправо. Тому він буде представлений як 00010000. Тепер ми перемістимо всі біти на дві позиції праворуч і заповнимо порожні позиції 0. Таким чином, це стане 00000100, що дорівнює 4. Як згадувалося раніше, зсув числа вправо на два біти означає ділення його на 2, збільшене до 2, що дорівнює 4. 16*4 = 4 показано вищезгадане твердження.
Побітові оператори програми C++
Нижче представлена реалізація теми:
C++ // C++ Program to demonstrate // Bitwise Operator #include using namespace std; // Main function int main() b; // Bitwise XOR int bitwise_xor = a ^ b; // Bitwise NOT int bitwise_not = ~a; // Bitwise Left Shift int left_shift = a << 2; // Bitwise Right Shift int right_shift = a>> 1; // Друк результатів // Побітових операторів cout<< 'AND: ' << bitwise_and << endl; cout << 'OR: ' << bitwise_or << endl; cout << 'XOR: ' << bitwise_xor << endl; cout << 'NOT a: ' << bitwise_not << endl; cout << 'Left Shift: ' << left_shift << endl; cout << 'Right Shift: ' << right_shift << endl; return 0;>
Вихід:
AND: 1 OR: 7 XOR: 6 NOT a: -6 Left Shift: 20 Right Shift: 2>
Висновок
Підсумовуючи, побітові оператори використовуються для виконання операцій на двійковому (бітовому) рівні. У C++ ми маємо різні види побітових операторів, як І, АБО, XOR, НЕ, оператори зсуву вліво та вправо. За допомогою цих операцій маніпуляції з окремими бітами можуть бути виконані дуже точно, що важливо при обробці даних низького рівня.