ニブル

コンピューティングにおいて、ニブル (nibble) とはデータ量の単位の一つで、4ビットのことであり、オクテットの半分である。

バイト(byte)に合わせてnybbleやnybleと綴られることもある。一般的な1バイト（8ビット）の半分であることからハーフバイト (half-byte) とも呼ばれる。テトラード (tetrade) ともいう。コンピュータネットワークや電気通信の分野では、セミオクテット (semi-octet) 、クアッドビット (quadbit) 、カルテット (quartet) とも呼ばれる。1ニブルは16通り(24)の値を取り得る。1ニブルは十六進数の1桁であり、ヘックスディジット(hex digit)とも呼ばれる。なお、英語のnibbleには、動詞として「少しずつ食べる」「ちょっとかじる」、また、名詞としてそのような場合の「少し」の意味がある。

1バイト（1オクテット）は2桁の十六進数で表されるので、すなわち1バイトの情報は2ニブルで表される。1バイトの取り得る値256個を16×16のテーブルで表示することで、各値の十六進数による値が読み取りやすくなる。

4ビットのコンピュータ・アーキテクチャは基本単位として4ビットのグループを使用する。初期のマイクロプロセッサや電卓、ポケットコンピュータは4ビットのアーキテクチャであった。現在でも4ビットで動作するマイクロコントローラが使用されている。

歴史
"nibble"という言葉は、"half a byte"（半バイト）を表す用語に由来しており、その綴りは"byte"の同音異義語の"bite"によるものである。2014年、ワシントン州立大学名誉教授のDavid B. Bensonは、1958年ごろの彼がロスアラモス国立研究所のプログラマだったときに、二進化十進表現 (BCD) の1桁を保持するのに必要な記憶単位としての"half a byte"の意味としてnibbleという言葉をふざけて使っていた（そして、おそらくはそれを造語したかもしれない）ことを思い出した。1980年代初頭の雑誌『』や『バイト』の論説によれば、別の綴り"nybble"は"byte"の綴りを反映したものである。"nybble"という用語の初期に使われた形跡としては他に、1977年にシティバンクの消費者銀行テクノロジーグループ内での使用例がある。これは、現金自動預け払い機とシティバンクのデータセンターとの間のトランザクションメッセージに関して、ISO 8583が策定される以前に標準を作成したもので、基本的な情報単位として"NABBLE"を使用していた。

ニブルは、IBMのメインフレームにおいて、パック10進数で格納されている数字の桁を記憶するのに使用されるメモリ量を記述するために使用された。この手法は、計算を速くし、デバッグを容易にするために使用された。8ビットのバイトは半分に分割され、各ニブルは1桁の10進数を格納するために使用される。変数の最後（最も右）のニブルは符号用に予約されている。従って、変数には最大9桁まで格納でき、5バイトに「パック」される。1バイトの値を表すのに2桁の16進数を使用する16進ダンプにより、数値の読み取りが可能になり、デバッグが容易になった。例えば、5つのBCD値    は、10進数値を表す。

歴史的に、nybbleが4ビット以上のグループに使用されるケースがあった。Apple IIでは、ディスクドライブ制御とはソフトウェアで実装されていた。ディスクへのデータの書き込み時には256バイトのページを5ビット（後に6ビット）のニブルのセットに変換し、ディスクからデータをロードする時には逆の手順を行っていた。さらに、Integrated Woz Machineに関する1982年の文書では、一貫して「8ビットニブル」を使用している。バイトという用語もかつては同様の曖昧さを持ち、必ずしも8ビットを意味していたわけではなかった。そのため、バイトに対して明確に8ビットを意味する「オクテット」(octet) という用語が作られたが、同様にニブルについても明確に4ビットを意味する「カルテット」(quartet) や「クアッドビット」(quadbit) という言葉が作られた。今日では、「バイト」と「ニブル」という用語は、ほぼ常に8ビット、4ビットを意味するようになっており、他のサイズを表現するのに使用されることはめったにない。

ニブルの表
16通りの1ニブルの値

上位ニブルと下位ニブル
「上位ニブル」(high nibble) と「下位ニブル」(low nibble) という言葉は、バイト内の下位ビットおよび上位ビットをそれぞれ含むニブルを表すのに使用される。バイト内のビットの図形表現では、左端のビットが最上位ビット (MSB) を表すことがある。これは、数値の左側の数字が最上位である通常の十進表記に対応している。そのような例では、バイトの左端の4ビットが上位ニブル、残りの4ビットが下位ニブルを形成する。例えば、 9710 = (0110 0001)2 においては、上位ニブルは 01102 (6)、下位ニブルは 00012 (1)である。

関連項目
 二進法
 ワード
 データ量の比較
 IEEE 1284 - ニブルモード

脚注

外部リンク
Apple Assembly Line, May 1981, Volume 1, Number 8

情報の単位
コンピュータの算術