バイトは、一般的に8ビットで構成されるデジタル情報の単位です。歴史的に、バイトはコンピュータでテキストの1文字をエンコードするために使用されるビット数でした[ 1 ] [ 2 ]。そのため、多くのコンピュータアーキテクチャでは、バイトはアドレス指定可能な最小のメモリ単位となっています。任意のサイズのバイトを一般的な8ビットの定義から区別するために、インターネットプロトコル(RFC 791 )などのネットワークプロトコル文書では、8ビットバイトをオクテットと呼んでいます。[ 3 ]オクテット内のビットは、通常、ビットエンディアンに応じて0から7または7から0の番号で数えられます。
バイトのサイズは歴史的にハードウェアに依存しており、サイズを規定する明確な標準は存在しませんでした。1~48ビットのサイズが使用されてきました。[ 4 ] [ 5 ] [ 6 ] [ 7 ] 6ビット文字コードは初期のエンコーディングシステムでよく使用された実装であり、1960年代には6ビットおよび9ビットバイトを使用するコンピュータが一般的でした。これらのシステムでは、メモリワードが12、18、24、30、36、48、または60ビットであることが多く、これは2、3、4、5、6、8、または10個の6ビットバイトに対応し、レガシーシステムでは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」は、バイトとbelの間の記号「B」の曖昧さも都合よく排除します。
バイトという用語は、IBM Stretch [ 15 ] [ 16 ] [ 1 ] [ 13 ] [ 14 ] [ 17 ] [ 18 ]コンピュータの初期設計段階で、ビットへのアドレッシングと、命令にバイトサイズがエンコードされた可変フィールド長 (VFL) 命令を備えていた 1956 年 6 月に Werner Buchholz によって造語されました。[ 4 ] [ 13 ] [ 14 ] [ b ]これは、誤ってbitに変わることを避けるために、biteを意図的に綴り直したものです。[ 1 ] [ 13 ] [ 19 ] [ c ]
バイトという用語が、コンピュータのワードサイズよりも小さいビットグループ、特に4ビットのグループを指す別の起源として記録されているのは、Louis G. Dooley氏によるもので、同氏は1956年か1957年にMITリンカーン研究所でJules Schwartz氏とDick Beeler氏と共にSAGEと呼ばれる防空システムの開発に取り組んでいた際にこの用語を考案したと主張している。このシステムはRand、MIT、IBMが共同で開発したものである。 [ 20 ] [ 21 ]後にSchwartz氏の言語JOVIALで実際にこの用語が使用されたが、著者はAN/FSQ-31から派生したものだと漠然と記憶している。[ 22 ] [ 21 ]
初期のコンピュータは、さまざまな4ビットの2進符号化10進数(BCD)表現と、米陸軍(FIELDATA)と海軍で一般的に使用されていた印刷可能なグラフィックパターン用の6ビットコードを使用していました。これらの表現には、英数字と特殊なグラフィックシンボルが含まれていました。これらのセットは、1963年に7ビットのコーディングに拡張され、米国情報交換標準コード(ASCII)として連邦情報処理標準となり、1960年代に米国政府のさまざまな部門や大学で使用されていた互換性のないテレプリンタコードに取って代わりました。ASCIIには、大文字と小文字のアルファベットの区別と、書き言葉の送信や、ページ送りや改行などの印刷装置の機能、伝送媒体を介したデータフローの物理的または論理的な制御を容易にするための制御文字のセットが含まれていました。[ 18 ] 1960年代初頭、IBMはASCII標準化にも積極的に取り組む一方で、System/360製品ラインに、以前のカードパンチで使用されていた6ビットのバイナリ符号化10進数(BCDIC)表現[ d ]を拡張した8ビットの拡張バイナリ符号化10進数交換コード(EBCDIC)を導入しました。[ 23 ] System/360の普及により、8ビットの記憶容量が広く採用されるようになりましたが、[ 18 ] [ 16 ] [ 13 ] EBCDICとASCIIの符号化方式は詳細には異なります。
1960年代初頭、AT&Tは長距離幹線回線にデジタル電話を導入した。これは8ビットのμ則符号化方式を採用していた。この大規模な投資により、8ビットデータの伝送コストが削減されることが期待された。
『コンピュータプログラミングの技法』第1巻(1968年初版)で、ドナルド・クヌースは、架空のMIXコンピュータにおいてバイトを「少なくとも64個の異なる値、最大で100個の異なる値を保持できる、特定されていない量の情報を含む単位」と定義している。「したがって、バイナリコンピュータでは、バイトは6ビットで構成されている必要がある」[ 24 ] 。彼はまた、「1975年頃から、バイトという言葉は正確に8桁のバイナリ数字のシーケンスを意味するようになった…MIXに関連してバイトについて話すときは、バイトがまだ標準化されていなかった時代を思い起こし、この言葉の以前の意味に限定する」と述べている[ 24 ] 。
1970年代に8ビットマイクロプロセッサが開発されたことで、この記憶容量が普及しました。Intel 8080 (8086の直接の前身)などのマイクロプロセッサは、 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)で使用され、1バイトの10分の1を表す単位であるデシバイトやその他の分数は、伝送速度などの派生単位でのみ使用される。
オクテットを表す小文字のoは、IEC 80000-13でオクテットの記号として定義されており、フランス語[ 27 ] などの言語で一般的に使用されており、また、koやMoなどの倍数を表すメートル法の接頭辞と組み合わされています。
バイトの単位倍数は、国際単位系(SI)に従って10 のべき乗に基づくメートル法で定義され、たとえばキロという接頭辞は1000 (10 3 ) と定義されています。また、2 のべき乗に基づくバイナリ システムもあります。歴史的に、バイナリ システムではメートル法と同じ接頭辞が使用されていましたが、定量化の方法は異なっていました。後者のシステムの命名法は混乱を招いています。10 のべき乗に基づくシステムでは、標準SI 接頭辞(キロ、メガ、ギガ、... ) とそれに対応する記号 ( k 、 M 、 G 、... ) が使用されます。現代のバイナリ システムでは、キビ、メビ、ギビなどの接頭辞とそれに対応する記号 ( Ki 、 Mi 、 Gi 、... ) が使用されます。[ e ]バイナリ システムの歴史的な使用法では、依然として接頭辞 K 、 M 、 G が使用されます。
キロバイトの場合、10進数表記と2進数表記の差は比較的小さい(キビバイトより約2%小さい)が、単位が大きくなるにつれて両者の差は大きくなる(3桁大きくなるごとに相対的な差は2.4%ずつ大きくなる)。例えば、10のべき乗で表されるテラバイトは、2のべき乗で表されるテビバイトより約9%小さい。
1キロバイト(記号kB)を1,000バイトと定義する10のべき乗を用いた接頭辞の定義は、国際電気標準会議(IEC)によって推奨されている。 [ 28 ] IEC規格では、1ヨタバイト(YB)(1000 8バイト)まで、このような8つの倍数が定義されている。[ 29 ] 1000 9を表すronna-と1000 10を表すquetta-という追加の接頭辞は、2022年に国際度量衡局(BIPM)によって採用された。[ 30 ] [ 31 ]
この定義は、コンピュータ ネットワークのデータ レート単位、内部バス、ハード ドライブおよびフラッシュ メディアの転送速度、ISP契約、およびほとんどのストレージ メディアの容量、特にハード ドライブ[ 32 ]およびSSD、フラッシュベースのストレージ[ 33 ] 、 CD、DVD [ 34 ]、およびBlu-rayで最も一般的に使用されています。この定義を使用するオペレーティングシステムには、 Android (およびその派生版)、macOS [ 35 ] 、 iOS [ 35 ] 、 WatchOS 、 Ubuntu [ 36 ] 、 Debian [ 37 ] 、 ChromeOS 、 HarmonyOS 、およびGnomeデスクトップ環境が含まれます。また、CPU クロック速度やパフォーマンスの測定など、コンピューティングにおけるSI 接頭辞の他の使用とも一致しています。
IBM System 360 および関連するディスクおよびテープ システムでは、バイトを 8 ビットに設定し、容量を 10 進単位で文書化しました。[38] 初期の 8 インチ、5 + 1/4インチ、および3 + 1/2インチのフロッピーディスクでは、より正確な「KiB」ではなく「KB」を使用して、容量を 1024 の倍数で示しました。後期のより大型の 8 インチ、5 + 1/4インチ、および3 + 1/2インチのフロッピーディスクでは、容量をハイブリッド表記、つまり 1024,000 の倍数で示し、「KB」 = 1024 B、「MB」 = 1024,000 Bを使用しました。 初期の5 + 1/4インチディスクは、128 バイトおよび 256 バイトのセクタを使用していたにもかかわらず、10進数を使用していました。 [ 39 ]ハードディスクは、4096 バイトのブロックが標準になる前は、主に 256 バイト、次に 512 バイトを使用していた。[ 40 ]
1 キビバイト (KiB) が 1,024 (つまり 2 10 ) バイトに等しい2 のべき乗に基づく単位系は、SI 接頭辞の誤った使用による混乱を解決するために IEC によって作成されました[ 41 ]。これは、国内および国際標準化団体 ( BIPM、IEC、NIST ) によってサポートされている国際標準 IEC 80000-13 で定義されています。IEC 標準では、1 キュービバイト (QiB) が 1024 10バイトに等しいまで、10 個の倍数が定義されています。[ 42 ]これらの単位記号は、実際にはほとんど使用されていません。[ 43 ]注目すべき例外はKDEとQt ツールキットに基づくアプリケーションですが、KDE 設定アプリでは SI に切り替えることができます。[ 44 ]
同じ単位の歴史的な命名規則では、1キロバイト(KB)は1,024バイトに等しく、[ 45 ] [ 46 ] [ 47 ] 1メガバイト(MB)は1,024 2バイトに等しく、1ギガバイト(GB)は1,024 3バイトに等しいとされており、これはRAMに使用される1990年代のJEDEC規格で言及されています。JEDEC規格では、最初の3つの倍数(GBまで)のみが言及されており、TB以上については言及されていません。これらの単位は、異なるソフトウェアを使用して比較することによってのみ認識できます。KBのKの大文字が指標になる場合もあります。紛らわしく不正確ではあるものの、[ 48 ]この慣習はMicrosoft Windowsオペレーティングシステム[ 49 ]や、メインメモリやCPU キャッシュサイズなどのランダム アクセス メモリ容量、およびVodafone [ 50 ]、AT&T [ 51 ]、Orange [ 52 ]、Telstra [ 53]などの一部の通信会社によるマーケティングや請求で使用されています。ストレージ容量については、macOS と iOS は Mac OS X 10.5 Leopard および iOS 10 までこの慣習を使用していましたが、その後 10 のべき乗に基づく単位に切り替えました。[ 35 ]
さまざまなコンピュータベンダーは、さまざまなサイズのデータに対して独自の用語を作り出しており、同じベンダー内でも、同じ用語でもサイズが異なる場合があります。これらの用語には、ダブルワード、ハーフワード、ロングワード、クワッドワード、スラブ、スーパーワード、シラブルなどがあります。また、非公式な用語もあります。たとえば、4ビットを表すハーフバイトやニブル、 1000 8を表すオクタルKなどです。

