ビットは、コンピューティングとデジタル通信における最も基本的な情報単位です。その名前は、バイナリ数字の合成語です。[ 1 ]ビットは、 2 つの可能な値のいずれかを持つ論理状態を表します。これらの値は、最も一般的には1と0で表されますが、真/偽、はい/いいえ、オン/オフ、+ / −などの他の表現も広く使用されています。
これらの値と、基となるストレージまたはデバイスの物理状態との関係は慣例によるものであり、同じデバイスまたはプログラム内でも異なる割り当てが使用される場合がある。物理的には、2状態デバイスで実装されることもある。
連続するバイナリ数字のグループは、一般的にビット列、ビットベクトル、または一次元(または多次元)ビット配列と呼ばれます。8ビットのグループは1バイトと呼ばれますが、歴史的にバイトのサイズは厳密には定義されていません。[ 2 ]多くの場合、ハーフワード、フルワード、ダブルワード、クワッドワードは、2の低いべき乗のバイト数で構成されます。4ビットの列は通常ニブルです。
情報理論において、1ビットは、0または1の確率が等しいランダムな二値変数の情報エントロピー[ 3 ]、またはそのような変数の値が判明したときに得られる情報[ 4 ] [ 5 ]です。情報単位として、ビットはシャノンとも呼ばれ[ 6 ]、クロード・E・シャノンにちなんで名付けられました。二進アルファベット上の記号として符号化されたデジタル文字列の長さの尺度として(つまり)、このビットはbinitと呼ばれていましたが[ 7 ]、この用法は現在ではまれです[ 8 ] 。
データ圧縮では、文字列のより短い表現を見つけることが目的であり、保存または送信時に必要なビット数を減らすことができます。文字列は、圧縮前に短い表現に圧縮され、保存または受信時に元の形式に解凍されます。アルゴリズム情報理論の分野は、受信者が文字列の圧縮に使用された方法について最小限の事前知識しか持っていないという前提の下で、文字列の既約情報量(つまり、ビット単位での最短表現長)の研究に専念しています。エラー検出と訂正では、保存または送信中にエラーを検出または訂正できるように、文字列に冗長データを追加することが目的です。冗長データは、保存または送信前に計算され、保存または送信され、データの読み取りまたは受信時にチェックまたは訂正されます。
2進数の記号は、IEC 80000-13 :2008規格では「bit」、 IEEE 1541-2002規格では小文字の「b」のいずれかです。後者を使用すると、バイトの国際標準記号である大文字の「B」と混同される可能性があります。
ラルフ・ハートリーは1928年に情報の対数尺度の使用を提案した。[ 9 ]クロード・E・シャノンは、 1948年の画期的な論文「通信の数学的理論」で初めて「ビット」という言葉を使用した。[ 10 ] [ 11 ] [ 12 ]彼はその起源を、1947年1月9日にベル研究所のメモを書いたジョン・W・テューキーに帰している。テューキーはそこで「バイナリ数字」を単に「ビット」と短縮した。[ 10 ]
ビットは、2つの異なる状態のいずれかに存在するデジタルデバイスまたはその他の物理システムによって保存できます。これらは、フリップフロップの2つの安定状態、電気スイッチの2つの位置、回路で許容される2つの異なる電圧または電流レベル、2つの異なる光強度レベル、2つの磁化または分極方向、可逆二本鎖DNAの向きなどです。
おそらくバイナリ記憶装置の最も初期の例は、バジル・ブションとジャン=バティスト・ファルコンが発明し(1732年)、ジョセフ・マリー・ジャカールが発展させ( 1804年)、後にセミヨン・コルサコフ、チャールズ・バベッジ、ハーマン・ホレリス、そしてIBMのような初期のコンピュータメーカーが採用したパンチカードでしょう。このアイデアの変形として、穴あき紙テープがありました。これらのシステムすべてにおいて、媒体(カードまたはテープ)は概念的に穴の位置の配列を保持しており、各位置は穴を開けるか開けないかのどちらかで、穴の位置ごとに1ビットの情報が保持されていました。ビットによるテキストの符号化は、モールス信号(1844年)やテレプリンター(1870年)などの初期のデジタル通信機器でも使用されていました。
離散論理回路の最初の電気デバイス(エレベーターや信号機の制御回路、電話交換機、コンラート・ツーゼのコンピュータなど)は、ビットを電気リレーの状態として表現しました。リレーは開閉状態のいずれかをとります。これらのリレーは機械式スイッチとして機能し、物理的に状態を切り替えることでバイナリデータを表現し、初期のコンピューティングおよび制御システムの基本的な構成要素となりました。1940年代以降、リレーが真空管に置き換えられると、コンピュータ開発者は、水銀遅延線を伝わる圧力パルス、陰極線管の内面に蓄積された電荷、フォトリソグラフィー技術によってガラスディスクに印刷された不透明なスポットなど、さまざまな記憶方法を試みました。
1950年代から1960年代にかけて、これらの方法は磁気コアメモリ、磁気テープ、ドラム、ディスクなどの磁気記憶装置にほぼ取って代わられました。これらの装置では、ビットは強磁性膜の特定領域の磁化の極性、または極性の方向の変化によって表現されました。同じ原理は、1980年代に開発された磁気バブルメモリにも使用され、地下鉄の切符や一部のクレジットカードなど、さまざまな磁気ストリップ製品に現在でも使用されています。
現代の半導体メモリ(ダイナミックランダムアクセスメモリやソリッドステートドライブなど)では、ビットの2つの値は、コンデンサまたはフローティングゲートMOSFETに蓄積された2段階の電荷によって表されます。特定の種類のプログラマブルロジックアレイや読み出し専用メモリでは、ビットは回路の特定の点における導電経路の有無によって表される場合があります。光ディスクでは、ビットは反射面上の微細なピットの有無として符号化されます。1次元バーコードや2次元QRコードでは、ビットは黒または白の線または四角形として符号化されます。
現代のデジタルコンピューティングでは、ビットはブール論理ゲートに変換されます。
シリアル伝送では、ビットは一度に1つずつ送信されます。一方、パラレル伝送では、複数のビットが同時に送信されます。シリアルコンピュータは、ビットシリアル方式またはバイトシリアル方式のいずれかで情報を処理します。データ通信の観点から見ると、バイトシリアル伝送は、バイナリ信号を用いた8ウェイパラレル伝送です。
Cなどのプログラミング言語では、ビット演算はバイナリ文字列をバイナリ数として解釈するのではなく、ビットのベクトルとして扱います。
データ転送速度は通常、SI単位系の10進数倍で表されます。例えば、チャネル容量は8 kbit/s = 1 kB/sのように表記されます。
ファイルサイズは、多くの場合、(バイナリ)IECバイトの倍数で測定されます。たとえば、1 KiB = 1024バイト = 8192ビットです。歴史的な理由から、IEC標準の接頭辞Ki、Mi、Giではなく、曖昧な接頭辞K、M、Gを使用してバイナリ乗数でファイルサイズが指定されている場合、混乱が生じる可能性があります。[ 13 ]
大容量記憶装置は通常、SIの10進数倍で測定されます。たとえば、1 TB =バイト。
紛らわしいことに、 DRAMチップなどの直接アドレス指定可能なメモリデバイス、またはメモリモジュール上のそのようなチップの集合体の記憶容量は、IECが推奨するGi接頭辞ではなく、曖昧な接頭辞Gを使用して、2進数の倍数として指定されます。たとえば、1GBの容量を持つと指定(および宣伝)されているDRAMチップ は、容量のバイト。2022年現在、8GB の容量を持つメモリシステムの一般的な理解と、SI単位系で正しい8GB の意味との違いは、ソフトウェア設計者にとって依然として困難を引き起こしている。[ 14 ]
ビットは国際単位系(SI)では定義されていません。しかし、国際電気標準会議は、バイナリ数字の記号はビットであるべきであり、キロビットを表すkbitなど、すべての倍数でこれを使用するべきであると規定する規格IEC 60027を発行しました。 [ 15 ]ただし、小文字のbも広く使用されており、 IEEE 1541規格(2002)で推奨されています。対照的に、大文字のBはバイトの標準的かつ慣習的な記号です。
複数のビットは、いくつかの方法で表現および表すことができます。情報技術において繰り返し出現するビットのグループを表現する便宜上、従来からいくつかの情報単位が使用されてきました。最も一般的なのは、1956 年 6 月にWerner Buchholzによって考案されたバイト単位です。これは、歴史的にコンピュータでテキストの1文字をエンコードするために使用されるビットのグループを表すために使用されてきました[ 2 ] [ 16 ] [ 17 ] [ 18 ] [ 19 ]このため、多くのコンピュータ アーキテクチャで基本的なアドレス指定可能な要素として使用されていました。1993 年までに、ハードウェア設計の傾向は 8 ビットバイトに収束しました。[ 20 ] しかし、基盤となるハードウェア設計に依存することの曖昧さのため、 8 ビットのシーケンスを明示的に示すためにオクテット単位が定義されました。
コンピュータは通常、ビットを一定サイズのグループ(慣習的に「ワード」と呼ばれる)で扱います。バイトと同様に、ワードのビット数もハードウェア設計によって異なり、一般的には8~80 ビット、特殊なコンピュータではそれ以上になる場合もあります。21世紀初頭の市販のパーソナルコンピュータやサーバーコンピュータのワードサイズは32ビットまたは64 ビットでした。
国際単位系(SI)は、標準単位の倍数を表す一連の十進接頭辞を定義しており、これらはビットやバイトにも一般的に用いられます。キロ(10³ )からクエッタ(10³⁰)までの接頭辞は千の倍数で増加し、対応する単位はキロビット(kbit)からクエッタビット(Qbit)です。
[...]
IBM
の
STRETCHコンピュータを背景に、8 ビットずつに分割できる 64 文字のワードを扱っていました (8 ビットのグループに対して「
バイト
」という用語を造語した
ヴェルナー・ブッフホルツ
博士の指導の下、私はその文字セットを設計しました
)。 [...]
IBM 360 は
8 ビット文字を使用していましたが、直接 ASCII ではありませんでした。そのため、ブッフホルツの「バイト」は至る所で広まりました。私自身は多くの理由からその名前が好きではありませんでした。 [...]
を測定する単位の選択に対応します。基数が2の場合、結果として得られる単位はバイナリ数字、またはより簡潔に
ビットと呼ばれることがあり、これは
JW Tukey
によって提案された言葉です
。
{{cite book}}ISBN /日付の不一致(ヘルプ)[...] 編集の観点から最も重要なのは、1 ビットから 6 ビットの長さの任意の文字または数字を処理できる機能です [...] シフトマトリックスは、
並列にメモリから来る60 ビットの
ワードを、
加算
器にシリアルに送信する文字、または「
バイト
」と呼ばれるものに
変換
するために使用されます。60 ビットは、6 つの異なるレベルの
磁気コア
にダンプされます。したがって、位置 9 から 1 が出てくると、その下の 6 つのコアすべてに現れます。 [...] 加算器は、すべてのビットを受け入れるか、一部のビットのみを受け入れることができます。 [...] 右端から始めて、4ビットの10
進数
で演算を行うと仮定します
。まず、0対角線にパルスを印加し、0から5までの6ビットを出力します。加算器は、そのうち最初の4ビット(0~3)のみを受け入れます。4ビット目と5ビット目は無視されます。次に、4対角線にパルスを印加します。これにより、4から9までのビットが出力されますが、最後の2ビットは再び無視されます。以下同様です。[...] 6ビットすべてを
英数字
演算に使用したり、論理解析のために1ビットのバイトのみを扱ったり、バイトを任意のビット数だけオフセットしたりすることも同様に簡単です。[...]
Stretch
の開発初期段階の 1956 年 6 月に書かれた内部メモに含まれていました
。
バイトは
、1 ビットから 6 ビットまでの任意の数の並列ビットで構成されると説明されていました。したがって、バイトは、その用途に適した長さを持つものと想定されていました。その最初の使用は、一度に 6 ビットを扱う 1950 年代の入出力機器の文脈でした。8 ビット バイトへの移行の可能性は 1956 年 8 月に検討され、その後まもなく Stretch の設計に組み込まれました。この用語が初めて公表されたのは、1959年に
G
A
Blaauw
、
F
P
Brooks
Jr
、
W
Buchholz
による論文「Processing Data in Bits and Pieces」で、
IRE
Transactions on Electronic Computers
、1959年6月号、121ページに掲載された。この論文の概念は、W Buchholz
編集の
「Planning a Computer System (Project Stretch)」
、
McGraw-Hill Book Company
(1962)の第4章で詳しく説明されている。この用語を造語した根拠は、同書の40ページで次のように説明されている。
バイトとは
、文字を符号化するために使用されるビットのグループ、または入出力ユニットとの間で並列に送信されるビット数を指す。
ここでは文字以外の用語
が使われているのは、特定の文字が異なるアプリケーションで複数のコードで表現される場合があり、異なるコードが異なるビット数(つまり、異なるバイトサイズ)を使用する場合があるためである。入出力伝送では、ビットのグループ化は完全に任意であり、実際の文字とは何の関係もない。 (この用語は
bite
から造語されたものだが、 bit
への誤用を避けるために綴りが変更されている
。)
System/360は
、バイトとワードのサイズ(いずれも2のべき乗)といったStretchの多くの概念を引き継いだ。しかし、経済性を考慮して、バイトサイズは最大8ビットに固定され、ビットレベルのアドレス指定はバイトレベルのアドレス指定に置き換えられた。[...]