В вычислительной технике полубайт [1] (иногда nybble , nyble или nybl , чтобы соответствовать написанию byte ) — это четырёхбитное агрегирование , [1] [2] [3] или половина октета . Он также известен как полубайт [4] или тетрада . [5] [6] В сетевом или телекоммуникационном контексте полубайт часто называют полуоктетом , [ 7] квадрибитом , [8] или квартетом . [ 9] [10] Полубайт имеет шестнадцать ( 2 4 ) возможных значений. Полубайт может быть представлен одной шестнадцатеричной цифрой ( – ) и называется шестнадцатеричной цифрой . [11] 0
F
Полный байт (октет) представлен двумя шестнадцатеричными цифрами ( 00
– FF
); поэтому байт информации принято отображать в виде двух полубайтов. Иногда набор всех 256 -байтовых значений представляется в виде таблицы 16×16 , которая дает легко читаемые шестнадцатеричные коды для каждого значения.
Четырехбитные компьютерные архитектуры используют группы из четырех бит в качестве своей основной единицы. Такие архитектуры использовались в ранних микропроцессорах , карманных калькуляторах и карманных компьютерах . Они продолжают использоваться в некоторых микроконтроллерах . В этом контексте 4-битные группы иногда также назывались символами [12], а не полубайтами. [1]
Термин nibble происходит от его обозначения «половина байта», а byte — омофон английского слова bite . [ 4] В 2014 году Дэвид Б. Бенсон , почетный профессор Университета штата Вашингтон , вспомнил, что он в шутку использовал (и, возможно, придумал) термин nibble как «половину байта» и единицу хранения, необходимую для хранения двоично-десятичной (BCD) цифры около 1958 года, когда разговаривал с программистом из Научной лаборатории Лос-Аламоса . Альтернативное написание nybble отражает написание byte , как отмечалось в редакционных статьях Kilobaud and Byte в начале 1980-х годов. Еще одно раннее зафиксированное использование термина nybble было в 1977 году в группе технологий потребительского банкинга в Citibank. Она создала стандарт до ISO 8583 для транзакционных сообщений между банкоматами и центрами обработки данных Citibank , которые использовали базовую единицу данных «nabble».
Полубайт используется для описания объема памяти, используемой для хранения цифры числа, хранящегося в упакованном десятичном формате (BCD) в мэйнфрейме IBM. Этот метод используется для ускорения вычислений и упрощения отладки. 8-битный байт делится пополам, и каждый полубайт используется для хранения одной десятичной цифры. Последний (самый правый) полубайт переменной зарезервирован для знака. Таким образом, переменная, которая может хранить до девяти цифр, будет «упакована» в 5 байт. Простота отладки обусловлена тем, что числа можно прочитать в шестнадцатеричном дампе , где два шестнадцатеричных числа используются для представления значения байта, как 16×16 = 2 8 . Например, пятибайтовое значение BCD 31
41
59
26
5C
представляет десятичное значение +314159265.
Исторически существуют случаи, когда nybble использовался для группы битов больше 4. На Apple II большая часть управления дисководом и групповой кодированной записи была реализована программно. Запись данных на диск выполнялась путем преобразования 256-байтовых страниц в наборы 5-битных (позже 6-битных ) полубайтов, а загрузка данных с диска требовала обратного. [13] [14] [15] Более того, документация 1982 года для Integrated Woz Machine последовательно ссылается на «8-битный полубайт». [16] Термин байт когда-то имел ту же неоднозначность и означал набор бит, но не обязательно 8, отсюда и различие байтов и октетов или полубайтов и квартетов (или квадрибитов ). Сегодня термины байт и полубайт почти всегда относятся к 8-битным и 4-битным коллекциям соответственно и очень редко используются для выражения каких-либо других размеров.
Полубайт может быть представлен в двоичном и шестнадцатеричном виде следующим образом:
Термины «младший полубайт» и «старший полубайт» используются для обозначения полубайтов, содержащих соответственно менее значимые биты и более значимые биты в байте. В графических представлениях битов в байте самый левый бит может представлять самый значимый бит ( MSB ), что соответствует обычной десятичной записи, в которой цифра слева от числа является самой значимой. На таких иллюстрациях четыре бита на левом конце байта образуют старший полубайт, а оставшиеся четыре бита образуют младший полубайт. [17] Например,
старший полубайт равен 0110 2 ( 6 16 ), а младший полубайт равен 0001 2 ( 1 16 ). Общее значение равно старший полубайт × 16 10 + младший полубайт ( 6 × 16 + 1 = 97 10 ).
Полубайт можно извлечь из байта, выполнив побитовую логическую операцию И и, при необходимости, сдвиг бита в зависимости от того, требуется ли извлечь старший или младший полубайт.
На языке С :
#define HI_NIBBLE(b) (((b) >> 4) & 0x0F) #define LO_NIBBLE(b) ((b) & 0x0F)
где b
должна быть переменная или константа целочисленного типа данныхb
, и используется только младший байт .
Например, HI_NIBBLE(0xAB)==0xA
и LO_NIBBLE(0xAB)==0xB
.
В Common Lisp :
( defun hi-nibble ( b ) ( ldb ( byte 4 4 ) b )) ( defun lo-nibble ( b ) ( ldb ( byte 4 0 ) b ))
[...] Характерное восьмибитовое поле иногда называют байтом , четырехбитовое поле можно назвать полубайтом. [...]
Каждая из этих букв соответствует одному из целых чисел от нуля до пятнадцати, поэтому требует 4 бита (одну «тетраду») в двоичном представлении.
Символ данных представляет собой один квартет (4 бита) двоичных данных.
Каждая шестнадцатеричная цифра (0–f) представляет ровно 4 бита.
...]
Бит
– наименьшая единица информации, которая может быть представлена. (Бит может находиться в одном из двух состояний: 0 или 1). [...]
Байт
– группа из 8 смежных битов, занимающая одну ячейку памяти. [...]
Символ
– группа из 4 смежных битов данных. [...](Примечание. В этом руководстве по процессору Intel 4004 термин «символ» используется для обозначения 4-битных, а не 8-битных объектов данных . В своей документации для следующего процессора 4040 компания Intel перешла на использование более распространенного термина «полубайт» для 4-битных объектов еще в 1974 году.)