web-dev-qa-db-ja.com

ストレージ容量の混乱(10と2の累乗)

HDDを調べていたところ、次のようなドキュメントが見つかりました(東芝製、リンク: 2.5-Inch SATA HDD mq01abdxxx )。

"1ギガバイト(1GB)は、10の累乗を使用して10 ^ 9 = 1,000,000,000バイトを意味します。ただし、コンピュータオペレーティングシステムは、1の定義に2の累乗を使用してストレージ容量を報告します= 2 ^ 30 = 1,073,741,824バイトであるため、ストレージ容量が少なくなっています。」

次に、10の累乗は2の累乗よりも大きくなります。

例10 ^ 2 = 100および2 ^ 2 = 4。

しかし、私は同じストレージ容量について述べている文書を理解していません:

1GBは1,000,000,000バイト(10の累乗)および1,073,741,824バイト(2の累乗)であり、ストレージ容量が少ない(2の累乗)ことを示します。なぜそれが少ないのですか? 10の累乗よりも2の累乗の方が1 GB多いストレージ容量がある場合。

24

2の累乗を使用する歴史的な理由は、バイナリコードの行で構成されるアドレス空間を使用してCPUがメモリとハードディスクにアクセスするためです。ハードウェアプロデューサーは、次の方法で名前を決定しました。

2^10 = 1024 and as it's almost 1000 then call it 1 Kilobyte

2^20 = 1048576 bytes and as it's almost 1000000 then call it 1 Megabyte

通常のユーザーにとって、それはナンセンスで面倒です。さらに、接頭辞「キロ」、「メガ」などは国際単位系(SI)標準と競合します。ここで、「1キロワット」は10 ^ 3または1000ワットを意味します。

問題を解決するために、2000年にThe International Electrotechnical CommissionまたはIECは、標準の2の累乗に基づくユニットの表記法を提案しました ISO/IEC 80000-1

新しい名前は、古い名前の2番目の音節を「bi」(「2」を参照)で置き換えることによって作成されました。 キロバイトキビバイトになりました。新しいユニットにも対応するシンボルが追加されたため、「10キビバイト」は10 kBではなく10 KiBと記述されます。これは対応表です:

Notation      Symbol    Value
1 kilobyte    1 kB      10^3  = 1000 bytes
1 megabyte    1 MB      10^6  = 1000000 bytes
1 gigabyte    1 GB      10^9  = 1000000000 bytes
1 terabyte    1 TB      10^12 = 1000000000000 bytes


1 kibibyte    1 KiB     2^10 = 1024 bytes
1 mebibyte    1 MiB     2^20 = 1048576 bytes
1 gibibyte    1 GiB     2^30 = 1073741824 bytes
1 tebibyte    1 TiB     2^40 = 1099511627776 bytes

