0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

KB・MB・GBの違いを整理する|1024倍と1000倍、KiB・MiBまで理解する

0
Posted at

1.png

ファイルサイズやストレージ容量を扱っていると、

1KB = 1024B

と覚えていたのに、SSDやHDDでは

1KB = 1000B

として計算されていることがあります。

さらに、

KiB
MiB
GiB

という見慣れない単位まで出てくると、少しややこしくなります。

この記事では、B・KB・MB・GBとKiB・MiB・GiBの違いを整理します。

まず「B」はByte

データ容量の基本になる単位はByte(バイト)です。

B = Byte

その上に、

KB
MB
GB
TB

といった単位があります。

たとえば一般的な表記では、

1 KB = 1000 B
1 MB = 1000 KB
1 GB = 1000 MB
1 TB = 1000 GB

となります。

これは10進数を基準にしたSI接頭辞です。

では「1KB = 1024B」は間違い?

完全な間違いというわけではありません。

コンピュータでは2進数を扱うため、

2^10 = 1024

が非常に扱いやすい数字です。

そのため昔から、

1024 B = 1 KB
1024 KB = 1 MB

のような表現が広く使われてきました。

しかし、1000倍と1024倍が同じ「KB」「MB」という名前で使われると混乱します。

そこで、2進数ベースの単位として、

KiB
MiB
GiB
TiB

が使われます。

KBとKiBは別の単位

厳密には次のように区別できます。

単位 バイト数
1 KB 1,000 B
1 KiB 1,024 B
1 MB 1,000,000 B
1 MiB 1,048,576 B
1 GB 1,000,000,000 B
1 GiB 1,073,741,824 B

KiBは「キビバイト」、MiBは「メビバイト」、GiBは「ギビバイト」と読みます。

1000倍と1024倍でどれくらい差が出る?

小さいデータでは差はそれほど目立ちません。

たとえば、

1 KB = 1000 B
1 KiB = 1024 B

差は24バイトです。

しかし単位が大きくなると差も大きくなります。

1 GB = 1,000,000,000 B
1 GiB = 1,073,741,824 B

差は、

73,741,824 B

です。

約73.7MBの差になります。

TBクラスになると、この違いはさらに大きくなります。

1GBのストレージが「約0.93GiB」になる理由

1GBをGiBへ変換してみます。

1,000,000,000 ÷ 1,073,741,824
≈ 0.9313

つまり、

1 GB ≈ 0.93 GiB

です。

この違いが、ストレージ容量を確認したときに

「表示されている容量が少ない」

と感じる原因の一つになります。

実際には容量が突然減ったのではなく、単位の基準が違っているだけというケースがあります。

ファイルサイズではどちらが使われる?

ここが少し厄介です。

OSやソフトウェアによって、

KBと表示しているが1024倍で計算

している場合もあれば、

1000倍で計算

している場合もあります。

そのため、単に「500MB」と書かれているだけでは、厳密にはどちらの基準なのか分からないケースがあります。

正確なデータ容量を扱う場合は、

Byte数

を確認するのが確実です。

JavaScriptで容量を変換する

たとえばByteからMiBへ変換するなら、

function bytesToMiB(bytes) {
  return bytes / 1024 / 1024;
}

console.log(bytesToMiB(1048576));
// 1

一方、ByteからMBへ変換する場合は、

function bytesToMB(bytes) {
  return bytes / 1000 / 1000;
}

console.log(bytesToMB(1000000));
// 1

となります。

同じ「メガ」相当でも、基準が違うことが分かります。

5GiBは何MB?

まず5GiBをByteへ直します。

5 × 1024 × 1024 × 1024
= 5,368,709,120 B

これをMBへ変換すると、

5,368,709,120 ÷ 1,000,000
= 5,368.70912 MB

つまり、

5 GiB ≈ 5368.71 MB

です。

単位が混在すると暗算では間違いやすくなります。

複数のデータ容量単位をまとめて確認したい場合は、データ容量変換を使うと換算しやすくなります。

bitとByteも混同しやすい

データ容量では、もう一つ注意したいのがbitとByteです。

1 Byte = 8 bit

です。

Byteは大文字のB、

bitは小文字のb

で表記されることが多いです。

たとえば、

100 MB
100 Mb

は同じではありません。

通信速度では、

Mbps
Gbps

のようにbitが使われることが多く、ファイル容量ではMBやGBなどByteがよく使われます。

たとえば100Mbpsの通信速度は理論上、

100 ÷ 8 = 12.5 MB/s

相当です。

「100Mbpsなのに1秒で100MBダウンロードできない」という疑問は、bitとByteの違いを理解すると分かりやすくなります。

実装するときは単位を明示する

プログラムでデータ容量を扱う場合、

const size = 100;

だけでは、その100が何を意味するのか分かりません。

できるだけ、

const sizeBytes = 100;
const maxSizeMiB = 10;

のように単位を変数名へ含めると安全です。

APIの仕様でも、

bytes
KB
KiB
MB
MiB

のどれなのかを明確にしておくことで、単位変換によるバグを防ぎやすくなります。

まとめ

データ容量を扱うときは、まず1000倍と1024倍を区別することが重要です。

10進数ベースでは、

1 KB = 1000 B
1 MB = 1000 KB
1 GB = 1000 MB

2進数ベースでは、

1 KiB = 1024 B
1 MiB = 1024 KiB
1 GiB = 1024 MiB

となります。

さらに、

1 Byte = 8 bit

という違いもあります。

ファイルサイズ、クラウドストレージ、通信速度、APIの上限値などを扱うときは、「数字」だけでなく「どの単位・どの基準なのか」まで確認すると、容量計算のミスをかなり減らせます。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?