Основи систем числення

Код

Чи задумувалися ви колись, чому в комп’ютерах використовують не звичні нам числа, а зовсім інші позначення?

Система числення – це спосіб запису чисел за допомогою певного набору символів і правил.

У цій статті розглянемо різні види систем числення та навчимося застосовувати їх на практиці. Подорож математичним літописом людства.

Від рахункових паличок до машинного коду

У роботі фахівців з кібербезпеки часто зустрічаються різні системи числення. Наприклад, під час аналізу логів вони стикаються з IP-адресами в різних форматах.

Ту саму IP-адресу 192.168.1.1 можна зустріти в двійковому вигляді як 11000000.10101000.00000001.00000001, а в шістнадцятковому – як C0.A8.01.01. Розуміння цих форматів допомагає аналізувати мережевий трафік і знаходити потенційні загрози.

Але що таке система числення? У цій статті ми зазирнемо в історію їхнього розвитку і розберемося, як переводити числа між різними системами.

Основні системи числення

Система числення – це математична мова, в якій ви можете використовувати символи для запису чисел за певними правилами.

Упродовж історії людства люди розробили безліч способів запису чисел, але сьогодні прийнято виділяти два основні типи:

  • Непозиційні системи – найдавніші системи числення, у яких значення символу залишається незмінним незалежно від його місця в числі. Наприклад, у римській системі символ X завжди позначає 10, незалежно від того, чи стоїть він на початку (XVI = 16) або в кінці (LX = 60).
  • Позиційні системи – системи числення, де значення цифри визначається її положенням у числі. Наприклад, у числі 333 кожна трійка має різне значення: перша означає 300, друга – 30, а третя – 3.

Кожна система числення має свою сферу застосування. Позиційні системи підходять для обчислень – скласти числа 23 і 45 простіше, ніж XXIII і XLV у римській системі. Непозиційні системи використовуються рідше – наприклад, у нумерації розділів книг (I, II, III) або позначенні століть (XX століття).

У наступних розділах ми розглянемо обидві системи числення. Почнемо з непозиційних систем і з’ясуємо, чому вони поступилися місцем позиційним. Після вивчимо позиційні системи – познайомимося з їхніми видами та навчимося конвертувати числа між різними форматами.

Непозиційні системи числення

Непозиційні системи числення сформувалися природним чином із розвитком людства. Ось основні передумови їхньої появи:

  • Стародавні цивілізації потребували надійного способу обліку товарів, землемірства, будівництва та астрономічних спостережень.
  • Розвиток писемності дозволив записувати числові значення.
  • Використання окремих символів для запису чисел виявилося інтуїтивно зрозумілим способом рахунку.

До найвідоміших непозиційних систем числення належать одинична, давньоєгипетська, римська, грецька та слов’янська. Далі ми розглянемо особливості та історичну значущість кожної з них.

Одинична система числення

Одинична система числення – це найпростіший спосіб запису чисел, у якому кількість позначається повторенням одного й того самого символу стільки разів, скільки одиниць міститься в числі. Вона виникла природним шляхом із процесу підрахунку предметів у період, коли складніші математичні концепції ще не існували.

Люди зображували предмети рахунку у вигляді різних символів: паличок, камінчиків, вузликів – усього, що було під рукою. Застосовувалася система в різних сферах: від стародавніх способів підрахунку днів за допомогою зарубок на дереві або камені до сучасного використання в простих іграх для ведення рахунку. Записати число в цій системі дуже просто – наприклад, число 5 записується як п’ять паличок (|||||), а число 3 – як три палички (|||).

Одинична система добре підходила для найпростіших арифметичних дій – додавання і віднімання. Однак під час роботи з великими числами виникав ризик помилок як у записі, так і в підрахунку. Наприклад, запис числа 100 вимагав би зображення ста окремих паличок. Саме тому в ході розвитку цивілізації люди перейшли до угруповання символів, що призвело до появи більш ефективних систем числення.

