コンピュータの基本を語る上で欠かせない「ビット」と「バイト」。この2つの単位の違いや役割を正確に理解している人は意外と少ない。ビットとバイトの仕組みや数値との関係などを解説する。
コンピュータの基本構造を理解するには、「ビット」(bit)と「バイト」(Byte)の違いを知ることが欠かせない。情報は0と1から成る「ビット」の列として扱われ、その集まりである「バイト」が文字や数値を表現する最小単位になる。
「ビット=0か1の単位」「バイト=8bit」という基本を知っていても、実際にどのように数値や文字が表現されているかまでは理解していない人は少なくないだろう。そこで本稿では、ビットとバイトの仕組み、数値や文字との対応関係、そしてそれを支える2進数の基本構造までを解説する。
コンピュータは、ビット単位でデータを検証・操作できるが、多くのシステムはバイト単位でデータを処理・格納する。バイトは通常、8個のビットが連続して構成された単位で、文字や数値、命令といった情報を扱う上での最小単位となる。
もっとも、「1バイト=8bit」という定義は現在の主流ではあるが、全てのシステムでそうだったわけではない。過去の一部のコンピュータアーキテクチャやデータフォーマットでは、1バイトを6bitまたは9bitで構成していた例もある。
コンピュータのメモリやストレージへの参照は、常にバイト単位で行われる。例えば、ストレージデバイスの容量が1TB(テラバイト)であれば、おおよそ100万MB(メガバイト)に相当する。さらに、1MBはおよそ100万バイトであり、これは800万bitに等しい。したがって、1TBのドライブには約1兆バイト、あるいは約8兆bitのデータを格納できる計算となる。
「オクテット」(octet)という用語は、バイトと同じく8bitの単位を指す言葉として使われることがあるが、現代ではバイトの方が一般的だ。「ニブル」(nibble)という用語が4bitの単位を表す際に使われることもあるが、これもあまり一般的ではない。
一方で、「ワード」(word)は2バイト(16bit)以上の連続するビット列を表す用語として広く使われている。ワードの長さはアーキテクチャによって異なり、通常は16bit、32bit、あるいは64bitだ。
バイトを構成する各ビットには、それぞれ固有の値(重み)が割り当てられている。これはビットの位置に基づいており、通常は右端を最下位ビット(LSB)、左端を最上位ビット(MSB)と呼ぶ。
バイト内のビットは右から左に向かって並び、それぞれに「2の累乗」に基づいた値(重み)が割り当てられている。最も右側のビットは「2の0乗」に相当し、その値は1。次のビットは「2の1乗」で2、その次は「2の2乗」で4というように、左に進むごとに値は2倍になっていく。この仕組みにより、ビットの組み合わせによって数値を表現できるようになっている。
バイト内の各ビットには特定の値が割り当てられ、これは位(位置)と呼ばれる。位は右から左のパターンで各ビットに割り当てられ、1から始まって各ビットに対して値を2倍にして増加させる。以下の表で説明されている通りだ。
| ビット位置(右から左) | 位(位置) |
|---|---|
| ビット1 | 1 |
| ビット2 | 2 |
| ビット3 | 4 |
| ビット4 | 8 |
| ビット5 | 16 |
| ビット6 | 32 |
| ビット7 | 64 |
| ビット8 | 128 |
ビットの位は、バイト全体としての意味や数値を決定するために用いられる。各ビットは、その位に応じた重みを持ち、「1」であるビットの重みを合計することで、バイトの値が決まる。
一方、ビットの値が「0」である場合、そのビットが担当する桁の値は合計に含まれない。こうして各ビットの値を足し合わせて得られた数値は、「ASCII」などの文字コードにおいて、特定の文字に対応する数値となる。ASCIIコードは、コンピュータ上で文字を扱うために広く使われている文字セットで、10進の数字(0〜9)、英字の大文字(A〜Z)と小文字(a〜z)、さらに「%」「&」といった一部の記号などを表現できる。
8bitの特定の組み合わせとしての単一のバイトは、00000000バイトから始まり11111111バイトで終わる最大256通りの一意な文字を表すことができる。ビットパターンのさまざまな組み合わせは0から255の範囲を提供し、これはバイトが最大256の一意なビットパターン(最大256の可能な組み合わせを情報伝達に使用できる)を表すことができることを意味する。
例えば、ASCII 文字セットにおける大文字「S」には10進値83が割り当てられ、これはバイナリ01010011に相当する。図はSのバイトと各ビットの対応する位を示している。これは4つの1bitと4つの0bitを含む。合計すると、1bitに関連付けられた位の合計は83となり、これはASCIIの大文字Sに割り当てられた10進値に対応する。
小文字のsは大文字のSとは異なる10進値とバイナリを持つ。小文字sの10進値は115だ。バイト単位では、その値は01110011となる。
8bitのバイトはASCIIで最大256の一意な文字しか表すことができないため、より多くの文字を表現するために他の文字セットが開発された。これらの文字セットは文字当たり複数のバイトを使用する。その一つがUnicode Transformation Format(UTF)文字セットで、文字当たり1から4バイトを使用する。
このように文字セットの仕様が異なっていても、1バイトが8bitで構成され、各ビットは「0」または「1」の状態を取るという基本構造は共通している。
2進数とは、0と1の2種類の数字のみを用いて数値を表現する方式だ。これは、電気のオン/オフといった2つの状態で情報を処理するコンピュータに適した表記法であり、あらゆる数値やデータを0と1の組み合わせとして表現できる。
例えば、10進数の「1」は2進数で1、10進数の「11」は2進数で1011と表される。各桁は右から左に向かって、2の0乗、2の1乗、2の2乗といったように2のべき乗の値を持ち、それらの合計によって10進数の値が決まる。2進数は数字0と1を表現するために2つのビットのみを使用するため、これらのビットのさまざまな組み合わせが異なる数を表現するために使用される。例えば、10進数の1は001と表現され、11は1011と表現される。
バイナリでは、以下のようなさまざまな演算を実行することができる。
バイナリは、数値を表現するために2つの一意な数字(0と1)を用いる表記法であり、基数が2の数体系として「2進数」とも呼ばれる。この2進数は、現代の電子システムやコンピューティングの基礎をなす重要な概念となっている。電子回路や論理ゲートだけでなく、プログラミング言語、モバイル端末、ストレージデバイス、組み込み機器、暗号化アルゴリズムなども、すべて2進数を基盤として設計されている。IP(インターネットプロトコル)においても、データパケットのルーティングにこの2進数システムが利用されている。
2進数の利点の一つは、扱う値が「0」と「1」の2種類のみで済むという点にある。これにより、デジタルシステムにおける回路設計の単純化、処理の高速化、装置間の互換性向上といった効果が得られる。
バイナリは構造が単純であるにもかかわらず、基本的なビット列から複雑なデジタル信号やデータ構造まで、多様な情報の表現に利用できる柔軟性を持つ。なお、2進数以外にも、以下のような他のn進数(基数をnとする数体系)が存在する。
Copyright © ITmedia, Inc. All Rights Reserved.
なぜクラウド全盛の今「メインフレーム」が再び脚光を浴びるのか
メインフレームを支える人材の高齢化が進み、企業の基幹IT運用に大きなリスクが迫っている。一方で、メインフレームは再評価の時を迎えている。

「サイト内検索」&「ライブチャット」売れ筋TOP5(2025年5月)
今週は、サイト内検索ツールとライブチャットの国内売れ筋TOP5をそれぞれ紹介します。

「ECプラットフォーム」売れ筋TOP10(2025年5月)
今週は、ECプラットフォーム製品(ECサイト構築ツール)の国内売れ筋TOP10を紹介します。

「パーソナライゼーション」&「A/Bテスト」ツール売れ筋TOP5(2025年5月)
今週は、パーソナライゼーション製品と「A/Bテスト」ツールの国内売れ筋各TOP5を紹介し...