Двоїчний код. Види і довжина двійкового коду. Зворотний двійковий код

Двоїчний код. Види і довжина двійкового коду. Зворотний двійковий код

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

Як складається двійкова форма запису?

Давайте розберемося, яким чином формується такий ключ. Один розряд двійкового коду може містити всього два стани: нуль і одиницю (0 і 1). При використанні двох розрядів з 'являється можливість записати чотири значення: 00, 01, 10, 11. Трирозрядний запис містить вісім станів: 000, 001 … 110, 111. У результаті отримуємо, що довжина двійкового коду залежить від числа розрядів. Цей вираз можна записати за допомогою наступної формули: N = 2m, де: m - це кількість розрядів, а N - число комбінацій.


Види двійкових кодів

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

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

  • беззнакові;
  • прямі цілиякові коди;
  • знакові зворотні;
  • знакові додаткові;
  • код Грея;
  • код Грея-Експрес.;
  • дробові коди.

Розгляньмо більш детально кожен з них.

Беззнаковий двійковий код

Давайте розберемося, що ж являє собою такий вид запису. У цілих беззнакових кодах кожен розряд (двійковий) представляє ступінь цифри два. При цьому найменше число, яке можна записати в такій формі, дорівнює нулю, а максимальне можна уявити наступною формулою: М = 2п-1. Ці два числа повністю визначають діапазон ключа, яким можна виразити такий двійковий код. Розгляньмо можливості згаданої форми запису. При використанні цього виду без знаку ключа, що складається з восьми розрядів, діапазон можливих чисел складе від 0 до 255. Шістнадцятирозрядний код матиме діапазон від 0 до 65535. У восьмирозрядних процесорах для зберігання і запису таких чисел використовують два сектори пам 'яті, які розташовуються в сусідніх адресатах. Роботу з такими ключами забезпечують спеціальні команди.

Прямі цілі знакові коди

У даному вигляді двійкових ключів старший розряд використовується для запису знака числа. Нуль відповідає плюсу, а одиниця - мінусу. В результаті введення даного розряду діапазон закодованих чисел зміщується в негативну сторону. Виходить, що восьмирозрядний знаковий цілий двійковий ключ може записати числа в діапазоні від -127 до + 127. Шістнадцятирозрядний - у діапазоні від -32767 до + 32767. У восьмирозрядних мікропроцесорах для зберігання подібних кодів використовують два сусідні сектори.

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


Знаковий зворотний ключ

Ця форма запису відрізняється від прямих кодів тільки тим, що від 'ємне число в ній виходить шляхом інвертування всіх розрядів ключа. При цьому цифрові та знакові розряди ідентичні. Завдяки цьому алгоритми роботи з таким видом кодів суттєво спрощуються. Однак зворотний ключ вимагає спеціальний алгоритм для розпізнавання символу першого розряду, обчислення абсолютної величини числа. А також відновлення знака результуючого значення. Більш того, у зворотному і прямому кодах числа для запису нуля використовують два ключі. Незважаючи на те, що це значення не має позитивного або негативного знака.

Знаковий додатковий код двоїчного числа

Цей вид запису не має перелічених недоліків попередніх ключів. Такі коди дозволяють проводити безпосереднє підсумовування як позитивних, так і негативних чисел. При цьому не проводиться аналіз знакового розряду. Все це стало можливим завдяки тому факту, що додаткові числа являють собою природне кільце символів, а не штучні утворення, такі як прямі і зворотні ключі. Більш того, важливим фактором є те, що зробити обчислення доповнень у двійкових кодах надзвичайно просто. Для цього достатньо до зворотного ключа додати одиницю. При використанні цього виду знакового коду, що складається з восьми розрядів, діапазон можливих чисел складе від -128 до + 127. Шістнадцятирозрядний ключ матиме діапазон від -32768 до + 32767. У восьмирозрядних процесорах для зберігання таких чисел також використовують два сусідні сектори.

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

Код Грея

Ця форма запису, по суті, є одношаговим ключем. Тобто в процесі переходу від одного значення до іншого змінюється всього лише один біт інформації. При цьому похибка при зчитуванні даних призводить до переходу від одного положення до іншого з незначним зміщенням за часом. Однак отримання абсолютно неправильного результату кутового положення при такому процесі повністю виключається. Гідністю такого коду є його здатність дзеркально відображати інформацію. Наприклад, інвертуючи старші біти, можна просто змінювати напрямок відліку. Це відбувається завдяки керуючому входу Complement. При цьому значення, що видається, може бути як зростаючим, так і спадаючим при одному фізичному напрямку обертання осі. Оскільки інформація, записана в ключі Грея, має виключно кодований характер, який не несе реальних числових даних, то перед подальшою роботою потрібно попередньо перетворити його в звичайну бінарну форму запису. Здійснюється це за допомогою спеціального перетворювача - декодера Грей-Бінар. Цей пристрій легко реалізується на елементарних логічних елементах як апаратним, так і програмним способом.

Код Грея-Експрес

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

Представлення дробового числа у двійковому ключі з фіксованою комою

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

Представлення двійкового коду з плаваючою комою

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


Це цікаво

Вважається, що двійкове обчислення було винайдено на початку 18-го століття математиком з Німеччини Готфрідом Лейбніцем. Однак, як нещодавно відкрили вчені, задовго до цього аборигени полінезійського острова Мангареву використовували даний вид арифметики. Незважаючи на те що колонізація практично повністю знищила оригінальні системи обчислення, вчені відновили складні двійкові та десяткові види рахунку. Крім того, вчений Когнітивіст Нуньєс стверджує, що кодування двійковим кодом застосовувалося в стародавньому Китаї ще в 9-му столітті до н. е. Інші стародавні цивілізації, наприклад, індіанці майя, також використовували складні комбінації десяткових і бінарних систем для відстеження тимчасових інтервалів і астрономічних явищ.