- Nibble
-
This article is about the information storage unit. For other uses, see Nibble (disambiguation).
In computing, a nibble (often nybble or even nyble to simulate the spelling of byte) is a four-bit aggregation,[1] or half an octet. As a nibble contains 4 bits, there are sixteen (24) possible values, so a nibble corresponds to a single hexadecimal digit (thus, it is often referred to as a "hex digit" or "hexit").
A full byte (octet) is represented by two hexadecimal digits; therefore, it is common to display a byte of information as two nibbles. The nibble is often called a "semioctet" or a "quartet" in a networking or telecommunication context.[citation needed] Sometimes the set of all 256 byte values is represented as a table 16×16, which gives easily readable hexadecimal codes for each value.
Contents
History
One early recorded use of the term "nybble" was in 1977 within the consumer-banking technology group at Citibank that created a pre-ISO 8583 standard for transactional messages, between cash machines and Citibank's data centers, in which a nybble was the basic informational unit.
The term "nibble" originates from the fact that the term "byte" is a homophone of the English word "bite". A nibble is a small bite, which in this context is construed as "half a bite". The alternative spelling "nybble" parallels the spelling of "byte", as noted in editorials in Kilobaud and Byte in the early eighties.[citation needed]
The nibble is used to describe the amount of memory used to store a digit of a number stored in packed decimal format within an IBM mainframe. This technique is used to make computations faster and debugging easier. An 8-bit byte is split in half and each nibble is used to store one digit. The last nibble of the variable is reserved for the sign. Thus a variable which can store up to nine digits would be "packed" into 5 bytes. Ease of debugging resulted from the numbers being readable in a hex dump where two hex numbers are used to represent the value of a byte, as 16×16 = 28.
Historically, there have been cases where the term "nybble" was used for a set of bits fewer than 8, but not necessarily 4. In the Apple II microcomputer line, much of the disk drive control was implemented in software. Writing data to a disk was done by converting 256-byte pages into sets of 5-bit or, later, 6-bit nibbles; loading data from the disk required the reverse. Note that the term byte also had this ambiguity; at one time, byte meant a set of bits but not necessarily 8. Today, the terms "byte" and "nibble" generally refer to 8- and 4-bit collections, respectively, and are not often used for other sizes. The term "semi-nibble" is used to refer to a 2-bit collection, or half a nibble.
Table of nibbles
The sixteen nibbles and their equivalents in other numeral systems:
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 Extracting a nibble from a byte
In C programming language:
#define HINIBBLE(b) (((b) >> 4) & 0x0F) #define LONIBBLE(b) ((b) & 0x0F)
where
b
must be variable or constant of an integer data type. (Of course, if b is more than a byte wide, only one of the bytes will be considered).For example,
HINIBBLE(0xAB)==0xA
andLONIBBLE(0xAB)==0xB
.In Common Lisp:
(defun hi-nibble (b) (ldb (byte 4 4) b)) (defun lo-nibble (b) (ldb (byte 4 0) b))
See also
- Binary numeral system
- Computer word
References
External links
Units of information Base units Related units Traditional bit units Traditional byte units IEC bit units IEC byte units Categories:- Computing terminology
- Data unit
- Units of information
Wikimedia Foundation. 2010.