Nibble - Nibble

Uma tabela de fontes da página de código de octeto 866 ordenada por nibbles.

Em computação , uma mordidela (ocasionalmente nybble ou nyble para coincidir com a ortografia de byte ) é uma de quatro bits a agregação, ou metade de um octeto . Também é conhecido como meio byte ou tetrade . Em um contexto de rede ou telecomunicação , o nibble é freqüentemente chamado de semi-octeto , quadbit ou quarteto . Um nibble tem dezesseis ( 2 4 ) valores possíveis. Um nibble pode ser representado por um único dígito hexadecimal ( - ) e chamado de dígito hexadecimal . 0F

Um byte completo (octeto) é representado por dois dígitos hexadecimais ( 00- FF); portanto, é comum exibir um byte de informação como dois nibbles. Às vezes, o conjunto de todos os valores de 256 bytes é representado como uma tabela de 16 × 16 , que fornece códigos hexadecimais de fácil leitura para cada valor.

As arquiteturas de computador de quatro bits usam grupos de quatro bits como sua unidade fundamental. Essas arquiteturas foram usadas nos primeiros microprocessadores , calculadoras de bolso e computadores de bolso . Eles continuam a ser usados ​​em alguns microcontroladores . Nesse contexto, grupos de 4 bits às vezes também eram chamados de caracteres, em vez de mordidelas.

História

O termo nibble tem origem na representação de "meio byte", sendo o byte um homófono da palavra inglesa bite . Em 2014, David B. Benson, um professor emérito da Washington State University , lembrou-se de que ele usou de brincadeira (e pode ter cunhado) o termo nibble como "meio byte" e unidade de armazenamento necessária para conter um decimal binário codificado ( BCD) dígito decimal por volta de 1958, ao conversar com um programador do Laboratório Científico de Los Alamos . A grafia alternativa nybble reflete a grafia de byte , conforme observado em editoriais de Kilobaud e Byte no início dos anos 1980. Outro uso registrado do termo nybble foi em 1977 no grupo de tecnologia de banco de consumo do Citibank. Ele criou um padrão pré- ISO 8583 para mensagens transacionais entre caixas eletrônicos e os data centers do Citibank que usavam a unidade básica de informações 'NABBLE'.

O nibble é usado para descrever a quantidade de memória usada para armazenar um dígito de um número armazenado no formato decimal compactado (BCD) em um mainframe IBM. Essa técnica é usada para tornar os cálculos mais rápidos e a depuração mais fácil. Um byte de 8 bits é dividido ao meio e cada nibble é usado para armazenar um dígito decimal. O último nibble (mais à direita) da variável é reservado para o sinal. Assim, uma variável que pode armazenar até nove dígitos seria "compactada" em 5 bytes. A facilidade de depuração resultou dos números serem legíveis em um dump hexadecimal, onde dois números hexadecimais são usados ​​para representar o valor de um byte, como 16 × 16 = 2 8 . Por exemplo, um valor BCD de cinco bytes de 31 41 59 26 5Crepresenta um valor decimal de +314159265.

Historicamente, há casos em que o nybble foi usado para um grupo de bits maior que 4. Na linha de microcomputadores Apple II , muito do controle da unidade de disco e da gravação codificada em grupo foi implementado em software. A gravação de dados em um disco foi feita convertendo páginas de 256 bytes em conjuntos de nibbles de 5 bits (mais tarde, 6 bits ) e o carregamento de dados do disco exigia o inverso. Além disso, a documentação de 1982 para a Máquina Woz Integrada refere-se consistentemente a um "nibble de 8 bits". O termo byte já teve a mesma ambigüidade e significava um conjunto de bits, mas não necessariamente 8, daí a distinção de bytes e octetos ou de nibbles e quartetos (ou quadbits ). Hoje, os termos byte e nibble quase sempre se referem a coleções de 8 e 4 bits, respectivamente, e muito raramente são usados ​​para expressar quaisquer outros tamanhos.

Mesa de mordidelas

Os dezesseis nibbles e seus equivalentes em outros sistemas numéricos:

Exemplos
Binário 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 hex = 0 dez = 0 out 0 0 0 0
1 hex = 1 dezembro = 1 out 0 0 0 1
2 hex = 2 dez = 2 out 0 0 1 0
3 hex = 3 dez = 3 out 0 0 1 1
4 hex = 4 de dezembro = 4 out 0 1 0 0
5 hex = 5 dez = 5 out 0 1 0 1
6 hex = 6 de dezembro = 6 out 0 1 1 0
7 hex = 7 de dezembro = 7 out 0 1 1 1
8 hex = 8 dez = 10 out 1 0 0 0
9 hex = 9 de dezembro = 11 out 1 0 0 1
Um feitiço = 10 dez = 12 out 1 0 1 0
B hex = 11 de dezembro = 13 out 1 0 1 1
C hex = 12 dez = 14 out 1 1 0 0
D hex = 13 dez = 15 out 1 1 0 1
E hex = 14 dez = 16 out 1 1 1 0
F hex = 15 dez = 17 out 1 1 1 1

Nibbles baixo e alto

Os termos nibble baixo e nibble alto são usados ​​para denotar os nibbles contendo, respectivamente, os bits menos significativos e os bits mais significativos dentro de um byte. Em representações gráficas de bits dentro de um byte, o bit mais à esquerda pode representar o bit mais significativo ( MSB ), correspondendo à notação decimal comum em que o dígito à esquerda de um número é o mais significativo. Em tais ilustrações, os quatro bits na extremidade esquerda do byte formam o nibble alto e os quatro bits restantes formam o nibble baixo. Por exemplo,

noventa e sete = 97 10 = (0110 0001) 2 = 61 hex

o nibble alto é 0110 2 ( 6 hex ) e o nibble baixo é 0001 2 ( 1 hex ). O valor total é nibble alto × 16 10 + nibble baixo ( 6 × 16 + 1 = 97 10 ).

Extraindo um nibble de um byte

Um nibble pode ser extraído de um byte fazendo uma operação E lógica bit a bit e, opcionalmente, uma mudança de bit dependendo se o nibble alto ou baixo deve ser extraído.

Em C :

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

onde bdeve ser uma variável ou constante de um tipo de dados integral e apenas o byte menos significativo de bé usado.

Por exemplo, HI_NIBBLE(0xAB)==0xAe LO_NIBBLE(0xAB)==0xB.

Em Common Lisp :

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

Veja também

Referências

links externos