Давньоєгипетська десяткова система

Давньоєгипетська десяткова система – це система числення з основою 10. Вона була невід’ємною частиною життя стародавніх єгиптян і застосовувалася в торгівлі, будівництві пірамід, землеробстві та астрономії.

Для запису чисел використовувалися особливі символи: паличка (1), арка (10), моток мотузки (100), водяна лілія (1000), зігнутий палець (10 000), жаба або пуголовок (100 000) і людина з піднятими руками (1 000 000).

Стародавні єгиптяни не надавали особливого значення напрямку запису чисел – вони могли писати їх зліва направо, справа наліво або зверху вниз. Вчені виявили в них особливий знак, який виконував функції нуля – зображувався у вигляді серця з трахеєю. У бухгалтерських папірусах цей знак вказував на повну витрату коштів, а в кресленнях позначав рівень землі.

Єгиптяни також використовували дроби у своїх обчисленнях. Вони записували їх схожим на сучасний способом – розміщували над числом спеціальний ієрогліф у формі рота, який позначав частину цілого.

Римська система числення

Римська система числення – це система запису чисел за допомогою букв латинського алфавіту. В її основі лежить принцип додавання і віднімання значень символів, де кожна буква позначає певне число. Основні символи: I (1), V (5), X (10), L (50), C (100), D (500) і M (1000).

Кожне число – це послідовність символів, записана за певними правилами. Значення такого числа складається зі значень усіх його символів. Наприклад, число 32 записується як XXXII (30 + 2 = 32).

Якщо ліворуч від більшого символу стоїть менший, то його значення віднімається від більшого. Наприклад, число 48 записується як XLVIII: з 50 (L) віднімається 10 (X), після чого додається 5 (V) і 3 (III). Важливо зазначити, що ліворуч від більшого символу може стояти тільки один менший символ – запис XXL неприпустимий і не може позначати число 30.

У сучасному світі римські цифри використовують для позначення століть, розділів у книгах, годинників на циферблатах, а також порядкових номерів правителів і заходів – XXI століття, глава IV, Карл V, том III, Петро I.

Грецька та слов’янська системи

Грецька та слов’янська системи числення – алфавітні системи запису чисел, де числові значення передаються буквами. Грецька система використовувала грецький алфавіт, а слов’янська – кирилицю. Обидві системи застосовувалися в релігійних текстах, літописах і ділових документах.

У грецькій системі буква «альфа» означала 1, «бета» – 2, «йота» – 10, а в слов’янській системі буква «аз» означала 1, «веди» – 2, «і десятеричне» – 10. Для позначення тисяч застосовували спеціальний знак, а числове значення букви виділяли титлом (надрядковим знаком).

Числа записувалися зліва направо за спаданням – від більшого до меншого. Особливий випадок становили числа від 11 до 19: у них одиниці записувалися перед десятками.

Цей принцип можна побачити і в сучасній мові під час порівняння чисел різного порядку. Наприклад, коли ми говоримо «шістдесят один», спочатку називаємо десятки («шістдесят»), потім одиниці («один»). А в числі «шістнадцять» порядок зворотний – спочатку називаємо одиниці («шість»), потім числівник «надцять», що позначає додавання до десяти.

Головними перевагами цих систем були їхнє органічне злиття з писемністю і доступність для освічених людей того часу.

Позиційні системи числення

Незважаючи на свою історичну значущість, непозиційні системи числення мають суттєві недоліки, які призвели до їхньої заміни позиційними системами в більшості сфер застосування:

  • Складність арифметичних дій – наприклад, у римській системі множення і ділення вимагають складних поетапних обчислень.
  • Відсутність універсальності – кожна система вимагає унікального набору символів, що ускладнює міжнародну взаємодію.
  • Громіздкість – великі числа вимагають надмірно багато символів.

