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

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до навігації Перейти до пошуку

Двійкова система числення — це позиційна система числення, база якої дорівнює двом та використовує для запису чисел тільки два символи: зазвичай 0 (нуль) та 1 (одиницю). Числа, представлені в цій системі часто називають двійковими або бінарними числами.

Для запису числа у двійковій системі числення використовується представлення цього числа за допомогою степенів числа 2.

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

Представлення[ред. | ред. код]

Двійкове число можна представити як послідовність будь-яких об'єктів, які можуть знаходитися в одному з двох можливих станів. Наприклад: Числа, що можуть приймати значення 0 або 1: 1 0 1 0 0 1 1

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

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

  • числа, що можуть приймати значення 0 або 1;
  • позиції, на яких можуть стояти хрестики або нулики: х о х о о х х;
  • вузли електричної схеми, які може бути, а може не бути зіструмлено;
  • ділянки магнітної стрічки, які можуть бути, чи не бути намагніченими.

Зазвичай, для позначення двійкових чисел використовують нулі та одиниці. Перші персональні комп'ютери для відображення чисел мали ряд електричних лампочок (кожна з яких, зрозуміло, може або світитися, або бути вимкненою).

Переваги:

  1. для її реалізації потрібні технічні пристрої з двома стійкими станами: є струм — немає струму; намагнічений — не намагнічений;
  2. представлення інформації за допомогою тільки двох станів надійно і завадостійко;
  3. можливе застосування апарату булевої алгебри для виконання логічних перетворень інформації;
  4. двійкова арифметика набагато простіша за десяткову.

Недолік: швидке зростання числа розрядів, необхідних для запису чисел.

Лічба у двійковій системі[ред. | ред. код]

Рахувати у двійковій системі не складніше, ніж у будь-якій іншій. Скажімо, у десятковій системі, коли число у поточному розряді сягає десяти, то розряд обнуляється і одиниця додається до старшого. Наприклад: 9 + 1 = 10, 44 + 7 = 51; Аналогічним чином у двійковій системі: коли число в розряді сягає двох — розряд обнуляється і одиниця додається до старшого розряду. Тобто: 1 + 1 = 10. Зверніть увагу, «10» у цьому записі — двійкове число, у десятковій системі це число записується як «2». А десяткове 9 + 1 = 10 у двійковій системі буде виглядати так: 1001 + 1 = 1010 (після додавання одиниці число в останньому розряді дорівнює двом, тож розряд обнуляється і одиниця додається до передостаннього (старшого) розряду).

Таблиця додавання[ред. | ред. код]

+ 0 1
0 0 1
1 1 10 (перенесення у старший розряд)

Приклад додавання «стовпчиком» (1410 + 510 = 1910 або 11102 + 1012 = 100112):

+ 1 1 1 0
1 0 1
1 0 0 1 1

Таблиця віднімання[ред. | ред. код]

- 0 1
0 0 1
1 1 (позика зі старшого розряду) 0

Таблиця множення[ред. | ред. код]

× 0 1
0 0 0
1 0 1

Приклад множення «стовпчиком» (1410 * 510 = 7010 або 11102 * 1012 = 10001102):

× 1 1 1 0
1 0 1
+ 1 1 1 0
1 1 1 0
1 0 0 0 1 1 0

Приклади[ред. | ред. код]

Приклад 1. Обчислити кількість інформації в слові «Інформатика» за умови, що для кодування використовується 32-значна абетка.

Розв'язок. Обчислимо кількість інформації, що відповідає 1 символу при використанні 32-значного алфавіту : 32 = 2х, х = 5 біт. Слово «Інформатика» складається з 11 символів, отримуємо 11* 5 = 55 (біт).

Приклад 2. Растровий графічний файл містить чорно-біле зображення з 2 градаціями кольору (чорний і білий) розміром 800 х 600 точок. Визначте необхідний розмір цього файлу у байтах для кодування кольору точок (без урахування службової інформації про формат, авторство, способи стиснення тощо).

Розв'язок. Оскільки сказано, що зображення двокольорове, отже, для вказівки кольору однієї точки досить двох значень, що кодують білий або чорний колір. Два значення можуть бути закодовані одним бітом. Обсяг графічного файлу розраховується по формулі V=i*k, де i — глибина кольору, а k — кількість точок.

Тоді розмір графічного файлу дорівнює 800 * 600 * 1 біт = 480 000 бітів, враховуючи, що 8 бітів = 1 байт отримуємо 480 000 / 8 = 60 000 байтів. У реальності в графічних документах окрім опису кольору точок є присутньою ще і службово-додаткова інформація (про формат запису, авторські права, способи стиснення).

Конвертування десяткових чисел у двійкові і навпаки[ред. | ред. код]

Для перетворення з двійкової системи в десяткову використовують таку таблицю ступенів основи 2:

1024 512 256 128 64 32 16 8 4 2 1