16年後も、多くのハードウェアおよびソフトウェアベンダーは、[〜#〜] si [〜#〜]の名前でbase-2ユニットを参照しています。 。 「メガバイト」は、1000000バイトまたは1048576バイトを意味します。

100 GBのハードドライブを購入した場合、容量は100x10 ^ 9または10 ^ 11バイトです。しかし、これは重要ですが、オペレーティングシステムはドライブに93 GBの容量があると報告するだけです(10^11)/(2^30)。 100ギガバイトドライブを購入しました。これは93ギビバイトに相当しますドライブ。オペレーティングシステムは、間違った表記法を使用しています。

ドライブメーカーは、この問題を免責事項と説明で隠し、常に「実際のフォーマット済み容量は少ない場合がある」という結論につながります。

58
jcbermu

要するに、それはすべてマーケティングに関するものでした。

jcbermuはうまく説明しましたが、そのすべての背後にある理由には同意しません。

あらゆる情報システムはバイナリシステムを使用しますが、ビットとバイトは^ 2として書き込まれますが、これは正常です。そのため、混乱の原因となっているのはオペレーティングシステムやソフトウェアではありません。ここではすべてがバイナリです。

^ 10システムのHDD容量を記載するのはHDDメーカーの責任であり、かなりの実用的なGBを失うことになります。 20GBのHDDは実際には18GBを保存できます。1TBのドライブは実際には930GBになります。 「バイバイト」のあざけりは、混乱を防ぐために考案されましたが、実際には採用されていません。

21
Overmind

jcbermuの答え は良いですが、別の角度からアプローチしたいと思います。

1GBは1,000,000,000バイト(10の累乗)と1,073,741,824バイト(2の累乗)であり、ストレージ容量は少なくなります(2の累乗)。なぜそれが少ないのですか? 2の累乗で10の累乗よりも1 GB多いストレージ容量が表示される場合。

記憶媒体any記憶媒体-アクセス可能なビットの特定の数を格納できます。通常、汎用コンピューティングでは、バイトまたはバイトの倍数として表されますが、たとえばメモリIC(集積回路、チップ)を検討し始めると、それらのメモリ容量はアクセス可能なビットで表されます。

ハードディスクは、特定のビット数またはバイト数を格納します。これらは、技術的な理由から、セクターの観点から対処されています。たとえば、4 TBドライブには、それぞれ512バイトの7,814,037,168セクターがあり、4,000,787,030,016バイトのストレージ容量になります。これが実際に得られるものです。 。(実際には、ファイルシステム、ジャーナル、パーティショニングなど、コンピュータの簿記情報の一部が失われます。ただし、バイトはまだ存在しているため、使用できません。ファイルを保存するために必要なため、ファイルを保存するために必要です。

もちろん、4,000,787,030,016という数はやや扱いにくいです。そのため、この情報を他の方法で表現することを選択します。しかし、jcbermuが示すように、2つの異なる方法で表現することを選択します。の10、または2の累乗。

10の累乗では、4,000,787,030,016バイトは4.000787030016 * 10 ^ 12バイトで、非常にうまく丸められます。 4桁の有効数字で、4.001 TBに丸められます。SIの「tera」の定義は10 ^ 12です。私たちのハードディスクは4 * 10 ^ 12バイト以上を保存できるため、SI用語では4テラバイトのストレージデバイスです。

2の累乗では、4,000,787,030,016バイトは3.638694607 * 2 ^ 40バイトであり、あまりうまく丸められません。それも見た目より少ない数量のようです。3.639は4.001未満であり、それはマーケティングに不向きです(3.6 TBメーカーが次にドライブするときにドライブしたい) doorは4.0を販売していますTBドライブは同じ価格ですか?)これはバイナリプレフィックス3.6 "tebibytes"です。ここで、 "bi"は2を底とする数量であることを示します。

ただし、実際には同じバイト数です。 計算を再度行うと、3.638694607 * 2 ^ 40 = 4.000787030016 * 10 ^ 12と表示されるため、最終的に同じストレージ容量が得られます。

16
a CVn

他の回答では、違いの歴史的な理由を取り上げていますが、数学的には違いについて質問しているようです。

10の1乗は2の1乗よりも大きく、逆に1ギガバイト(10 ^ 9バイト)は1ギビバイト(2 ^ 30バイト)よりも小さいというのは正しいことです。

サイズの逆転は、1ギガバイト(9の累乗)のパワーよりも1ギビバイト(30の累乗)のパワーの方が多いという事実によって説明されます。累乗の数は、個々の累乗のサイズよりも最終サイズに大きな影響を与えることがわかります。

ギガバイト(2 ^ 30)で測定した場合に報告されるディスクのサイズがギガバイト(10 ^ 9)で測定した場合よりも小さい理由については、測定単位を大きくすると数値が小さくなるのは、固定数量を測定する場合よりも自然です。 。たとえば、センチメートル単位の高さとインチ単位の高さを考えます。 1インチは1センチメートルより大きいので、同じ高さはセンチメートル(例:183センチメートル)よりも数インチ(例:72インチ)少なくなります。高さはどちらの場合も同じ物理的距離ですが、各測定値は測定単位に応じて異なる数値を与えるだけです。

5
Edward Peek