Позиційні системи, навпаки, дуже зручні: у них не виникає різночитань під час запису чисел, а кількість розрядів не має обмежень – можна записати будь-яке число, хоч би яким великим воно було.

Усі позиційні системи поділяються на дві основні категорії: однорідні та неоднорідні (змішані). Розглянемо особливості кожної з них.

Однорідні позиційні системи числення

Однорідна система числення – це позиційна система, у якій застосовується єдина основа для всіх розрядів числа. Значення числа в такій системі визначається як цифрами, так і їхньою позицією.

Кожна позиція в числі має свою «вагу» – це основа системи, зведена в ступінь, що дорівнює номеру позиції. Щоб отримати значення числа, потрібно помножити кожну цифру на «вагу» її позиції та скласти результати.

Найпоширенішими позиційними системами числення є двійкова, вісімкова, десяткова та шістнадцяткова.

Двійкова система числення

Це спосіб представлення чисел за допомогою всього двох символів: 0 і 1. У цій системі кожна позиція числа представляє ступінь двійки, починаючи з нульового ступеня справа наліво. Наприклад, число 42 у двійковій системі записується як 101010, де кожна позиція відповідає ступеню двійки (32 + 0 + 8 + 0 + 2 + 0 = 42).

Ця система набула широкого застосування в обчислювальній техніці:

  • Простота реалізації – електронні схеми ефективно працюють із двома станами: наявністю або відсутністю електричного струму.
  • Надійність – використання лише двох станів значно зменшує ймовірність помилок під час передавання та оброблення сигналів.
  • Економічність – обробка двійкових даних вимагає мінімуму компонентів: транзисторів, резисторів, конденсаторів і мікросхем.

Вісімкова система числення

Це спосіб запису чисел з використанням восьми цифр (від 0 до 7). У цій системі значення кожного розряду визначається множенням на відповідний ступінь числа 8. Наприклад, 147₈ у вісімковій системі можна розкласти так: 1 × 8² + 4 × 8¹ + 7 × 8⁰ = 64 + 32 + 7 = 103 у десятковій системі.

Вісімкова система була створена для спрощення роботи з двійковими числами завдяки більш компактному запису. Це було важливо на ранньому етапі розвитку комп’ютерної техніки, коли пам’ять була обмежена. Так, вісімкове число 7₈ відповідає двійковому 111₂, а 6₈ – числу 110₂.

У сучасних комп’ютерних системах вісімкова система числення застосовується, але поступається місцем шістнадцятковій. Шістнадцяткова система ефективніша для запису байтів – один байт даних можна представити всього двома шістнадцятковими знаками. Це робить її особливо зручною для низькорівневого програмування і налагодження.

Десяткова система числення

Це спосіб запису чисел за допомогою десяти цифр (від 0 до 9), у якому кожна позиція числа представляє певний ступінь десятки. Число 567 можна розкласти 5 × 10² + 6 × 10¹ + 7 × 10⁰, або записати простіше – 500 + 60 + 7.

Поява десяткової системи пов’язана з природним чинником – десятьма пальцями рук людини, які здавна слугували для лічби. Система широко поширилася в Індії у V-VI століттях нашої ери, звідки через арабських математиків прийшла до Європи. Арабські цифри замінили римські, що значно спростило складні математичні обчислення і заклало фундамент сучасної десяткової системи.

У нашому повсякденному житті десяткова система застосовується повсюдно – у торгівлі, банківській справі, науці та техніці. У грошових розрахунках ми використовуємо гривні та копійки (1 гривня = 100 копійок), а під час вимірювання температури – градуси Цельсія з десятими частками (наприклад, 36,6 °C). А ще для запису дробових чисел у нас є десяткова крапка або кома, які дозволяють виражати числа з будь-якою необхідною точністю.

Шістнадцяткова система числення

