Нібл

Таблиця символів впорядкована за ніблами

Нібл (англ. nibble, nybble або nyble) — чотирибітне утворення,[1] або половина октету. Від того, що нібл містить 4 біти, він може містити шістнадцять (24) можливих значень, отже нібл відповідає одній шістнадцятковій цифрі (тому його часто згадують як «шістнадцяткову цифру» (англ. hex digit, hexit)).

Одне з перших відомих використань терміна «нібл» відбулось 1977 в Citibank, що створила до-ISO 8583 стандарт для транзакційних повідомлень між банкоматами та інформаційним центром, в якому нібл був основною одиницею даних.

Повний байт (октет) представляється двома шістнадцятковими цифрами; отже, зазвичай байт можна представити як пару ніблів. У царині комп'ютерних мереж і телекомунікацій нібл часто називають напівоктетом або квартетом.[джерело?] Іноді набір всіх 256 значень байта зображують у вигляді таблиці 16*16, з якої легко видно шістнадцяткові коди для кожного значення.

Термін «нібл» походить з того, що в англійській термін «byte» є омофоном для слова «bite», а саме слово «bite» означає кусати, в той час як «nibble» - гризти, тобто трошки кусати. Альтернативна вимова «nybble» походить від «byte».

Нібл використовується для опису кількості пам'яті необхідної для збереження однієї цифри в двійково-десятковому коді. Цей підхід використовується з метою пришвидшити обчислення і полегшити зневадження. Байт з 8 бітів ділиться навпіл і в кожному ніблі зберігається одна цифра. Останній нібл змінної відводиться під знак. Таким чином, змінну, яка може зберігати до 9 цифр можна упакувати в 5 байтів. Полегшення зневадження відбувається через легкість читання чисел у шістнадцятковому вигляді пам'яті, де дві шістнадцяткових цифри використовуються для представлення значення байта, бо 16×16 = 28.

Історично, траплялись випадки, коли термін «нібл» використовувався для набору з менше ніж 8 бітів, але необов'язково 4. У лінії мікрокомп'ютерів Apple II, велика частина управління приводом диска була реалізована на програмному рівні. Запис даних на диск відбувався перетворенням 256-байтних сторінок в набори з 5-бітових або, пізніше, 6-бітових ніблів; Завантаження даних з диску вимагало зворотної дії. Зауважте, що термін «байт» також має неоднозначність; свого часу, байт значив набір з необов'язково 8 бітів. Сьогодні, терміни «байт» і «біт» здебільшого вказують на 8-, та 1-бітові набори, і дуже рідко використовуються для інших розмірів. Термін «напівнібл» використовується для вказання на 2 біти.

Шістнадцять ніблів та їх відповідники в інших системах числення:

0hex = 0dec = 0oct 0 0 0 0
1hex = 1dec = 1oct 0 0 0 1
2hex = 2dec = 2oct 0 0 1 0
3hex = 3dec = 3oct 0 0 1 1
4hex = 4dec = 4oct 0 1 0 0
5hex = 5dec = 5oct 0 1 0 1
6hex = 6dec = 6oct 0 1 1 0
7hex = 7dec = 7oct 0 1 1 1
8hex = 8dec = 10oct 1 0 0 0
9hex = 9dec = 11oct 1 0 0 1
Ahex = 10dec = 12oct 1 0 1 0
Bhex = 11dec = 13oct 1 0 1 1
Chex = 12dec = 14oct 1 1 0 0
Dhex = 13dec = 15oct 1 1 0 1
Ehex = 14dec = 16oct 1 1 1 0
Fhex = 15dec = 17oct 1 1 1 1

Добування нібла із байта

Мовою C:

#define HINIBBLE(b) (((b) >> 4) & 0x0F)
#define LONIBBLE(b) ((b) & 0x0F)

де b має бути змінною або сталою цілочисельного типу (або signed, або unsigned). (Звісно, якщо b за розміром більше ніж байт, тільки один байт (молодший) буде використовуватися). Наприклад, HINIBBLE(0xAB)==0xA і LONIBBLE(0xAB)==0xB.

Мовою Common Lisp:

(defun hi-nibble (b)
  (ldb (byte 4 4) b))
(defun lo-nibble (b)
  (ldb (byte 4 0) b))

Див. також

Примітки

  1. Hall, D. V. (1980). Microprocessors and Digital Systems. McGraw-Hill. ISBN 0-07-025571-7.