Двійковий код. Види і довжина двійкового коду. Зворотний двійковий код
Двійковий код є формою запису інформації у вигляді одиниць і нулів. така система обчислення є позиційної з підставою 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-му столітті до н. е. Інші древні цивілізації, наприклад, індіанці майя, також використовували складні комбінації десяткових і бінарних систем для відстеження тимчасових інтервалів і астрономічних явищ.