Це спосіб запису чисел з використанням 16 символів. Вона включає цифри від 0 до 9 і шість літер латинського алфавіту (A, B, C, D, D, E, F), які позначають числа від 10 до 15. Цю систему було створено спеціально для роботи з комп’ютерними даними, бо вона дає змогу компактно представляти двійкові числа.

Сьогодні шістнадцяткову систему застосовують у різних галузях:

  • У веб-розробці – для позначення кольорів у CSS. Наприклад, код #FF5733 позначає помаранчевий колір.
  • У криптографії – для представлення хеш-значень. Так, код 8A4B2C1D слугує для перевірки цілісності даних.
  • У мережевих технологіях – для запису IP-адрес. Наприклад, адреса 2001:0db8:85a3 використовується в протоколі IPv6.
  • В ігровій індустрії – для налагодження програм і тестування ігор, наприклад, код 0xDEADBEEF вказує на збій програмного забезпечення.
  • У системному програмуванні – для позначення помилок і станів системи, де код 0×0000FFFF вказує на тип збою.

Змішані системи числення

Неоднорідні, або змішані, системи числення – це особливий тип позиційних систем, де кожен розряд може мати свою основу. У таких системах числа записуються з різними базами, які залежать від позиції цифри. Ключова особливість полягає в тому, що вага кожної цифри обчислюється як добуток основ усіх молодших розрядів.

Розглянемо змішану систему, де кожен розряд має свою власну основу: перший розряд – 2, другий – 3, третій – 4 (записується як [2, 3, 4]). У такій системі число 123 розкладається таким чином:

  • Перша цифра (1) множиться на добуток усіх молодших основ:
    1 × (3 × 4) = 12.
  • Друга цифра (2) множиться на основу молодшого розряду: 2 × 4 = 8.
  • Третя цифра (3) множиться на 1: 3 × 1 = 3.
  • Сума всіх значень (12 + 8 + 3) дає число 23 в десятковій системі.

Вавилонська шістдесяткова система вважається однією з найдавніших змішаних систем. У ній використовуються символи від 0 до 59, а кожен розряд являє собою ступінь числа 60. Значення символу залежить від його позиції, при цьому кожен наступний розряд збільшує число в 60 разів.

Вавилонська система використовувала два основні символи: вертикальний клин для позначення одиниць і горизонтальний клин для десятків. Числа записувалися справа наліво, а новий розряд починався після певної комбінації цих символів.

Вертикальний клин мав подвійне значення – позначав як одиницю, так і число 60 з його ступенями, звідки й пішла назва «шістдесяткова система». Позиційний характер системи виявлявся в тому, що під час запису чисел, більших за 60, значення символу (1 або 60) визначалося його положенням у числі.

З розвитком торгівлі та астрономії вавилоняни почали записувати не тільки цілі числа, а й дроби. Для цього вони вдосконалили систему і додали додаткові розряди після цілої частини числа. Так з’явилася змішана форма запису: ціла частина записувалася в шістдесятковій системі, а кожен розряд дробової частини представляв поділ на 60.

Вавилонська система виявилася настільки ефективною, що стала основою безлічі сучасних вимірювальних приладів – від наручних годинників до високоточних навігаційних систем GPS.

Розглянемо сучасний годинник із точним часом. Наприклад, 10:45:30. У цьому форматі кожен компонент використовує свою систему числення: годинник відображається в 12- або 24-годинному форматі, а хвилини і секунди – у 60-ричній системі (від 0 до 59).

Переведення з однієї системи в іншу

