コンテンツにスキップ

ビット

出典: フリー百科事典『ウィキペディア(Wikipedia)』

ビット (bit) は、情報理論コンピューティング、多くのデジタル通信における情報の基本単位英語版である。ビットは、コンピューティングでの二値ストレージやデジタル通信における二値シンボルのことも意味し、そのストレージ・シンボルには、(情報量の単位としての)1ビットの情報を記憶・符号化できる。二進数の1桁のことであり、その名前はbinary digitの2語の一部を組み合わせた語(かばん語)である[1]

情報理論では、1ビットは通常、等しい確率で0または1である二進数ランダム変数の情報量(情報エントロピー[2]、またはそのような変数の値が判明したときに得られる情報として定義される[3][4]。情報量の単位として、このビットはクロード・シャノンにちなんで名付けられたシャノンとも呼ばれる[5]。厳密には、ビットはデータ量(ストレージ量)の単位、シャノンは情報量の単位と区別するが、歴史的経緯により後者も前者と同じ単位(ビット)で表現され、誤りの可能性を無視してよければNビットのストレージによりNビットの情報量が保持できる。

1ビットの情報は、二進数の1桁として論理値を表し、2つののうち1つのみを持つ。2つの状態を持つ何らかの機構によって物理的に実装できる。この状態値は、最も一般的には「0」/「1」として表されるが、真/偽 (True/False)、yes/no、+/-、on/offなどの他の表現も可能である。この値と実際の物理的状態との対応は慣習の問題であり、同じデバイスやプログラム内でも異なる割り当てを使用することができる。

ビットの単位記号は、IEC 80000-13:2008 では "bit"、IEEE 1541-2002IEEE Std 260.1-2004英語版では"b"(小文字のビー)を推奨している。一般に8桁の二進数のグループ(8ビット)は「1バイト (byte)」と呼ばれるが、歴史的にはバイトのサイズは厳密には定義されていない。

歴史

[編集]

データを離散ビットによって表す方法は、バジル・ブション英語版ジャン=バプティスト・ファルコンフランス語版によって1732年に発明されジョゼフ・マリー・ジャカールが1804年に開発したパンチカードに使用され、後にセミオン・コルサコフ英語版チャールズ・バベッジハーマン・ホレリス、およびIBMなどの初期のコンピュータメーカーにより採用された。また、鑽孔紙テープも同様の考えによるものであった。これら全てのシステムで、媒体(カードやテープ)は概念的に穴の位置の配列を保持していた。それぞれの位置における穴の有無が1ビットの情報を伝達した。ビットによる文章の符号化は、モールス信号(1844年)や、テレタイプストックティッカー(1870年)などの初期のデジタル通信機でも使用されていた。

ラルフ・ハートレーは、1928年に情報の対数的計量の使用を提案した[6]クロード・シャノンは、1948年の独創的な論文『通信の数学的理論』で「ビット」という言葉を初めて使用した[7][8][9]。シャノンは、その言葉は1947年1月9日にベル研究所ジョン・テューキーが書いたメモにおいて"binary information digit"(二進数情報桁)を略して"bit"と書いたことに由来するとしている[7]。1936年にヴァネヴァー・ブッシュは、当時の機械式コンピュータで使用されていたパンチカードに保存できる情報量のことを"bits of information"(情報のビット)と書いた[10]コンラート・ツーゼによって構築された最初のプログラム可能なコンピュータは、数値に二進数表記を使用した。

物理的表現

[編集]

ビットは、可能な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" など全ての倍数で使用されると規定している[11]。ただし、小文字の "b" も広く使用されており、IEEE 1541-2002などで推奨されている。慣習的に、大文字の "B" はバイトを表すのに使用され、両者の間には8倍の差がある。

複数のビットを表す単位

[編集]
ビットの単位一覧
SI接頭語
2進接頭辞
IEC 60027-2による)
単位 記号 SI基準 慣用値 単位 記号
キロビット kbit 103 210 キビビット Kibit 210
メガビット Mbit 106 220 メビビット Mibit 220
ギガビット Gbit 109 230 ギビビット Gibit 230
テラビット Tbit 1012 240 テビビット Tibit 240
ペタビット Pbit 1015 250 ペビビット Pibit 250
エクサビット Ebit 1018 260 エクスビビット Eibit 260
ゼタビット Zbit 1021 270 ゼビビット Zibit 270
ヨタビット Ybit 1024 280 ヨビビット Yibit 280

伝統的に複数のビットを表す情報単位英語版がいくつか使用されてきた。最も一般的なのは、1956年6月にワーナー・ブッフホルツ英語版によって作られた単位「バイト」である。これは、歴史的にコンピュータで1つのキャラクタの符号化に使用されるビットの集まりを表すために使用された[12][13][14][15][16]。このため、多くのコンピュータアーキテクチャで基本的なアドレスの単位として使用された。過去には様々なビット数のバイトが使用されてきたが、今日では8ビットを1バイトとする実装が広く使用されている。ただし、バイトの大きさが基礎となるハードウェア設計に依存するという曖昧さを回避するために、8ビットであることを明示的に示す単位「オクテット」が定義されている。

