Jump to content

Nibble: Difference between revisions

From Wikipedia, the free encyclopedia
Content deleted Content added
Luckas-bot (talk | contribs)
m r2.7.1) (robot Adding: uk:Нібл
Extracting a nibble from a byte: Relevance questionable
Line 79: Line 79:
#define LONIBBLE(b) ((b) & 0x0F)
#define LONIBBLE(b) ((b) & 0x0F)
</source>
</source>
where <code>b</code> must be variable or constant of an integer data type (either <code>signed</code> or <code>unsigned</code>). (Of course, if b is more than a byte wide, only one of the bytes will be considered).
where <code>b</code> 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, <code>HINIBBLE(0xAB)==0xA</code> and <code>LONIBBLE(0xAB)==0xB</code>.
For example, <code>HINIBBLE(0xAB)==0xA</code> and <code>LONIBBLE(0xAB)==0xB</code>.

Revision as of 23:09, 21 August 2011

A character table ordered by nibbles.

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").

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.

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.

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" (or occasionally "quartyr") is used to refer to a 2-bit collection, or half a nibble.

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 and LONIBBLE(0xAB)==0xB.

See also

References

  1. ^ Hall, D. V. (1980). Microprocessors and Digital Systems. McGraw-Hill. ISBN 0-07-025571-7. {{cite book}}: Cite has empty unknown parameter: |coauthors= (help)