Розробникам доводиться регулярно стикатися з різними системами числення. Ось кілька ситуацій, де потрібно виконувати перетворення:

  • Під час роботи з бітовими операціями і масками для оптимізації коду і поліпшення продуктивності програм. Наприклад, число 1111 у двійковій системі (0b1111) відповідає F у шістнадцятковій (0xF).
  • Під час аналізу та налагодження програм для ефективного управління пам’яттю і пошуку помилок. Приклад: адреса в пам’яті 4095 у десятковій системі відповідає 0xFFF у шістнадцятковій.
  • Під час налаштування мережевого обладнання для конфігурації та діагностики пристроїв. Наприклад, IP-адреса 127.0.0.0.1 у десятковому записі відповідає 7F.00.00.01 у шістнадцятковому.
  • У криптографії та захисті інформації для обробки і верифікації зашифрованих даних. Наприклад, ключ шифрування може бути представлений як у двійковому, так і в шістнадцятковому вигляді.
  • Під час роботи з колірними кодами у веб-розробці та графічному дизайні. Так, чистий синій колір RGB (0, 0, 255) у десятковій системі записується як #0000FF у шістнадцятковій.

Для переведення чисел між системами є три основні методи: ділення із залишком, множення з накопиченням і використання таблиць відповідності.

Метод ділення із залишком працює так: вихідне число ділимо на основу нової системи числення і записуємо залишок від ділення. Повторюємо ці дії з отриманою часткою доти, доки вона не стане рівною нулю. Потім записуємо всі залишки у зворотному порядку – це і буде результат. Переведемо число 83₁₀ у двійкову систему:

  • 83÷2 = 41 (залишок 1);
  • 41÷2 = 20 (залишок 1);
  • 20÷2 = 10 (залишок 0);
  • 10÷2 = 5 (залишок 0);
  • 5÷2 = 2 (залишок 1);
  • 2÷2 = 1 (залишок 0);
  • 1÷2 = 0 (залишок 1);
  • Результат: 83₁₀ = 1010011₂.

Метод множення з накопиченням – це спосіб переведення чисел у систему з більшою основою. Наприклад, із двійкової в десяткову. Метод складається з двох кроків. Спочатку нам потрібно взяти кожну цифру вихідного числа і помножити її на основу системи в ступені її позиції (позиції рахуємо справа наліво від нуля). Після цього просто складаємо всі отримані результати. Переведемо 101₂ у десяткову систему:

Метод множення з накопиченням – це спосіб переведення чисел у систему з більшою основою. Наприклад, із двійкової в десяткову. Метод виконується у два кроки: спочатку ми кожну цифру вихідного числа множимо на основу системи в ступені її позиції (позиції рахуються справа наліво, починаючи з нуля), а потім складаємо отримані результати.

Переведемо 101₂ у десяткову систему:

  • Перша цифра праворуч (1): 1 × 2⁰ = 1.
  • Середня цифра (0): 0 × 2¹ = 0.
  • Остання цифра (1): 1 × 2² = 4.
  • Складаємо: 4 + 0 + 1 = 5₁₀.

Таблиці відповідності – найпростіший метод перекладу чисел. Він заснований на готових таблицях, які показують відповідність цифр між різними системами числення. Ось кілька корисних ресурсів:

  • RapidTables – універсальний онлайн-конвертер для всіх основних систем числення.
  • BaseCalc – сервіс для переведення чисел між системами числення з основами від 2 до 36.
  • Online Binary-Decimal Converter – інструмент для швидкого перекладу між двійковими та шістнадцятковими числами.
  • Calculator.net – калькулятор з підтримкою шістнадцяткових, двійкових, десяткових і вісімкових обчислень.
  • Math Is Fun – корисний освітній ресурс з докладними поясненнями процесу конвертації чисел.
  • WolframAlpha – просунутий математичний ресурс, який не тільки конвертує числа, а й показує покрокове рішення.

На додаток до описаних методів можна використовувати можливості сучасних мов програмування, оскільки багато з них мають вбудовані функції для конвертації між системами числення.

Висновок

Уміння працювати з різними системами числення дозволяє без труднощів читати й перетворювати дані, особливо у програмуванні, техніці та при роботі з апаратним забезпеченням.

Це навичка, яка часто лежить в основі складніших обчислень – від переведення кольорів у CSS до розуміння адресації в мережах.

Павлов Максим

Founder & CEO Onpage School

Оцініть автора
Onpage School