Двійковий калькулятор
Виконуйте бінарне додавання, віднімання, множення та ділення. Конвертуйте між двійковою та десятковою системами. Безкоштовний математичний калькулятор.
Система двійкових чисел: як комп'ютери рахують
Система двійкових чисел (базовий 2) використовує лише дві цифри — 0 і 1 — називаються бітом (бінарним цифрою). Усі комп'ютери, смартфони та цифрові пристрої внутрішньо зберігають та обробляють усі дані у вигляді двійкових, оскільки електричні кола можуть надійно представляти дві різні станів: високий напругу (1) та низьку напругу (0).
Кожна позиція у двійковому числі представляє потужність 2, зростаючу з правого боку:
| Позиція | 2⁷ | 2⁶ | 2⁵ | 2⁴ | 2³ | 2² | 2¹ | 2⁰ |
|---|---|---|---|---|---|---|---|---|
| Значення | 128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 |
Перехід з двійкового до десяткового: Умножте кожен бітом його місце значення та підсумовуйте всі результати.
Наприклад: 10110101₂ = 1×128 + 0×64 + 1×32 + 1×16 + 0×8 + 1×4 + 0×2 + 1×1 = 128 + 32 + 16 + 4 + 1 = 181
Перехід з десяткового до двійкового: Періодично ділимо на 2, записуючи залишок на кожному етапі, потім читаємо залишки знизу вгору.
Наприклад: Переведіть 181 у двійковий:
- 181 ÷ 2 = 90 залишок 1
- 90 ÷ 2 = 45 залишок 0
- 45 ÷ 2 = 22 залишок 1
- 22 ÷ 2 = 11 залишок 0
- 11 ÷ 2 = 5 залишок 1
- 5 ÷ 2 = 2 залишок 1
- 2 ÷ 2 = 1 залишок 0
- 1 ÷ 2 = 0 залишок 1
Читайте залишки знизу вгору: 10110101₂ ✓
Двійкова арифметика: додавання, віднімання та множення
Двійкова арифметика дотримується тих же правил, що й десяткова, але переноси відбуваються при 2 замість 10.
Правила двійкового додавання: 0+0=0, 0+1=1, 1+0=1, 1+1=10 (перенос 1), 1+1+1=11 (перенос 1)
Наприклад: 1011₂ + 1101₂ (11 + 13 = 24)
1011 + 1101 ------ 11000
Робота зліва направо: 1+1=10 (запишіть 0, перенесіть 1); 1+0+1=10 (запишіть 0, перенесіть 1); 0+1+1=10 (запишіть 0, перенесіть 1); 1+1+1=11 (запишіть 1, перенесіть 1); кінцевий перенос записує 1. Результат: 11000₂ = 24 ✓
Дві комплементи (двійкове віднімання): Комп'ютери обробляють від'ємні числа та віднімання за допомогою двійкової представлення комплемента. Для знаходження двійкового комплемента числа: переверніть усі біти, потім додайте 1.
Наприклад: -13 у 8-бітному двійковому комплементі: +13 = 00001101₂ → переверніть усі біти → 11110010₂ → додайте 1 → 11110011₂
Це дозволяє виконувати віднімання як додавання: 20 - 13 = 20 + (-13).
Двійкове множення є елегантним: кожен частковий продукт або 0 (множення на 0) або саме число (множення на 1), зміщене вліво. Наприклад: 1011₂ × 101₂ (11 × 5 = 55):
1011
× 101
-----
1011 (1011 × 1)
0000 (1011 × 0, зміщено)
1011 (1011 × 1, зміщено двічі)
-------
110111₂ = 55 ✓
Двійкові дані у комп'ютерах: біти, байти та розміри даних
Зрозуміння двійкових одиниць є необхідним для будь-якої роботи з комп'ютерами, зберіганням або швидкостями мережі:
| Одиниця | Розмір | Максимальне значення (не від'ємне) | Звичайне використання |
|---|---|---|---|
| Біт | 1 бінарна цифра | 1 | Булеве прапороцвіття, окрема бінарна величина |
| Нібель | 4 біта | 15 (гекс: F) | Одна гексадециальна цифра |
| Байт | 8 біта | 255 | Одна символ (ASCII), канал кольору |
| Слово | 16 біта | 65 535 | Застарілий 16-бітові системи, Unicode базові |
| Двійне Слово (DWORD) | 32 біта | 4 294 967 295 | 32-бітові цілі, адреси IPv4 |
| Четверте Слово (QWORD) | 64 біта | 18 446 744 073 709 551 615 | Сучасні цілі, вказівники, часові метки |
Кольорові значення: Веб-кари використовують 24-бітовий RGB (8 біта на канал). #FF5733 = R:255, G:87, B:51. Кожен 8-бітовий канал може представляти 256 відтінків (0–255). Всього можливих кольорів: 256³ = 16 777 216 (приблизно 16,7 мільйона).
Правила доступу до файлів в Unix/Linux: rwxr-xr-- = 111 101 100 у біні = 7, 5, 4 у окталі = chmod 754. Кожна група з трьох біта представляє можливість читання (r=4), запису (w=2) та виконання (x=1) для власника, групи та інших.
Бітові операції та їх застосування
Бітові операції змінюють окремі біти в цілих числах. Вони є фундаментальними для низькоуровневого програмування, криптографії, мережевого програмування та високопродуктивного коду.
| Операція | Символ | Поведінка | Приклад |
|---|---|---|---|
| І | & | 1 якщо обидва біти є 1 | 1010 & 1100 = 1000 |
| ЛЮБИЙ | | | 1 якщо хоча б один біт є 1 | 1010 | 1100 = 1110 |
| ХОР | ^ | 1 якщо біти відрізняються | 1010 ^ 1100 = 0110 |
| НІ | ~ | Перевертання всіх бітів | ~1010 = 0101 |
| Лівий зміщення | << | Зміщення бітів вліво (×2 кожне зміщення) | 1011 << 1 = 10110 (×2) |
| Праве зміщення | >> | Зміщення бітів вправо (÷2 кожне зміщення) | 1011 >> 1 = 0101 (÷2) |
Практичні застосування:
- Бітове маскування: Перевірка, чи встановлений певний біт:
if (flags & 0b0100) { ... }— перевірка, чи встановлений біт 2. - Встановлення бітів:
flags = flags | 0b0100— встановлення біт 2 незалежно від поточного значення. - Скасування бітів:
flags = flags & ~0b0100— скасування біт 2 до 0. - Швидка множення/ділення на степені 2:
n << 3= n × 8;n >> 2= n ÷ 4. Бітові зміщення є операціями на рівні процесора, значно швидші за множення. - Перевірка парності/непарності:
if (n & 1) { /* не парне */ }— останній біт будь-якого непарного числа завжди є 1.
Сравнення системи чисел: Бінарна, Октальна, Десяткова, Гексадеційна
Інформатика використовує чотири системи чисел, кожна з яких підходить для різних контекстів:
| Система | База | Цифри | Звичайне використання |
|---|---|---|---|
| Бінарна (база-2) | 2 | 0, 1 | Операції процесора, зберігання даних, логіка |
| Октальна (база-8) | 8 | 0–7 | Права Unix на файли, старі системи |
| Десяткова (база-10) | 10 | 0–9 | Читабельні числа для людини |
| Гексадеційна (база-16) | 16 | 0–9, A–F | Адреси пам'яті, кольорові коди, машинний код |
Швидке перетворення: бінарна ↔ гексадеційна (4 бінарних цифри = 1 гексадеційна цифра):
| Бінарна | Гексадеційна | Десяткова | Бінарна | Гексадеційна | Десяткова |
|---|---|---|---|---|---|
| 0000 | 0 | 0 | 1000 | 8 | 8 |
| 0001 | 1 | 1 | 1001 | 9 | 9 |
| 0010 | 2 | 2 | 1010 | A | 10 |
| 0011 | 3 | 3 | 1011 | B | 11 |
| 0100 | 4 | 4 | 1100 | C | 12 |
| 0101 | 5 | 5 | 1101 | D | 13 |
| 0110 | 6 | 6 | 1110 | E | 14 |
| 0111 | 7 | 7 | 1111 | F | 15 |
Цей 4-бітовий групування робить гексадеційну дуже корисною як компактну нотацію для бінарних даних: значення 32-бітової змінної 11001010 00111111 10110101 00001100 набагато легше записувати як CA3FB50C.
Бінарна в мережах: Адреси IP та маски підсітки
Зрозуміння бінарної системи необхідне для мережевого інженера, оскільки адреси IPv4 є фундаментально 32-бітними бінарними числами, а підсіткування — процес, який ґрунтується цілком на бінарних операціях.
Адрес IPv4 типу 192.168.1.100 є читабельною нотацією для 32-бітного бінарного значення:
11000000.10101000.00000001.01100100
Маска підсітки визначає, який відділ адреси ідентифікує мережу, а який ідентифікує хоста. Маска підсітки 255.255.255.0 у бінарному вигляді є:
11111111.11111111.11111111.00000000
Бітовий ІВАН адреси IP та маски підсітки дає мережеву адресу:
| Компонент | Десяткова | Бінарна |
|---|---|---|
| Адреса IP | 192.168.1.100 | 11000000.10101000.00000001.01100100 |
| Маска підсітки | 255.255.255.0 | 11111111.11111111.11111111.00000000 |
| Мережа (ІВАН) | 192.168.1.0 | 11000000.10101000.00000001.00000000 |
Нотація CIDR (наприклад, /24) вказує, скільки лідуючих 1-бітів є в масці підсітки. Маска /24 має 24 одиниць, що слідують за 8 нулями, що дозволяє використовувати 2⁸ − 2 = 254 адреси хоста на підсітці. Маска /16 дозволяє використовувати 65 534 адреси хоста. Мережеві інженери використовують бінарну математику щодня для планування підсіток, розрахунків адрес розсилання та виявлення помилок маршрутизації.
{ “@context”: “https://schema.org”, “@type”: “Article”, “headline”: “Бітові операції та їх застосування”, “image”: “https://example.com/image.jpg", “description”: “Описує бітові операції та їх застосування в програмуванні та мережевому інженерію.”, “author”: { “@type”: “Person”, “name”: “Ім’я автора” }, “publisher”: { “@type”: “Organization”, “name”: “Назва видавництва”, “logo”: { “@type”: “ImageObject”, “url”: “https://example.com/logo.jpg" } }, “datePublished”: “2022-01-01”, “dateModified”: “2022-01-15” }
Бінарні операції в криптографії та безпеці
Сучасні алгоритми шифрування працюють цілком на рівні бінарних даних, змінюючи окремі біти за допомогою поєднань XOR, зміщення біта та заміщення операцій. Знання бінарних даних є воротком до розуміння роботи цифрової безпеки.
XOR-шифрування (основою сучасних шифрів): XOR має особливість — застосування його двічі з тим же ключем повертає початкове значення: A ⊕ K ⊕ K = A. Це робить XOR основою стрімних шифрів та одноразових шифрів.
Наприклад, шифрування байта 01001101 (буква 'M' за ASCII) за ключем 10110010:
- Плоскість: 01001101
- Ключ: 10110010
- XOR (шифрування): 11111111
- XOR знову з тим же ключем (відшифрування): 01001101 = 'M' ✓
Розміри ключів у сучасному шифруванні: AES-128 використовує 128-бітовий ключ, що означає, що існує 2¹²⁸ ≈ 3,4 × 10³⁸ можливих ключів — більше за кількість атомів спостережуваного Всесвіту. AES-256 використовує 256-бітові ключі з 2²⁵⁶ можливостями. навіть найшвидші суперкомп'ютери не можуть здійснити брут-форс цих просторів ключів. Кожне додаткове біте подвоює пошуковий простір, тому розмір ключа має значення експоненційно в криптографії.
Хеш-функції, такі як SHA-256, видають 256-бітовий (32-байтовий) бінарний вихід з будь-якого вхідного даних. навіть зміна одного біта вхідних даних призводить до повністю різних хешів — властивість, яку називають «авальанс-ефектом», яка робить хеші корисними для перевірки цілісності даних, зберігання паролів та створення технології блокчейна.
Бінарні дані та квантові обчислення: Хоча класичні комп'ютери використовують бінарні біти (0 або 1), квантові комп'ютери використовують квібіти, які можуть існувати в суперпозиції обох станів одночасно. Класичний 256-бітовий ключ має 2²⁵⁶ можливих значень, які необхідно перевірити послідовно; квантовий комп'ютер, що працює за алгоритмом Гровера, міг би здійснити пошук цього простору за √(2²⁵⁶) = 2¹²⁸ операцій. Це чому розробляється постквантова криптографія — для створення бінарних шифрувальних схем, які залишаються безпечними навіть проти квантових супротивників.
Часто запитані питання
Чому комп'ютери використовують бінарну систему замість десяткової?
Електронні кола найбільш надійні при використанні лише двох різних станів: включено (високий напруга ≈ 1) і вимкнено (низька напруга ≈ 0). Представлення 10 різних станів для десяткової системи вимагало б набагато більш точного контролю напруги і було б набагато більш схильне до електричного шуму. Бінарна система простота дозволяє мільярдам транзисторів працювати надійно зі швидкістю ГГц зі мільярдами операцій на секунду.
Які найбільші числа можуть зберігати байти?
Байт (8 біта) може представляти 2⁸ = 256 різних значень. Для неоголошених цілих чисел: 0 до 255. Для підписаних цілих чисел (дві комплементи): -128 до 127. Максимальне неоголошене значення байта у бінарній формі становить 11111111₂ = 255; у формі шістнадцятирічної системи воно становить FF.
Як перетворити негативне число на бінарну систему?
Використовуйте дві комплементи: (1) Перетворіть позитивну версію на бінарну, (2) Переверніть всі біти (0→1, 1→0), (3) Додайте 1. Приклад — -13 у 8-бітній системі: +13 = 00001101₂, переверніть біти = 11110010₂, додайте 1 = 11110011₂. Так усі сучасні комп'ютери зберігають негативні цілі числа.
Які різниці між бінарною і шістнадцятирічною системами?
Обидві є позиційними числовими системами, використовуваними в обчисленнях. Бінарна (основана на 2) використовує лише 0 і 1 — рідну мову комп'ютерів. Шістнадцятирічна (основана на 16) використовує 0–9 і A–F як компактну нотацію для бінарної системи — кожні 4 бінарні цифри відповідають точно 1 шістнадцятирічній цифрі. Шістнадцятирічна використовується для адрес пам'яті, кольорових кодів (#RRGGBB) і машинного коду тому, що вона більш компактна і легка для читання ніж бінарна система.
Які операції над бітом використовуються?
Бітові операції (AND, OR, XOR, NOT, зміщення) змінюють окремі біти в цілих числах. Поширені застосування: флаги і права доступу (Unix chmod), перевірка парності (n & 1), швидка множення/ділення на степені 2 (зміщення біта), алгоритми шифрування, функції хешування, перевірка помилок CRC, мережеві маски підсітки, розробка ігор (компактне зберігання стану в одному цілі числі).
Що таке бінарна система з плаваючою точкою і чому 0,1 + 0,2 ≠ 0,3 у програмуванні?
Більшість сучасних комп'ютерів використовують бінарну систему з плаваючою точкою згідно IEEE 754, яка представляє десяткові дробі у бінарній формі. Так само як 1/3 = 0,3333... не може бути представлений точно у десятковій системі, 1/10 не може бути представлений точно у бінарній системі (це нескінченна бінарна дробова частина). Це викликає дуже маленькі помилки округлення: у більшості мов програмування 0,1 + 0,2 = 0,30000000000000004. Використовуйте цілісну арифметику (робіть розрахунки в центи, а не в доларах) або бібліотеки десяткової системи для точних фінансових розрахунків.
Як бінарна система використовується у зберіганні даних і розмірах файлів?
Зберігання вимірюється у байтах (8 біта), кілобайтах (1 024 байти), мегабайтах (1 024 кілобайтів), гігабайтах (1 024 мегабайтів) тощо. Зверніть увагу: виробники жорстких дисків використовують префікси SI (1 кілобайт = 1 000 байтів), тоді як операційні системи використовують бінарні префікси (1 Кіб = 1 024 байти), що викликає помилковий дисбаланс при купівлі зберігання. 1-терабайтовий диск показує ~931 Гіб у Windows тому що 1 000 000 000 000 ÷ 1 073 741 824 ≈ 931.
Що таке бінарна система з кодуванням десяткових цифр (BCD)?
BCD кодує кожну десяткову цифру як групу з 4 біта: 0=0000, 1=0001, ..., 9=1001. Така десяткова система 93 у BCD є 1001 0011. BCD використовується у фінансових системах (виключаючи помилки округлення у десятковій системі), цифрових годинниках і дисплеях (7-сегментні дисплеї розшифровують BCD безпосередньо) і старих системах основних кадрів. Вона менше ефективна ніж чиста бінарна система але видаляє помилки перетворення десяткової системи на бінарну у критичних застосуваннях.