ビット
ビット (bit) は、情報理論、コンピューティング、多くのデジタル通信における情報の基本情報の単位である。ビットは、コンピューティングでの二値ストレージやデジタル通信における二値シンボルのことも意味し、そのストレージ・シンボルには、(情報量の単位としての)1ビットの情報を記憶・符号化できる。二進数の1桁のことであり、その名前はbinary digitの2語の一部を組み合わせた語(かばん語)である。
情報理論では、1ビットは通常、等しい確率で0または1である二進数ランダム変数の情報量(情報エントロピー)、またはそのような変数の値が判明したときに得られる情報として定義される。情報量の単位として、このビットはクロード・シャノンにちなんで名付けられたシャノンとも呼ばれる。厳密には、ビットはデータ量(ストレージ量)の単位、シャノンは情報量の単位と区別するが、歴史的経緯により後者も前者と同じ単位(ビット)で表現され、誤りの可能性を無視してよければNビットのストレージによりNビットの情報量が保持できる。
1ビットの情報は、二進数の1桁として論理値を表し、2つの値のうち1つのみを持つ。2つの状態を持つ何らかの機構によって物理的に実装できる。この状態値は、最も一般的には「0」/「1」として表されるが、真/偽 (True/False)、yes/no、+/-、on/offなどの他の表現も可能である。この値と実際の物理的状態との対応は慣習の問題であり、同じデバイスやプログラム内でも異なる割り当てを使用することができる。
ビットの単位記号は、IEC 80000-13:2008 では "bit"、IEEE 1541-2002やIEEE Std 260.1-2004では"b"(小文字のビー)を推奨している。一般に8桁の二進数のグループ(8ビット)は「1バイト (byte)」と呼ばれるが、歴史的にはバイトのサイズは厳密には定義されていない。
データを離散ビットによって表す方法は、バジル・ブションとジャン=バプティスト・ファルコンによって1732年に発明されジョゼフ・マリー・ジャカールが1804年に開発したパンチカードに使用され、後にセミオン・コルサコフ、チャールズ・バベッジ、ハーマン・ホレリス、およびIBMなどの初期のコンピュータメーカーにより採用された。また、鑽孔紙テープも同様の考えによるものであった。これら全てのシステムで、媒体(カードやテープ)は概念的に穴の位置の配列を保持していた。それぞれの位置における穴の有無が1ビットの情報を伝達した。ビットによる文章の符号化は、モールス信号(1844年)や、テレタイプ、ストックティッカー(1870年)などの初期のデジタル通信機でも使用されていた。
ラルフ・ハートレーは、1928年に情報の対数的計量の使用を提案した。クロード・シャノンは、1948年の独創的な論文『通信の数学的理論』で「ビット」という言葉を初めて使用した。シャノンは、その言葉は1947年1月9日にベル研究所でジョン・テューキーが書いたメモにおいて"binary information digit"(二進数情報桁)を略して"bit"と書いたことに由来するとしている。1936年にヴァネヴァー・ブッシュは、当時の機械式コンピュータで使用されていたパンチカードに保存できる情報量のことを"bits of information"(情報のビット)と書いた。コンラート・ツーゼによって構築された最初のプログラム可能なコンピュータは、数値に二進数表記を使用した。
ビットは、可能な2つの別個の状態 (計算機科学)のいずれかを保持するデジタルデバイスやその他の物理システムによって格納できる。例えばフリップフロップの2つの安定状態、スイッチの2つの位置、電気回路で取り得る電圧または電流の2つの異なるレベル、2つの異なる光強度レベル、磁性または電気極性の2つの方向、DNAの二本鎖の方向などである。
ビットはいくつかの形式で実装できる。ほとんどの最新のコンピュータデバイスでは、ビットは通常、電圧や電流のパルス、またはフリップフロップ回路の電気状態によって表される。
正論理を使用するデバイスの場合、1の数字値(または「真」(True) の論理値)は、0の表現よりもより高い正の電圧で表される。実際の電圧は、部品の耐久性やノイズ耐性など、部品の特性に応じて決定される。例えば、transistor-transistor logic (TTL) やその互換性のある回路では、デバイスの出力 (Output) は、0が0.4ボルト (V) 以下、1が2.6ボルト (V) 以上で表される。入力 (Input) は、0.8 V以下は0、2.2 V以上は1、として認識するように設定されている。
ビットは、シリアル通信では一度に1つずつ、パラレル通信では複数のビットが同時に送信される。ビット演算では、ビットを1つずつ処理する場合がある。データ転送速度は、通常、kbit/sなどビット毎秒 (bit/s)にSI接頭語をつけた単位で表され、2進接頭辞は使用されない。
ジャカード織機やバベッジの解析機関などの最も初期の非電子情報処理装置では、機械的なレバーやギアの位置、または紙のカードやテープの特定の位置の穴の有無としてビットが保存されていた。ディスクリートロジック用の初期の電気デバイス(エレベータや交通信号機の制御回路、電話交換機、コンラート・ツーゼのコンピュータなど)は、ビットを電気リレーのオン・オフの状態として表していた。1940年代からリレーが真空管に置き換えられたとき、コンピュータの設計者は、水銀遅延線を伝わる圧力パルス、ウィリアムス管の内面に蓄積される電荷、フォトリソグラフィ技術によってガラスの円盤に印刷される不透明なスポットなど、様々な保存方法を実験した。
1950年代および1960年代に、これらの方法は、磁気コアメモリ・磁気テープ・磁気ドラムメモリ・磁気ディスクなどの磁気記憶装置に大きく取って代わられた。磁気記憶装置では、ビットは強磁性フィルムの特定の領域の磁性の方向、またはある方向から他の方向への極性の変化として表現される。1980年代に開発された磁気バブルメモリでも同じ原理が使用され、鉄道の切符やクレジットカードなど磁気ストライプカードに使用されている。
DRAMなどの現代の半導体メモリでは、ビットはコンデンサに保存された電荷の2つのレベルで表される。特定のタイプのプログラマブルロジックデバイスや RAM では、回路の特定のポイントでの導電パスの有無によってビットが表される。光ディスクでは、ビットは反射面上の微小なピットの有無として表される。1次元バーコードでは、ビットは交互の黒と白の線の太さとして表される。
ビットは、国際単位系 (SI) では定義されていないが、国際電気標準会議 (IEC) が発行したIEC 60027では、二進数の単位の記号は "bit" であり、キロビットを表す "kbit" など全ての倍数で使用されると規定している。ただし、小文字の "b" も広く使用されており、IEEE 1541-2002などで推奨されている。慣習的に、大文字の "B" はバイトを表すのに使用され、両者の間には8倍の差がある。
伝統的に複数のビットを表す情報の単位がいくつか使用されてきた。最も一般的なのは、1956年6月にワーナー・ブッフホルツによって作られた単位「バイト」である。これは、歴史的にコンピュータで1つのキャラクタの符号化に使用されるビットの集まりを表すために使用された。このため、多くのコンピュータアーキテクチャで基本的なアドレスの単位として使用された。過去には様々なビット数のバイトが使用されてきたが、今日では8ビットを1バイトとする実装が広く使用されている。ただし、バイトの大きさが基礎となるハードウェア設計に依存するという曖昧さを回避するために、8ビットであることを明示的に示す単位「オクテット」が定義されている。
通常、コンピュータは、「ワード」と呼ばれる固定サイズのビットのグループ単位で操作を行う。バイトと同様に、1つのワードに含まれるビット数もハードウェア設計によって異なる。通常は8~80ビットだが、一部の専用コンピュータではさらに大きくなる。21世紀初頭において、パーソナルコンピュータやサーバコンピュータのワードサイズは32ビットまたは64ビットである。
国際単位系では、基本となる単位の十進数の倍量・分量を表すSI接頭語が定義されている。これは一般的にビットやバイトに対しても適用されている。ただし、本来の十進数の倍量(1000の冪乗)ではなく、1024 (=210)の冪乗を表すのに使用されることもあり、曖昧さの回避のために1024の冪乗であることを明示する別の接頭辞が定義されている(2進接頭辞を参照)。
ストレージの情報容量や通信路の情報容量がビットやビット毎秒で表されるとき、多くの場合でバイナリデータを格納するコンピュータハードウェアの容量である二進数を指す。ストレージの情報容量は、そこに格納される情報量の上限に過ぎない。ストレージに含まれる各ビットの2つの可能な値(1と0)の数が等しくない場合、ストレージに含まれる情報の情報量は、「情報容量」として表される数値よりも小さくなる。実際、値が完全に予測可能ならば、その値の読み取りからは新たな情報は得られない(不確実性の解決が発生せず、したがって情報が利用できないため、エントロピーはゼロである)。nビットのストレージを使用するコンピュータファイルに含まれる情報がm < nビットのみの場合、その情報は原則として少なくとも平均で約mビットで符号化できる。この原則は、データ圧縮技術の基礎である。最適に圧縮された場合、伝送容量は情報量に近づく。
一部のビット演算のプロセッサ命令(bit setなど)は、データをビットの集合と解釈して操作するのではなく、個別のビットを操作するレベルで動作する。
1980年代、ビットマップコンピュータディスプレイが一般的になると、一部のコンピュータでは、画面上の特定の矩形領域に対応するビットを設定・コピーするための特殊なビットブロック転送命令("bitblt"または"blit")を提供した。
バイトやワードといった単位におけるビット位置の定義は CPU によって異なる。右端(数値としての最小位、LSB)を第0ビットにしている流儀と、左端(数値としての最大位、MSB)を第0ビットにしている流儀の両方がある。現在は前者が多い。この違いをエンディアンといい、前者をリトルエンディアン、後者をビッグエンディアンという。