バイトはデジタル情報の単位で、通常は8ビットで構成されます。歴史的に、バイトはコンピュータ内でテキストの1文字をエンコードするために使用されるビット数でした[1] [2]。このため、多くのコンピュータアーキテクチャでアドレス指定可能なメモリの最小単位となっています。任意のサイズのバイトを一般的な8ビットの定義と区別するために、インターネットプロトコル( RFC 791)などのネットワークプロトコル文書 では、8ビットバイトをオクテットと呼びます[3]。オクテット内のビットは通常、ビットエンディアンに応じて0から7または7から0の番号でカウントされます。
バイトのサイズは歴史的にハードウェアに依存しており、サイズを義務付ける明確な標準は存在しなかった。1~48ビットのサイズが使用されてきた。[4] [5] [6] [7] 6ビットの文字コードは初期のエンコードシステムでよく使用された実装であり、1960年代には6ビットと9ビットのバイトを使用するコンピュータが一般的だった。これらのシステムは、2、3、4、5、6、8、または10個の6ビットバイトに対応する12、18、24、30、36、48、または60ビットのメモリワードを持つことが多く、レガシーシステムで21世紀まで存続した。この時代には、バイトという用語が一般的になる前は、命令ストリーム内のビットのグループ化はシラブル[a]またはスラブと呼ばれることが多かった。
ISO/IEC 2382-1:1993 に規定されているように、現代の事実上の標準である8ビットは、 2の8乗が256であることから、1バイトあたり0から255までのバイナリエンコード値を可能にする便利な2の累乗です。 [8]国際規格IEC 80000-13はこの共通の意味を成文化しました。多くの種類のアプリケーションは8ビット以下で表現できる情報を使用しており、プロセッサ設計者は通常、この用途に合わせて最適化します。主要な商用コンピューティングアーキテクチャの普及により、8ビットバイトは広く受け入れられるようになりました。[9]現代のアーキテクチャでは通常、それぞれ4バイトまたは8バイトで構成される32ビットまたは64ビットワードが使用されます。
バイトの単位記号は、国際電気標準会議(IEC)と電気電子学会(IEEE)によって大文字のBで指定されました。 [10]国際的には、単位オクテットは8ビットのシーケンスを明示的に定義し、「バイト」という用語の潜在的な曖昧さを排除します。[11] [12]オクテットの記号「o」は、バイトとベルの間の記号「B」の曖昧さを都合よく排除します。
バイトという用語は、1956年6月にヴェルナー・ブッフホルツによって造語されました。 [4] [13] [14] [b] IBM Stretch [15] [16] [1] [13] [14] [17] [18]コンピュータの初期設計段階で、ビットへのアドレス指定と、命令にエンコードされたバイトサイズを持つ可変長フィールド(VFL)命令を備えていました。[13]これは、誤ってビットに変化するのを避けるために、biteを意図的に書き換えたものです。[1] [13] [19] [c]
コンピュータのワードサイズよりも小さいビットグループ、特に4ビットのグループを指すバイトのもう1つの起源は、ルイス・G・ドゥーリーによる記録に残っています。彼は、 1956年か1957年にMITリンカーン研究所でジュール・シュワルツとディック・ビーラーとともにSAGEと呼ばれる防空システムに取り組んでいたときに、この用語を造ったと主張しました。このシステムは、ランド、MIT、IBMによって共同開発されました。[20] [21]その後、シュワルツの言語JOVIALで実際にこの用語が使用されましたが、著者はそれがAN/FSQ-31から派生したものであると漠然と記憶していました。[22] [21]
初期のコンピュータは、さまざまな 4 ビットの 2進化 10 進数(BCD) 表現と、米国陸軍( FIELDATA ) と海軍で一般的な印刷可能なグラフィック パターン用の6 ビットコードを使用していました。これらの表現には、英数字と特殊なグラフィック シンボルが含まれていました。これらのセットは 1963 年に 7 ビットのコーディングに拡張され、米国標準情報交換コード(ASCII) または連邦情報処理規格と呼ばれ、1960 年代に米国政府および大学のさまざまな部門で使用されていた互換性のないテレプリンター コードに取って代わりました。ASCII には、大文字と小文字のアルファベットの区別、書き言葉の送信を容易にする制御文字のセット、ページ送りや改行などの印刷装置の機能、および伝送媒体上のデータ フローの物理的または論理的制御が含まれていました。[18] 1960年代初頭、IBMはASCII標準化にも積極的に取り組んでいたが、同時にSystem/360製品ラインに8ビットの拡張2進化10進コード(EBCDIC)を導入した。これは、以前のカードパンチで使用されていた6ビットの2進化10進数(BCDIC)表現[d]を拡張したものである。 [23] System/360の隆盛により、8ビットの記憶サイズが広く採用されるようになったが、[18] [16] [13] EBCDICとASCIIのエンコード方式は細部では異なる。
1960年代初頭、AT&Tは長距離幹線にデジタル電話を導入しました。この技術では、8ビットのμ-law符号化が採用されました。この大規模な投資により、8ビットデータの伝送コストが削減されることが期待されました。
ドナルド・クヌースは『 The Art of Computer Programming』第1巻(初版1968年)において、仮想のMIXコンピュータにおける「バイト」という語を、「不特定量の情報を含み、少なくとも64の異なる値、最大100の異なる値を保持できる単位」として用いている。[24]また、彼は「1975年頃から、バイトという言葉は正確に8つの2進数の桁の並びを意味するようになった。MIXに関連してバイトについて語る際には、バイトがまだ標準化されていなかった時代を思い起こさせ、以前の意味に限定する」と述べている。[24]
1970年代に8ビット マイクロプロセッサが開発されたことで、この記憶容量が普及しました。Intel 8086の前身であるIntel 8080などのマイクロプロセッサは、1バイト内の4ビットペアに対して、10進加算調整(DAA)命令などの少数の演算を実行することもできました。4ビットの量は、ニブル(ニブルとも呼ばれます)と呼ばれることが多く、1つの16進数で便宜的に表されます。
オクテットという用語は、8ビットのサイズを明確に指定します。[18] [12]これはプロトコル定義で広く使用されています。
歴史的には、少なくとも西ヨーロッパでは、オクタッドまたはオクタードという用語が8ビットを表すために使用されていました。 [25] [26]しかし、この用法はもはや一般的ではありません。この用語の正確な起源は不明ですが、1960年代と1970年代のイギリス、オランダ、ドイツの文献、そしてフィリップスのメインフレームコンピュータのドキュメント全体に見られます。
バイトの単位記号は、IEC 80000-13、IEEE 1541、およびメトリック交換フォーマット[10]で大文字のBとして 規定されています。
国際数量体系(ISQ)において、Bはベル(対数電力比の単位)の記号でもあるため、IEC規格と矛盾が生じます。しかし、ベルはあまり使用されない単位であるため、混乱の危険性はほとんどありません。ベルは主に10の位の分数であるデシベル(dB)で信号強度や音圧レベルの測定に使用され、10分の1バイトの単位であるデシバイトなどの分数は伝送速度などの派生単位でのみ使用されます。
オクテットを表す小文字のoは、IEC 80000-13でオクテットの記号として定義されており、フランス語[27]やルーマニア語などの言語で一般的に使用されています。また、koやMoのように、倍数を表すメトリック接頭辞と組み合わせて使用されることもあります。
バイトに基づいて単位の倍数を定義するシステムは複数存在します。一部のシステムは国際単位系(SI)に従って10 の累乗に基づいており、たとえば接頭辞キロを 1000 (10 3 ) と定義しています。また、他のシステムは2 の累乗に基づいています。これらのシステムの命名法は混乱を招いています。10 の累乗に基づくシステムは、標準のSI 接頭辞(キロ、メガ、ギガ、...) とそれに対応する記号 (k、M、G、...) を使用します。ただし、2 の累乗に基づくシステムは、2 進接頭辞 (キビ、メビ、ギビ、...) とそれに対応する記号 (Ki、Mi、Gi、...) を使用することがあります。また、接頭辞 K、M、G を使用することもあり、接頭辞 M または G が使用されている場合はあいまいさが生じます。
キロバイトの場合、10進法と2進法の解釈の違いは比較的小さく(キビバイトより約2%小さい)、単位が大きくなるにつれて両者の差は大きくなります(相対的な差は3桁ごとに2.4%ずつ大きくなります)。例えば、10の累乗を基準とするテラバイトは、2の累乗を基準とするテビバイトより約9%小さくなります。
10の累乗を用いた接頭辞の定義(1キロバイト(記号kB)は1,000バイトと定義)は、国際電気標準会議(IEC)によって推奨されている。[28] IEC規格では、1ヨタバイト(YB)(1000の8乗バイト)までの8つの倍数が定義されている。[29]追加の接頭辞であるronna-( 1000の9乗)とquetta-(1000の10乗)は、2022年に国際度量衡局(BIPM)によって採用された。 [30] [31]
この定義は、コンピュータネットワークのデータレート単位、内部バス、ハードドライブとフラッシュメディアの転送速度、およびほとんどのストレージメディア、特にハードドライブ、[32]フラッシュベースのストレージ、[33] DVD [34 ]の容量に最も一般的に使用されています。この定義を使用するオペレーティングシステムには、 macOS、[35] iOS、[35] Ubuntu、[36] Debianなどがあります。[37]これは、 CPUクロック速度やパフォーマンスの測定値など、コンピューティングにおけるSI接頭辞の他の用法とも一致しています。
IBM System 360および関連するディスク・システムとテープ・システムは、バイトを8ビットに設定し、容量を10進数で表記していました。[38]初期の8インチ、5.25インチ、3.5インチのフロッピーディスクは、より正確な「KiB」ではなく「KB」を用いて、1024の倍数で容量を示していました。後期の大型の8インチ、5.25インチ、3.5インチのフロッピーディスクは、1024,000の倍数で容量を示し、「KB」=1024バイト、「MB」=1024,000バイトといったハイブリッド表記を採用しました。 初期の5.25インチディスクは、128バイトと256バイトのセクターを使用していたにもかかわらず、 10進数[疑わしい-議論が必要]を使用していました。 [39]ハードディスクは、主に256バイト、その後512バイトのブロックが使用され、4096バイトのブロックが標準となりました。[40] RAMは常に2の累乗単位で販売されていました。[引用が必要]
2の累乗に基づく単位系は、1キビバイト(KiB)が1,024(すなわち2の10乗)バイトに相当するもので、国際規格IEC 80000-13で定義されており、各国および国際標準化団体( BIPM、IEC、NIST )によってサポートされています。IEC規格では、10の累乗が定義されており、最大1キュービバイト(QiB)は1024の10乗バイトに相当します。[41]
1990年代のJEDEC規格では、1キロバイト(KB)が1,024バイトに等しいという別の命名システム(以下、慣例規則と呼ぶ)が言及されている。 [42] [43] [44] 1メガバイト(MB)は1024の2乗バイトに等しく、1ギガバイト(GB)は1024の3乗バイトに等しい。JEDEC規格では最初の3つの倍数(GBまで)のみ言及されており、TB以上については言及されていない。紛らわしく不正確ではあるが、[45]この慣例規則はMicrosoft Windowsオペレーティングシステム[46] [より適切な情報源が必要]やメインメモリやCPUキャッシュサイズなどのランダムアクセスメモリ容量、およびVodafone [47]、AT&T [48]、Orange [49]、Telstra [50]などの通信会社のマーケティングや課金に使用されている。
ストレージ容量については、macOSとiOSではMac OS X 10.5 LeopardとiOS 10までは慣習的な表記法が使用されていましたが、それ以降は10の累乗に基づく単位に切り替わりました。[35]
様々なコンピュータベンダーが、様々なサイズのデータを表す用語を独自に考案しており、時には同じベンダー内でも、同じ用語で異なるサイズを表す場合があります。これらの用語には、ダブルワード、ハーフワード、ロングワード、クアッドワード、スラブ、スーパーワード、シラブルなどがあります。また、非公式な用語も存在します。例えば、4ビットを表すハーフバイトやニブル、 1000 8を表すオクタルバイトなどです。

