Нібл
Нібл (англ. 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))