Починаючи з цифри 1 всі цифри множаться на два. Крапка, яка стоїть після 1, називається двійковою крапкою.

Конвертування двійкових чисел у десяткові[ред. | ред. код]

Припустимо, дано двійкове число 1100012. Для конвертування в десяткове запишіть його як суму за розрядами таким чином:

1 * 25 + 1 * 24 + 0 * 23 + 0 * 22 + 0 * 21 + 1 * 20 = 49

Теж саме але трохи по-іншому:

1 * 32 + 1 * 16 + 0 * 8 + 0 * 4 + 0 * 2 + 1 * 1 = 49

Можна записати у вигляді таблиці таким чином:

512 256 128 64 32 16 8 4 2 1
1 1 0 0 0 1
+32 +16 +0 +0 +0 +1

Пересувайтесь справа наліво. Під кожною двійковою одиницею напишіть її еквівалент у рядку нижче. Складіть отримані десяткові числа. Таким чином, двійкове число 1100012 рівнозначне десятковому 4910.

Конвертування дробових двійкових чисел у десяткові[ред. | ред. код]

Необхідно перевести число 1011010,1012 у десяткову систему. Запишемо число таким чином:

1*26 + 0*25 + 1*24 + 1*23 + 0*22 + 1*21 + 0*20 + 1*2-1 + 0*2-2 + 1*2-3 = 90,625

Теж саме але трохи по-іншому:

1 * 64 + 0 * 32 + 1 * 16 + 1 * 8 + 0 * 4 + 1 * 2 + 0 * 1 + 1 * 0,5 + 0 * 0,25 + 1 * 0,125 = 90,625

Або за допомогою таблиці:

64 32 16 8 4 2 1 0.5 0.25 0.125
1 0 1 1 0 1 0 , 1 0 1
+64 +0 +16 +8 +0 +2 +0 +0.5 +0 +0.125

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

0*2 + 1 = 1

1*2 + 0 = 2

2*2 + 1 = 5

5*2 + 1 = 11

11*2 + 0 = 22

22*2 + 1 = 45

45*2 + 1 = 91

Тобто в десятковій це число буде записано як 91.

Перетворнення дробової частини методом Горнера[ред. | ред. код]

Припустимо, нам потрібно перетворити число 21 на двійкове. Ви можете скористатися такою процедурою:

21 /2 = 10 з залишком 1

10 /2 = 5 без залишку 0

5 /2 = 2 з залишком 1

2 /2 = 1 без залишку 0

1 /2 = 0 з залишком 1

Отже, ми ділимо кожне частне на 2 і записуємо залишок на кінець двійкового запису. Продовжуємо поділ до тих пір, поки в частному не буде 0. Результат записуємо справа наліво. Тобто нижня цифра (1) буде самою лівою і т. д. В результаті отримуємо число 21 в двійковій запису: 10101.

Перетворення дробових десяткових чисел на двійкові[ред. | ред. код]

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

  • Дріб множиться на основу двійкової системи числення (2);
  • В отриманому добутку виділяється ціла частина, яка приймається як старший розряд числа в двійковій системі числення;
  • Алгоритм завершується, якщо дробова частина отриманого добутку дорівнює нулю або якщо досягнута необхідна точність обчислень. В іншому випадку обчислення тривають над дробовою частиною добутку.

Приклад: Потрібно перевести десяткове дробове число 206,116 в дробове двійкове число.

Переведення цілої частини дає 20610=110011102 за раніше описаним алгоритмом. Дробову частину 0,116 множимо на основу 2, заносячи цілі частини добутку у розряди після коми шуканого дробового двійкового числа:

0,116 • 2 = 0,232

0,232 • 2 = 0,464

0,464 • 2 = 0,928

0,928 • 2 = 1,856

0,856 • 2 = 1,712

0,712 • 2 = 1,424

0,424 • 2 = 0,848

0,848 • 2 = 1,696

0,696 • 2 = 1,392

0,392 • 2 = 0,784

і т. д.

Таким чином 0,11610 ≈ 0,00011101102

Отримаємо: 206,11610 ≈ 11001110,0001110110

Використання[ред. | ред. код]

У цифрових пристроях[ред. | ред. код]

Двійкова система використовується в цифрових пристроях, оскільки є найбільш простою і відповідає вимогам:

  • Що менше значень існує в системі, то простіше виготовити окремі елементи, які оперують цими значеннями. Зокрема, дві цифри двійкової системи числення можуть бути легко представлені багатьма фізичними явищами: наявний струм (струм більше порогової величини) — відсутній струм (струм менше порогової величини), індукція магнітного поля більше порогової величини чи ні (індукція магнітного поля менше порогової величини) і т. д.
  • Чим менша кількість станів у елемента, тим вища надійність і тим швидше пристрій може працювати. Наприклад, щоб закодувати три стани через величину напруги, струму або індукції магнітного поля, потрібно ввести два граничних значення і два компаратора.
  • Двійкова арифметика є досить простою. Простими є таблиці додавання і множення — основних дій над числами.