1メガバイトの容量を持つディスクの広告を見ると、これは何を意味するのでしょうか? 3つの妥当な答えがあり、どれが正しいのかご存知の方はいらっしゃいますか?… 最小容量と最大容量の差はわずか5%未満なので、これはそれほど重要な問題ではありません。とはいえ、標準的な基準値、あるいは基準値が存在するかどうかを知ることができれば幸いです。
— アラン・D・プラット著『図書館の小型コンピュータ』 1982年[51]
現代のコンピュータメモリは2進アーキテクチャを採用しており、2の累乗に基づくメモリ単位の定義が最も実用的である。2進数の倍数にキロという接頭辞が付けられたのは、便宜上の理由からである。1024はおよそ1000。[27]この定義はパーソナルコンピューティングの初期の数十年間に人気があり、タンドン5 1/4インチDDフロッピーフォーマット(368 640バイト)が「360KB」として宣伝されている。1024バイトの規格を採用した。しかし、これは普遍的なものではなかった。シュガートSA-400 5 1/4インチフロッピーディスクは、フォーマットされていない状態で109,375バイトの容量を持ち、[52] 1000バイトの規格を採用し、「110キロバイト」と宣伝されていた。[53]同様に、8インチDEC RX01フロッピー(1975年)は、256バイトでフォーマットされ、「256k」と宣伝されていた。[54]一部のデバイスは2つの定義を混ぜて宣伝されていた。最も顕著な例として、「1.44MB」と宣伝されていたフロッピーディスクの実際の容量は1440 KiB、1.47 MB または 1.41 MiB に相当します。
1995年、国際純正応用化学連合(IUPAC)の命名法および記号に関する部会委員会は、この曖昧さを解決するために、1024の累乗を表す2進接頭辞として、キビ(キロバイナリー)、メビ(メガバイナリー)、ギビ(ギガバイナリー)を提案した。[55] [56]
1998年12月、IECはIUPACが提案した接頭辞(kibi、mebi、gibiなど)を採用することで、1024の累乗を明確に示すことで、このような複数の用法と定義に対処しました。[57]したがって、1キビバイト(1KiB)は1024バイト=1024バイト、1メビバイト(1MiB)は1024バイト= 1024バイトです。1 048 576バイトなど。
1999年、ドナルド・クヌースはキビバイトを「ラージキロバイト」(KKB)と呼ぶことを提案した。[58]
IECはIUPACの提案を採用し、1999年1月に規格を公表した。[59] [60] IECの接頭辞は国際量体系の一部である。IECはさらに、キロバイトは、1000バイト。[61]
バイトの倍数に関する2進法と10進法の定義をめぐる消費者の混乱から生じた訴訟は、一般的にメーカーに有利な結果となり、裁判所はギガバイトまたはGBの法的定義は1GB =1 000 000 000 (10 9 )バイト(10進数の定義)ではなく、2進数の定義(2 30、つまり1 073 741 824)。具体的には、北カリフォルニア地区連邦地方裁判所は、「米国議会は、ギガバイトの十進法による定義を『米国の貿易および商業』の目的上『好ましい』ものとみなしている[...]カリフォルニア州議会も同様に、この州におけるすべての『取引』に十進法を採用している」と判決を下した。 [ 62]
ドライブメーカーのウエスタンデジタルに対する訴訟など、これ以前の訴訟では、裁判所の判断が下されることなく和解に至った。[63] [64]ウエスタンデジタルは異議を唱え、製品に使用可能な容量が広告されている容量と異なる場合があることを明示的に記載した免責事項を追加した。[63]シーゲイトも同様の理由で訴えられ、和解した。[63] [65]
多くのプログラミング言語では、データ型 byteが定義されています。
CおよびC++プログラミング言語では、バイトを「実行環境の基本文字セットの任意のメンバーを格納できる大きさの、アドレス指定可能なデータ記憶単位」と定義しています(C標準規格3.6項)。C標準規格では、整数データ型のunsigned charは少なくとも256の異なる値を保持し、少なくとも8ビットで表現されることが規定されています(5.2.4.2.1項)。CおよびC++の様々な実装では、1バイトの記憶域として8、9、16、32、または36ビットが予約されています。[72] [73] [f]さらに、CおよびC++標準規格では、2つのバイトの間にギャップがあってはならないことが規定されています。これは、メモリ内のすべてのビットが1バイトの一部であることを意味します。[74]
Javaのプリミティブデータ型であるバイトは8ビットとして定義されています。これは符号付きデータ型で、-128から127までの値を保持します。
C#などの.NETプログラミング言語では、 byte を符号なし型として定義し、 sbyte を符号付きデータ型として定義し、それぞれ 0 から 255 までの値と-128 から 127 までの値を保持します。
データ伝送システムにおいて、バイトはシリアルデータストリーム内の連続したビット列として使用され、データの最小単位を表します。非同期通信の場合、完全な伝送単位には通常、スタートビット、1~2個のストップビット、および場合によってはパリティビットが含まれます。したがって、実際のデータが5~8ビットの場合、そのサイズは7~12ビットの範囲になります。[75]同期通信の場合、エラーチェックには通常、フレームの末尾のバイトが使用されます。
CHAR_BITファイルlimits.hに実装どおりに文書化されています。
ビット に加えて、ここでマシン設計によって課される構造を説明するために使用される用語を以下に挙げます。
バイトは、文字をエンコードするために使用されるビットのグループ、または入出力装置間で並行して送信されるビット数を示します。文字以外の用語がここで使用されるのは、特定の文字が異なるアプリケーションで複数のコードによって表される場合があり、異なるコードが異なるビット数(つまり、異なるバイトサイズ)を使用する可能性があるためです。入出力送信では、ビットのグループ化は完全に任意で、実際の文字とは関係がありません。(この用語はbiteから作られた造語ですが、誤ってbitに変わるのを避けるために綴りが変更されています。)
ワードは、1 メモリ サイクルでメモリからまたはメモリに並行して送信されるデータ ビットの数で構成されます。したがって、ワード サイズはメモリの構造的特性として定義されます。(カテナという用語は、 Bull GAMMA 60 コンピュータの設計者がこの目的で作った造語です。)
ブロックは、単一の入出力命令に応答して入出力装置間で送信されるワードの数を指します。ブロック サイズは入出力ユニットの構造的な特性であり、設計によって固定されている場合もあれば、プログラムによって変更される場合もあります。
オクテット 8ビットバイト。
[...] 編集の観点から最も重要なのは、1 から 6 ビットの長さの任意の文字または数字を処理できることです。図 2 は、メモリから並列に送られる 60 ビットのワードを文字、またはここで呼んでいる「バイト」に変換して加算器にシリアルに送信するために使用されるシフト マトリックスを示しています。60 ビットは、6
つの異なるレベルの磁気コアにダンプされます。したがって、位置 9 から 1 が出てくると、その下の 6 つのコアすべてに現れます。任意の対角線にパルスを送信すると、その線に沿って格納されている 6 ビットが加算器に送信されます。加算器は、すべてのビットを受け入れることも、一部のビットだけを受け入れることもできます。右から始まる 4 ビットの 10進数字 を操作する必要があると仮定します。0 の対角線に最初にパルスが送信され、0 から 5 の 6 ビットが送信されます。加算器は、そのうち最初の 4 ビット (0 から 3) のみを受け入れます。ビット 4 と 5 は無視されます。次に、対角線4にパルスが送られます。これによりビット4から9が出力され、最後の2ビットは再び無視されます。以下同様に、6ビットすべてを英数字処理 に使用したり、1ビットのみのバイトを論理解析に使用したり、任意のビット数だけバイトをオフセットしたりすることも同様に簡単です。これらはすべて、適切なシフト対角線を引くことで実現できます。加算器の出力において、同様のマトリックス構成を用いて直列動作から並列動作へと切り替えます。[...]
バイト - コンピュータワードの区分。
Byte = zusammengehörige Folge von ia neun Bits;ダヴォン・シンド・アハト・ダテンビッツ、新しい人生のプリュフビット
バイト:
複数のビットで構成される文字列。単位として扱われ、通常は文字または文字の一部を表します。
注:
1 バイトのビット数は、特定のデータ処理システムごとに固定されています。2
バイトのビット数は通常8です。
バイト、オクテット、8ビットバイト:8ビットで構成される文字列。
1950年代半ばにIBMのプロジェクト・ストレッチに携わっていたW・ブッフホルツ氏から、以下の手紙をいただきました。彼の手紙には、その経緯が記されています。
私は貴誌の定期購読者ではありませんが、1976年11月号に掲載された「バイト」という用語の起源に関する質問について、私がこの専門用語を使ったことを知っていた同僚から聞きました(1976年11月号BYTEの77ページ、「Olde Englishe」参照)。ファイルを調べましたが、出生証明書は見つかりませんでした。しかし、「バイト」は1977年に21歳の誕生日を迎え、成熟期を迎えていると確信しています。8
ビットを意味するバイトは、1960年代半ばに広く普及させたIBM System/360に由来すると考えられています。編集者が、この用語の起源が初期のストレッチ・コンピュータに遡るという指摘は正しいですが(ただし、ストレッチはIBMが開発した第2世代トランジスタ・コンピュータの最後ではなく、最初のものだったという点は誤りです)。ファイル内で最初に参照が見つかったのは、 Stretch
の開発初期、1956 年 6 月に書かれた内部メモでした。バイトは 1 から 6 までの任意の数の並列ビットで構成されると説明されていました。したがって、バイトは状況に応じた長さであると考えられていました。バイトが最初に使用されたのは、一度に 6 ビットを処理した 1950 年代の入出力機器のコンテキストでした。8 ビット バイトに移行する可能性は 1956 年 8 月に検討され、その後まもなく Stretch の設計に組み込まれました。 この用語が初めて出版されたのは、1959 年の IRE Transactions on Electronic Computers 、1959 年 6 月の 121 ページに掲載された、GA Blaauw、FP Brooks Jr、W Buchholz による論文「Processing Data in Bits and Pieces」です。この論文の概念は、W Buchholz 編、McGraw-Hill Book Company (1962) の Planning a Computer System (Project Stretch) の第 4 章で詳しく説明されています。この用語を作った根拠は、40 ページで次のように説明されています。
バイトとは、文字を符号化するために使用されるビットの集合、または入出力装置間で並列に伝送されるビット数を表します。ここで「文字」以外の用語を使用するのは、特定の文字が異なるアプリケーションで複数のコードで表現される場合があり、また異なるコードでは異なるビット数(つまり、異なるバイトサイズ)が使用される場合があるためです。入出力伝送において、ビットの集合は完全に任意であり、実際の文字とは無関係です。(この用語は「 bite (バイト)」から派生した造語ですが、誤って「bit(ビット)」と表記されるのを避けるために「bit」に書き換えられています。)
System/360は、2の累乗である基本バイトサイズとワードサイズなど、Stretchの概念の多くを引き継ぎました。しかし、経済性を考慮して、バイトサイズは最大8ビットに固定され、ビットレベルのアドレス指定はバイトアドレス指定に置き換えられました。
それ以来、「バイト」という用語は一般的に8ビットを意味するようになり、一般的な用語として定着しました。
他に、コンピューター分野に特化した造語で、英語の一般辞書に掲載されているものはありますか?
1956年夏:ゲリット・ブラウ、フレッド・ブルックス、ヴェルナー・ブッフホルツ、ジョン・コック、ジム・ポメレーンがStretchチームに加わる。ロイド・ハンターがトランジスタ担当のリーダーとなる。
1956年7月:ヴェルナー・ブッフホルツは報告書の中で、Stretchにおける64ビットワード長の利点を列挙した。これはまた、NSAの8ビットバイト要件もサポートする。ヴェルナーの「バイト」という用語が初めて普及したのはこのメモによる。
注意:この年表では、「バイト」という用語の誕生年を1956 年 7 月と誤って指定していますが、ブッフホルツは実際には1956 年 6 月からこの用語を使用していました。
[...] 60は1、2、3、4、5、6の倍数です。したがって、1ビットから6ビットの長さのバイトは、1ワードと次のワードの間でバイトを分割することなく、60ビットワードに効率的にパックできます。より長いバイトが必要な場合は、もちろん60ビットはもはや理想的ではありません。現在のアプリケーションでは、1ビット、4ビット、6ビットが本当に重要なケースです。64
ビットワードでは、入出力で6ビットバイトを扱う際に、ワード内の4ビットを未使用のままにするなど、何らかの妥協が必要になることがよくあります。しかし、LINKコンピュータはこれらのギャップを編集し、ワード間で分割されたバイトを処理する機能を備えています。[...]
[...] シリアル通信における入出力バイトの最大サイズは、エラー検出・訂正ビットを除いて8ビットになります。したがって、Exchangeは8ビットバイト単位で動作し、1バイトあたり8ビット未満の入出力ユニットは残りのビットを空白のままにします。結果として生じるギャップは、後でプログラミングによって削除できます。[...]
IBMに入社して、64文字制限がもたらす混乱を目の当たりにしました。特に、大文字と小文字の両方が必要となるワードプロセッサについて考え始めた時は、その混乱は顕著でした。
既存の47文字に小文字26文字を加えると73文字となり、6ビットで表現できる文字数より9文字も多くなります。私が知る限り、8ビットバイトを搭載した最初のコンピュータであるSTRETCH を
念頭に、パンチカードの文字コードを256文字まで拡張するという提案もしました [1]。真剣に受け止めてくれた人もいましたが、私は単なるパロディーだと考えていました。 そこで、7ビット文字について考え始めた人もいましたが、これはとんでもない話でした。IBMのSTRETCHコンピュータを背景に、8文字ずつに分割できる64文字の単語を扱うという状況下で(8ビットのグループを表す「バイト」という用語を考案したヴェルナー・ブッフホルツ博士の指導の下、私はSTRETCHの文字セットを設計しました)、文字セットは8ビット単位のグループ分けを64文字で表現する必要がありました。 [2] 256ビットまで扱える汎用的な8ビット文字セットを作るのは合理的に思えました。当時の私のモットーは「2の累乗は魔法だ」でした。そこで私が率いるグループは、そのような提案を立案し、その正当性を証明しました[3]。しかし、ASCIIを公式化する標準化グループに提示したところ、少々進歩しすぎたため、彼らは当面7ビットセット、あるいは上位半分を将来の作業に残す8ビットセットで中止しました。IBM 360は8ビット文字を使用していましたが、直接ASCIIではありませんでした。こうして、 ブッフホルツの「バイト」は広く普及しました。私自身は、多くの理由からその名前が好きではありませんでした。設計では8ビットが並列に動作していました。しかしその後、CPU内部とテープドライブの両方に、自己チェック用の9ビットを備えたIBMの新しい部品が登場しました。この9ビットバイトをマスコミに公開したのは1973年のことでした。しかしそれよりずっと前、 1965年から66年にかけてフランスのCie. Bullでソフトウェア事業を率いていた頃、私は「バイト」という表現はもはや推奨されず、「オクテット」という表現が使われるべきだと主張しました。当時私が好んでいた言葉が、今では「オクテット」という表現が主流になっていることにお気づきでしょう。 これは、16ビット、32ビット、64ビット、さらには128ビットを並列に伝送できる新しい通信方式の登場によって正当化されています。しかし、一部の愚かな人々は、この並列転送を理由に、今では「16ビットバイト」と呼んでいます。これはUNICODEセットにも見られるものです。確信はありませんが、もしかしたら「ヘクステット」と呼ぶべきかもしれません。しかし、私の主張が今でも正しいことにお気づきになるでしょう。2の累乗は、今でも魔法の力を持っているのです!
バイトという用語は、1956年から1957年頃にMITリンカーン研究所で、ランド研究所、リンカーン研究所、およびIBMが共同開発したSAGE(北米防空システム)というプロジェクトの中で作られました。その時代には、コンピュータのメモリ構造はすでにワード サイズで定義されていました。ワードは x 個のビットで構成され、ビットはワード内のバイナリ表記の位置を表します。操作は通常、フル ワード内のすべてのビットに対して行われます。 私たちは、フル ワード サイズ未満の論理ビット セットを指すためにバイトという用語を作りました。当時は、具体的に x ビットとして定義されていませんでしたが、コード化されたデータ項目のほとんどが4 ビットのサイズであったため、通常は 4 ビットのセットを指していました。その後まもなく、私は他の職務に就き、SAGE から外れました。長年アジアで過ごした後、米国に戻り、バイトという用語が新しいマイクロコンピュータ テクノロジで基本的なアドレス指定可能なメモリ ユニットを指すために使用されていることを知って困惑しました。
ACMカンファレンスで行われたプログラミング言語の歴史に関する 質疑応答で、次のようなやり取りがありました。
[ジョン・グッドイナフ氏:JOVIAL
で「バイト」という用語が使われているとおっしゃっていましたが、この用語の由来はどこから来たのですか? ] [ジュール・シュワルツ氏(JOVIALの発明者): 私の記憶では、AN/FSQ-31は709とは全く異なるコンピュータで、バイト指向でした。確かなことは覚えていませんが、そのコンピュータの説明に「バイト」という言葉が含まれていて、私たちもそれを使用していたことはほぼ間違いありません。 ] [フレッド・ブルックス氏: それについて少しお伺いしてもよろしいでしょうか?STRETCHの定義の一部としてWerner Buchholz氏がこの言葉を造語し、AN/FSQ-31はSTRETCHからこの言葉を引用しましたが、この言葉の考案者はWerner氏であることは間違いありません。 ] [ シュワルツ氏: その通りです。ありがとうございます。 ]
DVDの命名法では、1ギガバイトは10億バイトと定義されています…