Nibble - Nibble

Una tabla de fuentes de la página de códigos de octetos 866 ordenada por nibbles.

En informática , un nibble (ocasionalmente nybble o nyble para que coincida con la ortografía del byte ) es una agregación de cuatro bits , o medio octeto . También se conoce como medio byte o tétrada . En un establecimiento de una red o de telecomunicaciones contexto, el mordisco a menudo se llama un semiocteto , quadbit , o cuarteto . Un nibble tiene dieciséis ( 2 4 ) valores posibles. Un nibble puede estar representado por un solo dígito hexadecimal ( - ) y llamado dígito hexadecimal . 0F

Un byte completo (octeto) está representado por dos dígitos hexadecimales ( 00- FF); por lo tanto, es común mostrar un byte de información como dos nibbles. A veces, el conjunto de todos los valores de 256 bytes se representa como una tabla de 16 × 16 , que proporciona códigos hexadecimales fácilmente legibles para cada valor.

Las arquitecturas de computadora de cuatro bits utilizan grupos de cuatro bits como su unidad fundamental. Estas arquitecturas se utilizaron en los primeros microprocesadores , calculadoras de bolsillo y computadoras de bolsillo . Siguen utilizándose en algunos microcontroladores . En este contexto, los grupos de 4 bits a veces también se denominan caracteres en lugar de nibbles.

Historia

El término nibble se origina en su representación de "medio byte", con byte un homófono de la palabra inglesa bite . En 2014, David B. Benson, profesor emérito de la Universidad Estatal de Washington , recordó que usó juguetonamente (y posiblemente acuñó) el término nibble como "medio byte" y la unidad de almacenamiento requerida para contener un decimal codificado en binario ( BCD) dígito decimal alrededor de 1958, cuando hablaba con un programador del Laboratorio Científico de Los Alamos . La ortografía alternativa nybble refleja la ortografía de byte , como se señaló en editoriales de Kilobaud y Byte a principios de la década de 1980. Otro uso registrado temprano del término nybble fue en 1977 dentro del grupo de tecnología de banca de consumo en Citibank. Creó un estándar previo a ISO 8583 para mensajes transaccionales entre cajeros automáticos y los centros de datos de Citibank que utilizaban la unidad de información básica 'NABBLE'.

El nibble se utiliza para describir la cantidad de memoria utilizada para almacenar un dígito de un número almacenado en formato decimal empaquetado (BCD) dentro de un mainframe IBM. Esta técnica se utiliza para agilizar los cálculos y facilitar la depuración. Un byte de 8 bits se divide por la mitad y cada nibble se utiliza para almacenar un dígito decimal. El último nibble (más a la derecha) de la variable está reservado para el signo. Por lo tanto, una variable que puede almacenar hasta nueve dígitos se "empaqueta" en 5 bytes. La facilidad de depuración se debe a que los números se pueden leer en un volcado hexadecimal donde se utilizan dos números hexadecimales para representar el valor de un byte, como 16 × 16 = 2 8 . Por ejemplo, un valor BCD de cinco bytes de 31 41 59 26 5Crepresenta un valor decimal de +314159265.

Históricamente, hay casos en los que nybble se utilizaba para un grupo de bits superior a 4. En la línea de microcomputadoras Apple II , gran parte del control de la unidad de disco y la grabación codificada en grupo se implementaba en software. La escritura de datos en un disco se realizó mediante la conversión de páginas de 256 bytes en conjuntos de nibbles de 5 bits (más tarde, 6 bits ) y la carga de datos del disco requirió lo contrario. Además, la documentación de 1982 para Integrated Woz Machine se refiere consistentemente a un "nibble de 8 bits". El término byte tuvo una vez la misma ambigüedad y significaba un conjunto de bits, pero no necesariamente 8, de ahí la distinción de bytes y octetos o de nibbles y cuartetos (o quadbits ). Hoy en día, los términos byte y nibble casi siempre se refieren a colecciones de 8 y 4 bits, respectivamente, y rara vez se utilizan para expresar otros tamaños.

Mesa de bocadillos

Los dieciséis nibbles y sus equivalentes en otros sistemas numéricos:

Ejemplos de
Binario Hexadecimal
0000 0100 0010 0 4 2
0010 1010 1001 2 A 9
0010 0000 1001 2 0 9
1110 0100 1001 E 4 9
0011 1001 0110 3 9 6
0001 0000 0001 1 0 1
0011 0101 0100 3 5 4
0001 0110 0100 1 6 4
0 hexadecimal = 0 dic = 0 oct 0 0 0 0
1 hexadecimal = 1 dic = 1 de oct 0 0 0 1
2 hexadecimales = 2 dic = 2 de oct 0 0 1 0
3 hexadecimales = 3 dic = 3 de oct 0 0 1 1
4 hexadecimales = 4 dic = 4 de oct 0 1 0 0
5 hexadecimales = 5 dic = 5 de oct 0 1 0 1
6 hexadecimales = 6 dic = 6 de oct 0 1 1 0
7 hexadecimales = 7 dic = 7 de oct 0 1 1 1
8 hexadecimales = 8 dic = 10 de oct 1 0 0 0
9 hexadecimales = 9 dic = 11 de oct 1 0 0 1
Un maleficio = 10 dic = 12 de oct 1 0 1 0
B hex = 11 dic = 13 de oct 1 0 1 1
C hex = 12 dic = 14 de oct 1 1 0 0
D hex = 13 dic = 15 de oct 1 1 0 1
E hex = 14 dic = 16 de oct 1 1 1 0
F hexadecimal = 15 dic = 17 de oct 1 1 1 1

Mordiscos bajos y altos

Los términos nibble bajo y nibble alto se utilizan para indicar los nibbles que contienen, respectivamente, los bits menos significativos y los bits más significativos dentro de un byte. En representaciones gráficas de bits dentro de un byte, el bit más a la izquierda podría representar el bit más significativo ( MSB ), correspondiente a la notación decimal ordinaria en la que el dígito a la izquierda de un número es el más significativo. En tales ilustraciones, los cuatro bits en el extremo izquierdo del byte forman el nibble alto y los cuatro bits restantes forman el nibble bajo. Por ejemplo,

noventa y siete = 97 10 = (0110 0001) 2 = 61 hexadecimal

el nibble alto es 0110 2 ( 6 hex ) y el nibble bajo es 0001 2 ( 1 hex ). El valor total es nibble alto × 16 10 + nibble bajo ( 6 × 16 + 1 = 97 10 ).

Extrayendo un nibble de un byte

Se puede extraer un nibble de un byte haciendo una operación AND lógica bit a bit y, opcionalmente, un cambio de bit dependiendo de si se va a extraer el nibble alto o bajo.

En C :

#define HI_NIBBLE(b) (((b) >> 4) & 0x0F)
#define LO_NIBBLE(b) ((b) & 0x0F)

donde bdebe ser una variable o constante de un tipo de datos integral , y solo bse usa el byte menos significativo de .

Por ejemplo, HI_NIBBLE(0xAB)==0xAy LO_NIBBLE(0xAB)==0xB.

En Common Lisp :

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

Ver también

Referencias

enlaces externos