У цифровій електроніці одному двійковому розряду в двійковій системі числення відповідає (очевидно) один двійковий розряд двійкового регістра, тобто двійковий тригер з двома станами (0, 1).

У обчислювальній техніці широко використовується запис від'ємних двійкових чисел в доповняльному коді. Наприклад, число −510 може бути записано як −1012 але в 32-бітному комп'ютері зберігатиметься як 111111111111111111111111111110112.

В англійській системі числення[ред. | ред. код]

При вказівці лінійних розмірів в дюймах за традицією використовують двійкові дроби, а не десяткові, наприклад: 5¾″, 715/16″, 311/32″ і т.

Використання різних кодувань[ред. | ред. код]

У кодуванні ASCII на кожен символ відводиться 1 байт = 8 біт.

У кодуванні Unicode на кожен символ відводиться 2 байти = 16 біт.

Приклад 1. При кодуванні за допомогою Unicode знайти інформаційний обсяг фрази «Вчення — світло, а невчення — пітьма»!.

Рішення. Підрахуємо число символів в заданій фразі, враховуючи букви, пропуски і розділові (тире, кому, знак оклику) знаки. Всього символів — 33. Вичислимо розмір фрази : 33 * 2 = 66 байт = 528 біт.

Приклад 2. Повідомлення містить 4096 символів. Розмір повідомлення при використанні рівномірного коду склав 1/512 Мбайт. Знайти потужність алфавіту, за допомогою якого записано це повідомлення.

Рішення. Потужність алфавіту — кількість символів в алфавіті. Переведемо інформаційний розмір повідомлення у біти.

Для кодування одного символу відводиться

Тоді потужність алфавіту по формулі Р. Хартлі рівна N = 2i= 24= 16.

Приклад 3. Скільки секунд буде потрібно модему, що передає повідомлення із швидкістю 28 800 біт/с для передачі 100 сторінок тексту в 30 рядків по 60 символів кожна в кодуванні ASCII.

Рішення. У кодуванні ASCII кожен символ займає 8 біт або 1 байт.

Тоді обсяг тексту дорівнює 100 ∙ 30 ∙ 60 ∙ 8 = 1 440 000 бітів.

Для його передачі по модему знадобиться 1 440 000/28 800 = 50 секунд

Подання кількості інформації через різні одиницями вимірювання[ред. | ред. код]

1 біт — мінімальна неділима одиниця інформації.

8 біт складають 1 байт, таким чином1 байт = 8 біт

1 Кбайт = 1024 = 210байт

1 Мбайт = 1024 = 210Кбайт = 220байт

1 Гбайт = 1024 = 210Мбайт = 220Кбайт = 230байт

1 Пбайт = 1024 = 210Гбайт = 220Мбайт = 230Кбайт = 240байт

Приклад 1. Перевести 376832 біт в Кбайт.

Рішення 376832 біт = 376832 / 8 = 47104 байт = 47104 / 1024 = 46 Кбайт

Приклад 2. Перевести 37 Кбайт 515 Байт 3 біт у біт.

Рішення 37 Кбайт 515 байт 3 біт = 37 ∙ 1024 + 515 байт 3 біт = 38403 байт 3 біт = 38403 ∙ 8 +3 = 307227 біт.

Узагальнення[ред. | ред. код]

Двійкова система числення є комбінацією двійкової системи кодування і показниковою ваговою функцією з основою рівною 2. Слід зазначити, що число може бути записано в двійковому коді, а система числення при цьому може бути не двійковою, а з іншою основою. Приклад: двійково-десяткове кодування, в якому десяткові цифри записуються в двійковому вигляді, а система числення — десяткова.

Історія[ред. | ред. код]

  • В 1937 Клод Шеннон представив до захисту кандидатську дисертацію Символічний аналіз релейних і перемикальних схем в MIT, в якій булеву алгебру і двійкову арифметику було застосовно до електронних реле і перемикачів. На дисертації Шеннона по суті заснована вся сучасна цифрова техніка.

Примітки[ред. | ред. код]

  1. Sanchez, Julio; Canton, Maria P. (2007), Microcontroller programming: the microchip PIC, Boca Raton, Florida: CRC Press, с. 37, ISBN 0-8493-7189-9
  2. W. S. Anglin and J. Lambek, The Heritage of Thales, Springer, 1995, ISBN 0-387-94544-X
  3. Ordish George, Hyams, Edward. The last of the Incas: the rise and fall of an American empire. — Нью-Йорк : Барнс & Noble, 1996. — С. 80.
  4. Experts 'decipher' Inca strings. Архів оригіналу за 29 липня 2015. Процитовано 24 червня 2015.

Посилання[ред. | ред. код]

Див. також[ред. | ред. код]