通常、コンピュータは、「ワード」と呼ばれる固定サイズのビットのグループ単位で操作を行う。バイトと同様に、1つのワードに含まれるビット数もハードウェア設計によって異なる。通常は8〜80ビットだが、一部の専用コンピュータではさらに大きくなる。21世紀初頭において、パーソナルコンピュータやサーバコンピュータのワードサイズは32ビットまたは64ビットである。

国際単位系では、基本となる単位の十進数の倍量・分量を表すSI接頭語が定義されている。これは一般的にビットやバイトに対しても適用されている。ただし、本来の十進数の倍量(1000の冪乗)ではなく、1024 (=210)の冪乗を表すのに使用されることもあり、曖昧さの回避のために1024の冪乗であることを明示する別の接頭辞が定義されている(2進接頭辞を参照)。

情報容量と情報圧縮

[編集]

ストレージの情報容量や通信路の情報容量がビットやビット毎秒で表されるとき、多くの場合でバイナリデータを格納するコンピュータハードウェアの容量である二進数を指す[17]。ストレージの情報容量は、そこに格納される情報量の上限に過ぎない。ストレージに含まれる各ビットの2つの可能な値(1と0)の数が等しくない場合、ストレージに含まれる情報の情報量は、「情報容量」として表される数値よりも小さくなる。実際、値が完全に予測可能ならば、その値の読み取りからは新たな情報は得られない(不確実性の解決が発生せず、したがって情報が利用できないため、エントロピーはゼロである)。nビットのストレージを使用するコンピュータファイルに含まれる情報がm < nビットのみの場合、その情報は原則として少なくとも平均で約mビットで符号化できる。この原則は、データ圧縮技術の基礎である。最適に圧縮された場合、伝送容量は情報量に近づく[17]

ビット単位の操作

[編集]

一部のビット演算のプロセッサ命令(bit setなど)は、データをビットの集合と解釈して操作するのではなく、個別のビットを操作するレベルで動作する。

1980年代、ビットマップコンピュータディスプレイが一般的になると、一部のコンピュータでは、画面上の特定の矩形領域に対応するビットを設定・コピーするための特殊なビットブロック転送命令("bitblt"または"blit")を提供した。

バイトワードといった単位におけるビット位置の定義は CPU によって異なる。右端(数値としての最小位、LSB)を第0ビットにしている流儀と、左端(数値としての最大位、MSB)を第0ビットにしている流儀の両方がある。現在は前者が多い。この違いをエンディアンといい、前者をリトルエンディアン、後者をビッグエンディアンという。

関連項目

[編集]

脚注

