バイトとは?
バイトとは、8ビットで構成されるデジタルデータの単位で、0から255までの256通りの値を表せます。ほとんどのコンピュータでは、固有のアドレスを持つメモリの最小単位であり、ファイルのサイズもバイトで数えます。
更新日: 2026年9月24日
- 48H
- 69i
- 20␣
- F0 9F 98 80😀
4文字、7バイト
コンピュータに保存された文字Aは数値の65で、数値の65は 01000001 という8個のビットとして保存されています。この8個のまとまりがバイトです。メモリのアドレスもファイルのサイズもバイト単位で数えますし、プログラミング言語のほとんどすべてのデータ型は、ちょうど整数個のバイトの長さを持っています。
なぜ1バイトは8ビットなのか
「バイト(byte)」という言葉は、1956年にヴェルナー・ブッフホルツがIBMのStretchというコンピュータの開発中に作りました。「bit」と読み間違えられないように、yを使って綴ったのです。初期のコンピュータはさまざまな大きさのまとまりを使っていて、6ビットがよく使われました。6ビットは大文字と数字には十分でしたが、小文字は収まりませんでした。
1964年に発表されたIBMのSystem/360が8ビットのバイトを使い、業界の残りもそれにならいました。8ビットで表せるのは256通りの値で、大文字と小文字、数字、句読点、制御コードを収める余裕があります。また8は2のべき乗なので、1バイトは4ビットずつの2つの半分にきれいに分けられ、それぞれを16進数1桁で書けます。ちょうど8ビットであることを厳密に示す必要があるとき、ネットワークの規格は今でも「オクテット」という言葉を使います。
1バイトに入るもの
1バイトには、00000000 から 11111111 までの256通りのパターンがあります。プログラムはこれをいくつかの決まった方法で読みます。
- 0から255までの符号なしの数として。
- -128から127までの符号付きの数として。
A(65)や!(33)のような1つの文字として。00からFFまでの16進数2桁として。
Pythonの bytes 型はこうした値の並びで、0から255の範囲外の値は受け付けません。
b'Hi!'
[72, 105, 33]
01001000 48
ValueError: bytes must be in range(0, 256)
すべての文字が1バイトに収まるわけではありません。Webのほとんどで使われている文字コードのUTF-8は、128個のASCII文字をそれぞれ1バイトで、それ以外の文字を2から4バイトで保存します。
A 1 bytes: [65] 41
é 2 bytes: [195, 169] c3a9
€ 3 bytes: [226, 130, 172] e282ac
😀 4 bytes: [240, 159, 152, 128] f09f9880
文字列の文字数とバイト数が一致しないことがあるのは、このためです。
ビットとバイトの違い
ビットは1つの0または1です。バイトは8ビットです。2つの単位は記号が大文字か小文字かしか違わないので、混同しやすいです。
| ビット | バイト | |
|---|---|---|
| 何か | 2進数の1桁 | 8ビット |
| 取り得る値 | 2通り(0か1) | 256通り(0から255) |
| 記号 | b(小文字) | B(大文字) |
| よく使われる対象 | 通信速度: Mbps、Gbps | 記憶容量とファイルサイズ: KB、MB、GB |
| 例 | 100 Mbpsの回線 | 5 MBの写真 |
ビットをバイトに直すには8で割ります。100 Mbpsの回線で送れるのは最大で毎秒12.5 MBなので、5 MBの写真をダウンロードするには少なくとも0.4秒かかります。
キロバイト、メガバイト、ギガバイト
大きな単位には2つの体系があり、その差のせいで、新しいドライブがWindowsではラベルの表示より小さく見えます。
| 10進(SI) | バイト数 | 2進(IEC) | バイト数 |
|---|---|---|---|
| キロバイト(kB) | 1,000 | キビバイト(KiB) | 1,024 |
| メガバイト(MB) | 1,000,000 | メビバイト(MiB) | 1,048,576 |
| ギガバイト(GB) | 1,000,000,000 | ギビバイト(GiB) | 1,073,741,824 |
| テラバイト(TB) | 1,000,000,000,000 | テビバイト(TiB) | 1,099,511,627,776 |
ドライブのメーカー、通信速度、そしてmacOS(2009年のバージョン10.6以降)は10進の単位を使います。RAMの容量とWindowsは2進の単位を使いますが、WindowsはそれをKB、MB、GBと表示します。IECはこの混乱をなくすために1998年にキビバイト、メビバイト、ギビバイトという名前を導入しましたが、今でも多くのプログラムはこれらを使っていません。
1.0 TB (decimal, used on the box)
931.3 GiB (binary, what Windows calls GB)
12.5 MB per second
容量が消えたわけではありません。ドライブにはパッケージが約束するとおり1兆バイトが入っています。Windowsが1,000ではなく1,024で3回割っているだけです。
コードの中のバイト
メモリ上のすべての値は、整数個のバイトを占めます。Cでは sizeof がその数を教えてくれます。char は定義上ちょうど1バイトで、現在の64ビットのLinux、macOS、Windowsのシステムでは、short が2バイト、int が4バイト、double が8バイトです。したがって、1,000個の int の値を持つ配列は4,000バイトを使います。
printf("%zu\n", sizeof(int)); /* prints 4 */
Javaの byte 型は常に符号付きで、-128から127までなので、200のような値は収まりません。
byte b = (byte) 200; // b is -56: the same 8 bits, read as signed
画像、圧縮ファイル、ネットワークのパケットのような生のデータは、バイトの配列として扱います。Pythonでは bytes と bytearray、Javaでは byte[]、JavaScriptでは Uint8Array です。Pythonでファイルをモード "rb" で開くと、テキストではなくそのバイトが得られます。
ハッシュやチェックサムもバイトで大きさを測ります。SHA-256のダイジェストは32バイトなので、16進数64文字で表示されます。CRC32のチェックサムは4バイトです。ハッシュ生成ツールを使うと、任意のテキストについて両方を確認できます。
次に読むページ
バイトの下にある単位についてはビットとは何かを、バイトを使って壊れたファイルを検出する方法についてはチェックサムとは何かを読んでください。進数変換ツールを使えば、どんなバイトでも10進数、2進数、16進数の間で変換できます。Cのデータ型のガイドには、Cのすべての型のバイト単位のサイズが載っています。
よくある質問
8ビットの11111111は何と呼ばれますか?
11111111 はすべてのビットが1になったバイトです。符号なしの数として読むと255で、1バイトが持てる最大の値であり、16進数では FF と書きます。2の補数による符号付きのバイトとして読むと、同じビットが -1 を意味します。なぜ8ビットが1バイトなのですか?
4ビットはなぜニブルと呼ばれるのですか?
1バイトは4ビットですか?
バイトとGBはどちらが大きいですか?
1バイトは実際にはどのように見えますか?
01000001 のような、8個の0と1の並びです。このパターンは数値の65で、ASCIIでは文字 A のコードでもあります。プログラマはふつう、代わりに1バイトを16進数2桁で書くので、01000001 は 41 になります。