容量が1メガバイトと表示されているディスクを見たとき、これは一体何を意味するのでしょうか?考えられる答えは3つありますが、どれが正しいのかご存知の方がいらっしゃれば教えてください。最小のものと最大のものの差は5%弱なので、これはそれほど重要な問題ではありません。とはいえ、標準的な測定基準が何なのか、あるいはそもそも存在するのかを知りたいものです。
— Allan D. Pratt 著『図書館における小型コンピュータ』 、1982年[ 54 ]
現代の[ f ]コンピュータメモリはバイナリアーキテクチャを採用しているため、メモリ単位の定義は2のべき乗に基づくのが最も実用的です。バイナリ倍数にメートル接頭辞キロを使用するようになったのは、便宜上の理由からです。1024はおよそ1000 . [ 27 ]この定義はパーソナルコンピューティングの初期の数十年間で人気があり、 Tandon 5 1/4インチDDフロッピーフォーマット(368,640バイト)が「 360KB」として宣伝されている。1024バイト表記法。ただし、これは普遍的なものではなかった。Shugart SA-400 5 1/4インチフロッピーディスクはフォーマットされていない状態で109,375バイトを保持しており[ 55 ]、1000表記法を用いて「110 Kバイト」と宣伝されていた[ 56 ] 。同様に、 8インチDEC RX01フロッピーディスク(1975年)は 256 256バイトがフォーマットされ、「256k」と宣伝されていた。[ 57 ]一部のデバイスは、2 つの定義を混ぜ て宣伝されていた。最も顕著なのは、「1.44 MB」と宣伝されたフロッピー ディスクの実際の容量が1440 KiB、これは1.47 MBまたは1.41 MiBに相当します。
1995年、国際純正・応用化学連合(IUPAC)の命名法および記号に関する部門間委員会は、1024のべき乗を表すバイナリ接頭辞のセットを提案することで、この曖昧さを解消しようと試みた。これには、kibi(キロバイナリ)、mebi(メガバイナリ)、gibi(ギガバイナリ)が含まれる。[ 58 ] [ 59 ]
1998年12月、IECは、1024のべき乗を明確に示すためにIUPACが提案した接頭辞(キビ、メビ、ギビなど)を採用することで、このような複数の用法と定義に対処しました。[ 60 ]したがって、1キビバイト(1 KiB)は1024 1バイト=1024バイト、1メビバイト(1 MiB)は1024 2バイト=1,048,576バイト、といった具合です。
1999年、ドナルド・クヌースはキビバイトを「大きなキロバイト」(KKB)と呼ぶことを提案した。[ 61 ]
IECはIUPACの提案を採用し、1999年1月に規格を公表した。[ 62 ] [ 63 ] IECの接頭辞は国際量体系の一部である。IECはさらに、キロバイトは、1000バイト。[ 64 ]
バイトの倍数のバイナリ定義と10進数定義に関する消費者の混乱を原因とする訴訟は、一般的に製造業者に有利な結果に終わっており、裁判所はギガバイトまたはGBの法的定義は1 GB =1,000,000,000 (10 9 )バイト( 10進数の定義) であり、2 進数の定義 (2 30、つまり、1 073 741 824 )。具体的には、カリフォルニア州北部地区連邦地方裁判所は、「米国議会は、ギガバイトの十進法による定義を『米国の貿易および商業』の目的において『好ましい』定義とみなしており、カリフォルニア州議会も同様に、この州におけるすべての『取引』に十進法を採用している」と判示した。[ 65 ]
以前の訴訟では、ドライブメーカーのWestern Digitalに対する訴訟のように、この問題に関する裁判所の判決がないまま和解で終わっていた。[ 66 ] [ 67 ] Western Digitalは異議申し立てを和解し、使用可能な容量が宣伝されている容量と異なる場合があることを製品に明示的に免責事項として追加した。[ 66 ] Seagateも同様の理由で訴えられ、和解した。[ 66 ] [ 68 ]
多くのプログラミング言語は、データ型byteを定義しています。
Java [ 74 ]、.NET ( C#、F#、VB.NET ) [ 75 ]、Rust [ 76 ]、D [ 77 ]、Go [ 78 ]、Swift [ 79 ]、JavaScript [ 80 ]、Python [ 81 ]、Ruby はすべて、正確に 256 種類の異なる値を保持できる 8 ビット バイトを定義して使用しています。
CおよびC++プログラミング言語では、バイトを「実行環境の基本文字セットの任意のメンバーを保持するのに十分な大きさのデータ記憶のアドレス指定可能な単位」と定義しています( C標準の 3.6 項)。C 標準では、整数データ型unsigned char は少なくとも 256 種類の異なる値を保持し、少なくとも 8 ビットで表現されることが要求されています (5.2.4.2.1 項)。C および C++ のさまざまな実装では、バイトの格納用に 8、9、16、32、または 36 ビットが予約されています。[ 82 ] [ 83 ] [ h ]さらに、C および C++ 標準では、2 つのバイト間にギャップがないことが要求されています。これは、メモリ内のすべてのビットが バイトの一部であることを意味します。[ 84 ] C++17では、ビットのコレクションをモデル化するために使用され、算術型または文字型ではない、基底表現が である列挙型が導入されました。算術演算での使用を防ぐために列挙型として定義されていますが、定数は定義されていません(代わりにのように使用されます)。[ 85 ]std::byteunsigned charbytex{0xFF};
しかし、現代のソフトウェアのほとんどは、8ビット以外のバイトサイズでコンパイルすると実際には動作しません。さらに、POSIXでは「バイトは8ビットの連続したシーケンスで構成される」と規定されています。[ 86 ]今日では、8ビット以外のバイトはDSPなどのニッチな用途でのみ使用されています。
データ伝送システムでは、バイトはシリアルデータストリーム内の連続したビット列として使用され、データの最小識別単位を表します。非同期通信の場合、完全な伝送単位には通常、スタートビット、1つまたは2つのストップビット、場合によってはパリティビットが追加され、実際のデータ5~8ビットに対してそのサイズは7~12ビットになることがあります。[ 87 ]同期通信の場合、エラーチェックには通常、フレームの末尾のバイトが使用されます。
CHAR_BITファイルで実装されているもの。ビット に加えて、マシン設計によって課せられる構造を説明するためにここで使用される用語を以下に示します。 バイトは、文字をエンコードするために使用されるビットのグループ、または入出力ユニットとの間で並列に送信されるビットの数を表します。特定の文字が異なるアプリケーションで複数のコードで表現される場合があり、異なるコードが異なる数のビット(つまり、異なるバイトサイズ)を使用する場合があるため、ここでは文字以外の用語が使用されます。入出力伝送では、ビットのグループ化は完全に任意であり、実際の文字とは関係がない場合があります。(この用語はbiteから造語されていますが、bitへの偶発的な変化を避けるために綴りが変えられています。)ワードは、 1つの メモリサイクルでメモリとの間で並列に送信されるデータビットの数で構成されます。したがって、ワードサイズはメモリの構造的特性として定義されます。(この目的のために、 Bull GAMMA 60コンピュータの設計者によってcatenaという用語が造語されました。)ブロックは、単一の入出力命令に応じて入出力ユニットとの間で送信されるワードの数を指します。ブロックサイズは、入出力ユニットの構造的特性です。それは設計段階で固定されている場合もあれば、プログラムによって変更される場合もある。
オクテット 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ビットのバイトのみを処理したり、バイトを任意のビット数だけオフセットしたりすることも同様に簡単です。これらはすべて、適切なシフト対角線を引くことで実現できます。加算器の出力でシリアル動作からパラレル動作に切り替える際にも、同様のマトリックス構成が使用されます。[...]
- コンピュータ ワードの分割。注:12ビット、24ビット、48ビットのバイトについて説明します。
Byte = zusammengehörige Folge von ia neun Bits;ダヴォン・シンド・アハト・ダテンビッツ、新しい人生のプリュフビット注:バイトとは、通常9ビットのグループ(8ビットのデータと1ビットのパリティ)を指します。
バイト: ビットの集合を単位として扱い、通常は文字または文字の一部を表す文字列。 注記: 1 バイトのビット数は、特定のデータ処理システムで固定されています。 2 バイトのビット数は通常 8 です。
バイト、オクテット、8ビットバイト:8ビットで構成される文字列。
1950年代半ばにIBMのプロジェクト・ストレッチに携わっていた人物の一人、W・ブッフホルツ氏から以下の手紙をいただきました。彼の手紙にはその経緯が書かれています。 貴誌を定期的に読んでいるわけではないのですが、1976年11月号に掲載された「バイト」という用語の起源に関する質問について、私がこの専門用語を広めたことを知っている同僚から聞きました(1976年11月号BYTE誌77ページ、「Old Englishe」参照)。私は自分のファイルを探しましたが、出生証明書は見つかりませんでした。しかし、「バイト」は1977年に21歳の誕生日を迎え、成人を迎えたと確信しています。 多くの人が、8ビットを意味するバイトは、1960年代半ばにバイトを広く普及させたIBM System/360に由来すると考えています。編集者が指摘しているように、この用語は初期のストレッチ・コンピュータに遡ります(ただし、ストレッチはIBMの第2世代トランジスタ・コンピュータとして開発された最初のコンピュータであり、最後のコンピュータではないという点では誤りです)。 ファイル内で最初に見つかった記述は、Stretchの開発初期段階である1956年6月に書かれた社内メモにありました。バイトは1~6ビットの任意の数の並列ビットで構成されると説明されていました。つまり、バイトは用途に応じて適切な長さを持つものと想定されていました。最初にバイトが使われたのは、1950年代の入出力機器の文脈で、当時は一度に6ビットを扱っていました。8ビットバイトへの移行の可能性は1956年8月に検討され、その後まもなくStretchの設計に組み込まれました。 この用語が初めて公表されたのは、1959年6月のIRE Transactions on Electronic Computers誌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への誤字を避けるために綴りが変更されています。) System/360 Stretch は、バイトとワードのサイズ(いずれも 2 のべき乗)といった基本的な概念の多くを引き継ぎました。しかし、経済性を考慮して、バイトサイズは最大 8 ビットに固定され、ビット レベルでのアドレス指定はバイト アドレス指定に置き換えられました。それ以来、バイトという用語は一般的に 8 ビットを意味するようになり、一般的な語彙として定着しました。 コンピュータ分野のために特別に作られた用語で、英語の一般的な辞書に掲載されているものは他にありますか?
注:このタイムラインでは「バイト」という用語の誕生日を1956年7月と誤って記載していますが、ブッフホルツは実際には1956年6月にはすでにこの用語を使用していました。1956年夏:ゲリット・ブラウ、フレッド・ブルックス、ヴェルナー・ブッフホルツ、ジョン・コック、ジム・ポメレンがストレッチチームに加わる。ロイド・ハンターがトランジスタ部門のリーダーシップを発揮。 1956年7月:ヴェルナー・ブッフホルツは報告書の中で、ストレッチの64ビットワード長の利点を列挙。また、NSAの8ビットバイトの要求も支持している。ヴェルナーの用語「バイト」はこのメモで初めて普及した。
[...] 60は1、2、3、4、5、6の倍数です。したがって、1~6ビット長のバイトは、バイトをワード間で分割することなく、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ビットのグループを表す「バイト」という用語を造語したヴェルナー・ブッフホルツ博士の指導の下で、その文字セットを設計しました)。 [2] 256 までを扱える汎用 8 ビット文字セットを作るのは妥当に思えた。当時、私のモットーは「2 のべき乗は魔法だ」だった。そこで、私が率いていたグループはそのような提案を開発し、正当化した [3]。ASCIIを正式化することになっていた標準化グループに提示されたとき、それは少し進歩しすぎたので、彼らは当面 7 ビット セット、または上位半分を将来の作業のために残した 8 ビット セットで止まった。IBM 360 は8ビット文字を使用していたが、直接 ASCII ではなかった。こうして、ブッフホルツの「バイト」はあらゆる場所で普及した。私自身は多くの理由でその名前が好きではなかった。設計では 8 ビットが並列に動き回っていた。しかしその後、CPU とテープ ドライブの両方で自己チェック用の 9 ビットを備えた新しい IBM 部品が登場した。 1973年にこの9ビットバイトを報道機関に公開しました。しかし、それよりずっと前の1965年から1966年にかけて、フランスのBull社でソフトウェア部門を率いていた頃、私は「バイト」という用語を廃止し、「オクテット」を使うべきだと主張しました。当時私が好んだ用語が、今では主流になっていることにお気づきでしょう。これは、16、32、64、さらには128ビットを並列に伝送できる新しい通信方式によって正当化されます。しかし、一部の愚かな人々は、この並列転送のために「16ビットバイト」と呼んでいます。これはUNICODEセットにも記載されています。確信はありませんが、これは「ヘクステット」と呼ぶべきかもしれません。しかし、私が今でも正しいことにお気づきでしょう。2のべき乗は、今でも魔法のようです!
「バイト」という言葉は、1956年から1957年頃、MITリンカーン研究所で、ランド研究所、リンカーン研究所、IBMが共同開発したSAGE(北米防空システム)と呼ばれるプロジェクトの中で造語されました。当時、コンピュータのメモリ構造はすでにワードサイズで定義されていました。ワードはxビットで構成され、ビットはワード内のバイナリ表記上の位置を表していました。演算は通常、ワード全体のすべてのビットに対して行われました。 私たちは、ワードサイズよりも小さい論理ビットセットを指すために「バイト」という言葉を造語しました。当時、それは具体的にxビットとは定義されていませんでしたが、ほとんどのコード化されたデータ項目のサイズが4ビットであったため、通常は4ビットのセットと呼ばれていました。その後まもなく、私はSAGEから離れる他の責任を負いました。アジアで長年過ごした後、米国に戻った私は、新しいマイクロコンピュータ技術で「バイト」という言葉が基本アドレス指定可能なメモリユニットを指すために使われていることを知って困惑しました。
プログラミング言語の歴史に関するACMカンファレンス での質疑応答セッションで、次のようなやり取りがありました。 [ジョン・グッドイナフ:JOVIAL では「バイト」という用語が使われているとおっしゃっていましたが、この用語はどこから来たのですか?] [ジュールズ・シュワルツ(JOVIALの発明者): 私の記憶では、709とは全く異なるコンピュータであるAN/FSQ-31はバイト指向でした。はっきりとは覚えていませんが、そのコンピュータの説明に「バイト」という言葉が含まれていたことはほぼ確実で、私たちはそれを使っていました。] [フレッド・ブルックス: それについてお話してもよろしいでしょうか?ヴェルナー・ブッフホルツがSTRETCHの定義の一部としてこの言葉を造語し、AN/FSQ-31はSTRETCHからそれを借用しましたが、ヴェルナーが間違いなくこの言葉の考案者です。] [シュワルツ: その通りです。ありがとうございます。]
1ギガバイトは10億バイトと定義されています...