[編集]
  1. ^ Coded Character Sets, History and Development (1 ed.). Addison-Wesley Publishing Company, Inc.. (1980). p. x. ISBN 978-0-201-14460-4. LCCN 77--90165. オリジナルの2016-11-18時点におけるアーカイブ。. https://web.archive.org/web/20161118230039/https://books.google.com/books?id=6-tQAAAAMAAJ 2016年5月22日閲覧。  [1]
  2. ^ Understanding Information Transmission, (2006) 
  3. ^ Digital Communications, (2006) 
  4. ^ IEEE Std 260.1-2004
  5. ^ Units: B”. 2016年5月4日時点のオリジナルよりアーカイブ2019年10月1日閲覧。
  6. ^ Information theory and coding. McGraw-Hill. (1963) 
  7. ^ a b “A Mathematical Theory of Communication”. Bell System Technical Journal 27 (3): 379–423. (July 1948). doi:10.1002/j.1538-7305.1948.tb01338.x. hdl:11858/00-001M-0000-002C-4314-2. オリジナルの1998-07-15時点におけるアーカイブ。. https://web.archive.org/web/19980715013250/http://cm.bell-labs.com/cm/ms/what/shannonday/shannon1948.pdf. "The choice of a logarithmic base corresponds to the choice of a unit for measuring information. If the base 2 is used the resulting units may be called binary digits, or more briefly bits, a word suggested by J. W. Tukey." 
  8. ^ “A Mathematical Theory of Communication”. Bell System Technical Journal 27 (4): 623–666. (October 1948). doi:10.1002/j.1538-7305.1948.tb00917.x. hdl:11858/00-001M-0000-002C-4314-2. 
  9. ^ A Mathematical Theory of Communication. University of Illinois Press. (1949). ISBN 0-252-72548-4. オリジナルの1998-07-15時点におけるアーカイブ。. https://web.archive.org/web/19980715013250/http://cm.bell-labs.com/cm/ms/what/shannonday/shannon1948.pdf 
  10. ^ “Instrumental analysis”. Bulletin of the American Mathematical Society 42 (10): 649–669. (1936). doi:10.1090/S0002-9904-1936-06390-1. オリジナルの2014-10-06時点におけるアーカイブ。. https://web.archive.org/web/20141006153002/http://projecteuclid.org/euclid.bams/1183499313. 
  11. ^ National Institute of Standards and Technology (2008), Guide for the Use of the International System of Units. Online version. Archived 3 June 2016 at the Wayback Machine.
  12. ^ Why is a byte 8 bits? Or is it?”. Computer History Vignettes (2000年8月8日). 2017年4月3日時点のオリジナルよりアーカイブ。2017年4月3日閲覧。 “[…] With IBM's STRETCH computer as background, handling 64-character words divisible into groups of 8 (I designed the character set for it, under the guidance of Dr. Werner Buchholz, the man who DID coin the term "byte" for an 8-bit grouping). […] The IBM 360 used 8-bit characters, although not ASCII directly. Thus Buchholz's "byte" caught on everywhere. I myself did not like the name for many reasons. […]”
  13. ^ “7. The Shift Matrix”. The Link System. IBM. (1956-06-11). pp. 5–6. Stretch Memo No. 39G. オリジナルの2017-04-04時点におけるアーカイブ。. http://archive.computerhistory.org/resources/text/IBM/Stretch/pdfs/06-07/102632284.pdf 2016年4月4日閲覧. "[…] Most important, from the point of view of editing, will be the ability to handle any characters or digits, from 1 to 6 bits long […] the Shift Matrix to be used to convert a 60-bit word, coming from Memory in parallel, into characters, or "bytes" as we have called them, to be sent to the Adder serially. The 60 bits are dumped into magnetic cores on six different levels. Thus, if a 1 comes out of position 9, it appears in all six cores underneath. […] The Adder may accept all or only some of the bits. […] Assume that it is desired to operate on 4 bit decimal digits, starting at the right. The 0-diagonal is pulsed first, sending out the six bits 0 to 5, of which the Adder accepts only the first four (0-3). Bits 4 and 5 are ignored. Next, the 4 diagonal is pulsed. This sends out bits 4 to 9, of which the last two are again ignored, and so on. […] It is just as easy to use all six bits in alphanumeric work, or to handle bytes of only one bit for logical analysis, or to offset the bytes by any number of bits. […]" 
  14. ^ “The Word "Byte" Comes of Age...”. Byte Magazine 2 (2): 144. (February 1977). https://archive.org/stream/byte-magazine-1977-02/1977_02_BYTE_02-02_Usable_Systems#page/n145/mode/2up. "[…] The first reference found in the files was contained in an internal memo written in June 1956 during the early days of developing Stretch. A byte was described as consisting of any number of parallel bits from one to six. Thus a byte was assumed to have a length appropriate for the occasion. Its first use was in the context of the input-output equipment of the 1950s, which handled six bits at a time. The possibility of going to 8 bit bytes was considered in August 1956 and incorporated in the design of Stretch shortly thereafter. The first published reference to the term occurred in 1959 in a paper "Processing Data in Bits and Pieces" by G A Blaauw英語版, F P Brooks Jr and W Buchholz英語版 in the IRE Transactions on Electronic Computers, June 1959, page 121. The notions of that paper were elaborated in Chapter 4 of Planning a Computer System (Project Stretch), edited by W Buchholz, McGraw-Hill Book Company (1962). The rationale for coining the term was explained there on page 40 as follows:
    Byte denotes a group of bits used to encode a character, or the number of bits transmitted in parallel to and from input-output units. A term other than character is used here because a given character may be represented in different applications by more than one code, and different codes may use different numbers of bits (ie, different byte sizes). In input-output transmission the grouping of bits may be completely arbitrary and have no relation to actual characters. (The term is coined from bite, but respelled to avoid accidental mutation to bit.)
    System/360 took over many of the Stretch concepts, including the basic byte and word sizes, which are powers of 2. For economy, however, the byte size was fixed at the 8 bit maximum, and addressing at the bit level was replaced by byte addressing. […]"
     
  15. ^ Buchholz-1962Buchholz, Werner, ed. (1962), “Chapter 4: Natural Data Units” (PDF), Planning a Computer System – Project Stretch, McGraw-Hill Book Company, Inc. / The Maple Press Company, York, PA., pp. 39–40, LCCN 61--10466, オリジナルの2017-04-03時点におけるアーカイブ。, https://web.archive.org/web/20170403014651/http://archive.computerhistory.org/resources/text/IBM/Stretch/pdfs/Buchholz_102636426.pdf 2017年4月3日閲覧。 
  16. ^ “A proposal for a generalized card code of 256 characters”. Communications of the ACM 2 (9): 19–23. (1959). doi:10.1145/368424.368435. 
  17. ^ a b Information in small bits Information in Small Bits is a book produced as part of a non-profit outreach project of the IEEE Information Theory Society. The book introduces Claude Shannon and basic concepts of Information Theory to children 8+ using relatable cartoon stories and problem-solving activities.

外部リンク

[編集]