У цій статті
Що таке двійкова арифметика?
Двійкова арифметика — це математика в системі числення з основою 2, що використовує лише цифри 0 та 1. Кожен цифровий комп'ютер обробляє дані як двійкові на апаратному рівні — цілі числа, числа з плаваючою комою, адреси пам'яті і навіть текст зберігаються та обробляються як послідовності бітів. Розуміння двійкової системи є необхідним для низькорівневого програмування, мережевих технологій та цифрової логіки.
Окрім простого додавання та віднімання, двійкова арифметика включає побітові операції: AND, OR, XOR, NOT та зсуви бітів. Ці операції працюють з окремими бітами і є фундаментальними для таких задач, як встановлення прапорів дозволів, обчислення контрольних сум, маскування IP-адрес та оптимізація критичного до продуктивності коду.
Як працюють побітові операції
Побітові оператори обробляють цілі числа біт за бітом. Кожна операція має таблицю істинності, що визначає вихід для кожної комбінації вхідних бітів.
- AND, OR, XOR — AND (&) повертає 1 лише коли обидва біти дорівнюють 1, OR (|) повертає 1 коли будь-який біт дорівнює 1, а XOR (^) повертає 1 коли біти різні. Використовуються для маскування, поєднання прапорів та перемикання бітів
- NOT та зсуви — NOT (~) інвертує всі біти, зсув вліво (<<) множить на степені 2, а зсув вправо (>>) ділить на степені 2. Арифметичний зсув вправо зберігає знаковий біт для від'ємних чисел
- Доповнення до двох — сучасні комп'ютери представляють від'ємні цілі числа за допомогою доповнення до двох, де -1 — це всі біти в 1. Це дозволяє одному і тому ж апаратному забезпеченню виконувати як додавання, так і віднімання без окремої схеми
Спробуйте безкоштовно — реєстрація не потрібна
Обчислити двійкові операції →Коли використовувати побітові операції
Побітові операції використовуються в системному програмуванні, мережевих технологіях та додатках, чутливих до продуктивності.
- Прапори дозволів — дозволи файлів Unix (rwxr-xr-x = 0755) використовують бітові поля, де кожен біт представляє конкретний дозвіл, перевірений за допомогою AND та встановлений за допомогою OR
- Маски підмережі — мережеві інженери використовують операції AND між IP-адресами та масками підмережі для визначення меж мережі та правильної маршрутизації трафіку
- Графіка та маніпулювання кольорами — кольори пікселів, збережені як цілі числа 0xRRGGBB, використовують зсуви бітів та маски для вилучення або зміни окремих червоного, зеленого та синього каналів
Поширені запитання
Яка різниця між знаковими та беззнаковими цілими числами?
Беззнакові цілі числа використовують усі біти для величини, тому 8-бітне беззнакове ціле число має діапазон від 0 до 255. Знакові цілі числа резервують старший біт для знаку (додатний або від'ємний), тому 8-бітне знакове ціле число має діапазон від -128 до 127 у доповненні до двох. Вибір впливає на поведінку операцій зсуву вправо та порівняння.
Чи зсув бітів є тим самим, що й множення або ділення на 2?
Зсув вліво на n позицій еквівалентний множенню на 2^n для невід'ємних цілих чисел. Зсув вправо ділить на 2^n, але поведінка для від'ємних чисел залежить від типу зсуву: арифметичний (зберігає знак) або логічний (заповнює нулями). У більшості мов >> є арифметичним для знакових типів, а >>> (де доступний) — логічним.
Чому побітові операції все ще актуальні в сучасному коді?
Побітові операції широко використовуються в прапорах функцій, системах дозволів, мережевих протоколах, криптографії, хеш-функціях, рендерингу графіки та стисненні даних. Вони виконуються за один такт процесора і не використовують додаткову пам'ять, що робить їх ідеальними для критичних до продуктивності шляхів. Сучасні фреймворки також використовують їх внутрішньо — React використовує їх для прапорів ефектів, а Linux — для дозволів файлів.