
Java超|ビットとバイトの基本
ビットは0と1を表す最小の気の粒、バイトは8個のビットを束ねたエネルギー単位。ここが分かると、Javaの型のサイズと値の範囲がつながって見えてくる。
Javaのデータ型を学んでいると、byte は1バイト、short は2バイト、int は4バイト、long は8バイトというように、バイト という言葉が何度も出てきます。
最初は、1バイト、2バイト、4バイト、8バイトという数字が、ただの暗記項目のように見えるかもしれません。
しかし、ビット と バイト のしくみを知ると、型のサイズと扱える値の範囲がきれいにつながって見えてきます。
Javaの型は、ただ名前が違うだけではありません。
それぞれの型は、コンピュータ内部で使うビット数が違います。
ビット数が違うから、表せる値の数も変わります。
表せる値の数が変わるから、扱える範囲も変わります。
ドラゴンボール風にたとえるなら、ビットは 0か1だけを表す最小の気の粒 です。
1つの気の粒は、消えているか、光っているかの2通りしかありません。
けれども、その気の粒をたくさん並べると、戦闘力、位置情報、合図、文字など、さまざまな情報を表せるようになります。
| Java・コンピュータの考え方 | 意味 | ドラゴンボール風のたとえ |
|---|---|---|
| 0 | 片方の状態 | 気が消えている状態 |
| 1 | もう片方の状態 | 気が光っている状態 |
| ビット | 0または1を表す最小単位 | 最小の気の粒 |
| バイト | 8ビットのまとまり | 8つの気の粒を束ねたエネルギー束 |
| 型のサイズ | 値を表すために使う容量 | 何個の気の粒で値を表すか |
| 値の範囲 | 表せる値の広さ | 作れるエネルギーパターンの多さ |
コンピュータは、私たちが普段使っている10進数ではなく、内部では0と1だけを使って情報を扱います。
この0と1のしくみが分かると、Javaの型のサイズがただの数字ではなく、値を表すための土台 だと分かってきます。
コンピュータは0と1で数を表している
私たちは普段、0から9までの数字を使う 10進数 で数を表しています。
たとえば、13という数は、1と3を使って表します。
一方で、コンピュータは内部で 0と1だけ を使って値を表します。
この表し方を 2進数 といいます。
| 表し方 | 使う数字 | イメージ |
|---|---|---|
| 10進数 | 0〜9 | 人間が普段使う数の表し方 |
| 2進数 | 0と1 | コンピュータ内部で使う数の表し方 |
ドラゴンボール風にたとえるなら、2進数は 消えている気 と 光っている気 だけで情報を送る暗号です。
使える状態は2つだけです。
| 2進数の値 | ドラゴンボール風のイメージ |
|---|---|
| 0 | 気が消えている |
| 1 | 気が光っている |
0と1だけでは、最初は少ない情報しか表せないように見えます。
でも、0と1をたくさん並べることで、多くの情報を表せます。
たとえば、次のような並びです。
00101110人間から見ると、ただの0と1の列に見えるかもしれません。
しかし、コンピュータにとっては意味のある情報です。
Javaの型のサイズを理解するには、この0と1の並びが 何桁あるのか がとても大切です。
桁数が増えるほど、表せる状態の数が増えるからです。
ビットとは2進数の1桁分
ビット とは、2進数の1桁分を表す単位です。
たとえば、次の2進数を見てみます。
00101110この中に並んでいる0や1のひとつひとつが、1ビットです。
| 単位 | 表せる値 | ドラゴンボール風のイメージ |
|---|---|---|
| 1ビット | 0または1 | 気の粒が消えているか、光っているか |
1ビットだけでは、表せる状態は2通りです。
0
1つまり、1ビットはとても小さな情報単位です。
ドラゴンボール風に言えば、1ビットは最小の気の粒です。
その気の粒は、消えているか、光っているかのどちらかしか表せません。
でも、ビットを複数並べると、表せる状態が増えていきます。
| ビット数 | 表せる組み合わせ |
|---|---|
| 1ビット | 0、1 |
| 2ビット | 00、01、10、11 |
| 3ビット | 000、001、010、011、100、101、110、111 |
1つの気の粒では2通りだけ。
でも、2つ並べると4通り。
3つ並べると8通り。
このように、ビットは小さい単位ですが、並べることで一気に表現力が増えていきます。
バイトとは8ビットをまとめた単位
バイト とは、8個のビットをまとめた単位です。
つまり、次の関係になります。
1バイト = 8ビットたとえば、次の2進数は8桁あります。
00101110これは8ビットなので、1バイトにあたります。
| 単位 | 内容 |
|---|---|
| 1ビット | 2進数の1桁 |
| 1バイト | 8ビット |
ドラゴンボール風にたとえるなら、ビットは1つの気の粒です。
バイトは、その気の粒を8個束ねた エネルギー束 です。
1つの気の粒だけでは少ない情報しか表せません。
しかし、8個そろうと、かなり多くのパターンを作れるようになります。
Javaのデータ型で出てくるサイズも、このバイトをもとに考えます。
| 型のサイズ | ビット数 |
|---|---|
| 1バイト | 8ビット |
| 2バイト | 16ビット |
| 4バイト | 32ビット |
| 8バイト | 64ビット |
この対応を知っておくと、Javaの型の表が読みやすくなります。
short は2バイトなので、16ビットです。
int は4バイトなので、32ビットです。
long は8バイトなので、64ビットです。
つまり、型のサイズを見るということは、その型が何個のビットを使って値を表しているのかを見ること でもあります。
図:ビットとバイトの関係

この図が示していること
この図は、2進数の1桁が1ビットであり、8個のビットをまとめると1バイトになることを示しています。
0や1のひとつひとつは小さな情報ですが、それを8個並べることで1つのまとまりとして扱えるようになります。
この図から分かることは、Javaの型で出てくる1バイト、2バイト、4バイト、8バイトという表現が、実際には 何個のビットを使って値を表すのか という話につながっているということです。
1バイトが8ビットだと分かると、2バイトは16ビット、4バイトは32ビット、8バイトは64ビットと考えられるようになります。
ビット数が増えると表せる値の数も増える
ビット数が増えると、表せる値の数も増えます。
これは、Javaの型のサイズと値の範囲を理解するうえでとても大切です。
まず、1ビットを考えます。
0
11ビットでは、0か1の2通りです。
次に、2ビットを考えます。
00
01
10
112ビットでは、4通りを表せます。
さらに、3ビットでは次の8通りです。
000
001
010
011
100
101
110
111つまり、ビットが1つ増えるごとに、表せる通り数は2倍になります。
| ビット数 | 表せる通り数 |
|---|---|
| 1ビット | 2通り |
| 2ビット | 4通り |
| 3ビット | 8通り |
| 8ビット | 256通り |
| 16ビット | 65536通り |
この関係は、次のように表せます。
| 考え方 | 内容 |
|---|---|
| nビット | 2n通りの値を表せる |
| 8ビット | 28 = 256通り |
| 16ビット | 216 = 65536通り |
ドラゴンボール風にたとえるなら、気の粒の数が増えるほど、作れるエネルギーパターンが増えるイメージです。
1つの気の粒なら、消えているか光っているかの2通りだけです。
でも、16個の気の粒を並べれば、とても多くの組み合わせを作れます。
このしくみがあるから、型のサイズが大きいほど、表せる値の範囲も広くなります。
1バイトで表せる値は256通り
1バイトは8ビットです。
そのため、1バイトで表せる値の通り数は、28 です。
28 = 256
つまり、1バイトでは256通りの状態を表せます。
8ビットの並びは、次のように考えられます。
00000000
00000001
00000010
...
1111111100000000 から 11111111 まで、全部で256通りの組み合わせがあります。
| 内容 | 値 |
|---|---|
| 1バイト | 8ビット |
| 表せる通り数 | 28 |
| 結果 | 256通り |
ここで大切なのは、1バイトは256通り と丸暗記するだけではないことです。
1バイトは8ビット。
8ビットでは28通り。
28は256通り。
この流れで考えると、2バイトや4バイトも理解しやすくなります。
| サイズ | ビット数 | 表せる通り数 |
|---|---|---|
| 1バイト | 8ビット | 28 = 256通り |
| 2バイト | 16ビット | 216 = 65536通り |
| 4バイト | 32ビット | 232通り |
| 8バイト | 64ビット | 264通り |
Javaの型のサイズを見たときに、「これは何ビットなのか」「何通りの状態を表せるのか」と考えられるようになると、型の理解がかなり深まります。
short型は2バイトなので16ビットで表される
Javaのshort型は、2バイトの整数型です。
1バイトは8ビットなので、2バイトは16ビットです。
2バイト = 16ビットつまり、short型の値は、コンピュータ内部では16個の0と1を使って表されます。
たとえば、次のようなイメージです。
00000000 000000118ビットが2つ並んで、合計16ビットになっています。
| 型 | サイズ | ビット数 |
|---|---|---|
| short | 2バイト | 16ビット |
16ビットで表せる通り数は、216です。
216 = 65536
つまり、short型は16ビットを使って65536通りの状態を表せます。
ここで、short型の範囲とビット数がつながってきます。
short型は、16ビットで表せる65536種類の状態を、整数の範囲に対応させています。
ドラゴンボール風にたとえるなら、short型は 16個の気の粒で作る整数カプセル です。
16個の気の粒の並び方によって、どの整数を表すのかが決まります。
16ビットで65536通りを表せる理由
16ビットで65536通りを表せる理由は、各ビットが0または1の2通りを持つからです。
1ビットなら2通りです。
0
12ビットなら、2×2で4通りです。
00
01
10
113ビットなら、2×2×2で8通りです。
これを16ビットまで広げると、2を16回かけることになります。
| ビット数 | 計算 | 表せる通り数 |
|---|---|---|
| 1ビット | 21 | 2通り |
| 2ビット | 22 | 4通り |
| 3ビット | 23 | 8通り |
| 16ビット | 216 | 65536通り |
ドラゴンボール風に考えるなら、16個の気の粒があり、それぞれ消えているか光っているかを選べます。
1個ごとに2通りの選択があるため、全体では65536通りものパターンになります。
このしくみが分かると、型のサイズが単なる数字ではなく、表せる値の数に直結していることが見えてきます。
2バイトと聞いたら16ビット。
16ビットと聞いたら216通り。
216通りは65536通り。
この流れで考えられると、short型の範囲も理解しやすくなります。
short型では65536種類の値を整数に対応させている
short型では、16ビットで表せる65536種類の状態を、10進数の -32768 から 32767 までの整数に対応させています。
ここで大切なのは、65536通りすべてを0以上の数に使っているわけではないという点です。
short型は、正の数だけでなく、負の数も表します。
そのため、表せる範囲が負の側と正の側に分かれています。
| コンピュータ内部の2進数 | 表している10進数 |
|---|---|
| 0000000000000000 | 0 |
| 0000000000000001 | 1 |
| 0000000000000010 | 2 |
| 0111111111111111 | 32767 |
| 1000000000000000 | -32768 |
| 1000000000000001 | -32767 |
| 1111111111111111 | -1 |
この表を見ると、2進数の並びと10進数の値が対応していることが分かります。
ドラゴンボール風にたとえるなら、16個の気の粒の並びを、Javaが short型のルール に従って読み取っているイメージです。
同じ0と1の並びでも、どの型のルールで読むかによって意味が決まります。
short型では、16ビットの組み合わせを整数として読むルールがあり、その結果として -32768 から 32767 の範囲が表せるようになっています。
先頭の1ビットは正負と深く関係している
short型のような整数型では、先頭の1ビットが正負と深く関係しています。
学習の入り口では、まず次のイメージで押さえておくと分かりやすいです。
| 先頭ビット | イメージ | 例 |
|---|---|---|
| 0 | 正の数側 | 0111111111111111 は 32767 |
| 1 | 負の数側 | 1000000000000000 は -32768 |
先頭が0のときは、正の数側に対応します。
先頭が1のときは、負の数側に対応します。
ドラゴンボール風にたとえるなら、先頭のビットは 正の方向へ飛ぶか、負の方向へ戻るかを決める方角札 のようなものです。
残りの気の粒が細かい値のパターンを表していても、先頭の札によって全体の意味が正の側か負の側かに分かれます。
もちろん、実際の整数表現にはさらに細かいルールがあります。
ただ、最初は次のように考えると十分です。
| 基本イメージ | 内容 |
|---|---|
| 先頭が0 | 正の数側 |
| 先頭が1 | 負の数側 |
| 16ビット全体 | short型の値を表す |
この考え方を知っておくと、なぜshort型の範囲が 0〜65535 ではなく、-32768〜32767 になるのかが理解しやすくなります。
図:short型の内部表現

この図が示していること
この図は、short型が2バイト、つまり16ビットで値を表していることを示しています。
8ビットが1バイトで、それが2つ集まることで16ビットになります。
その16ビットを使って、short型は65536通りの状態を表せます。
この図から分かることは、2バイトというサイズが単なる数字ではないということです。
2バイトは16ビットであり、16個の0と1の組み合わせによって値を表しているという意味です。
この理解があると、short型の範囲が -32768〜32767 になる理由もつかみやすくなります。
型のサイズと値の範囲が関係する理由
型のサイズと値の範囲は、深く関係しています。
型のサイズが大きいということは、使えるビット数が多いということです。
使えるビット数が多いということは、0と1の組み合わせが増えるということです。
組み合わせが増えれば、そのぶん多くの値を表せます。
流れを整理すると、次のようになります。
| 順番 | 内容 |
|---|---|
| 1 | 型のサイズが決まる |
| 2 | 使えるビット数が決まる |
| 3 | 0と1の組み合わせ数が決まる |
| 4 | 表せる値の範囲が決まる |
ドラゴンボール風に言えば、使える気の粒が多いほど、作れるエネルギーパターンが増えます。
作れるパターンが多ければ、より広い範囲の数を表せます。
Javaの整数型も同じです。
| 型 | サイズ | ビット数 | 範囲の考え方 |
|---|---|---|---|
| byte | 1バイト | 8ビット | 表せる通り数は少なめ |
| short | 2バイト | 16ビット | byteより多く表せる |
| int | 4バイト | 32ビット | よく使う広い範囲 |
| long | 8バイト | 64ビット | 非常に広い範囲 |
byte、short、int、long はどれも整数型です。
しかし、サイズが違うため、使えるビット数が違います。
使えるビット数が違うため、表せる値の範囲も違います。
この関係が分かると、なぜ整数型が複数あるのかも理解しやすくなります。
ビットとバイトを知ると型の表が読みやすくなる
ビットとバイトの知識があると、Javaのデータ型の表がぐっと読みやすくなります。
何も知らない状態で型の表を見ると、short は2バイト、int は4バイト、long は8バイトという情報が、ただの暗記項目に見えるかもしれません。
しかし、次の関係が分かっていると、見え方が変わります。
1バイト = 8ビット
nビット = 2n通り
この2つを押さえておけば、型のサイズに意味があることが分かります。
| 型の表で見る情報 | ビットとバイトを知ると分かること |
|---|---|
| 1バイト | 8ビットで表している |
| 2バイト | 16ビットで表している |
| 4バイト | 32ビットで表している |
| 8バイト | 64ビットで表している |
| サイズが大きい型 | より多くの組み合わせを表せる |
つまり、ビットとバイトは、型のサイズを理解するための土台です。
型のサイズが分かると、なぜその型で扱える値の範囲が決まっているのかも理解しやすくなります。
ドラゴンボール風に言えば、型の表は戦士の装備表のようなものです。
1バイトの装備は8個の気の粒で動く。
2バイトの装備は16個の気の粒で動く。
4バイトの装備は32個の気の粒で動く。
8バイトの装備は64個の気の粒で動く。
そう考えると、型のサイズがただの数字ではなく、表現できる力の広さを示していることが見えてきます。
図:型のサイズとビット数のつながり

この図が示していること
この図は、Javaの整数型のサイズとビット数の関係を示しています。
byte は1バイトなので8ビット、short は2バイトなので16ビット、int は4バイトなので32ビット、long は8バイトなので64ビットです。
この図から分かることは、型のサイズが大きくなるほど、使えるビット数が増えるということです。
ビット数が増えると、0と1の組み合わせが増えます。
その結果、より広い範囲の値を表せるようになります。
ビットとバイトの理解がJava学習につながる
Javaを学び始めたばかりのころは、変数名や型名に目が向きやすいです。
byte、short、int、long という型名を見て、まず名前を覚えようとするかもしれません。
もちろん名前を覚えることも大切です。
でも、それだけでは少しもったいないです。
その背後では、コンピュータが0と1の組み合わせで値を扱っています。
ビットとバイトを理解すると、型のサイズ、メモリ、値の範囲がつながって見えてきます。
| 学ぶ内容 | つながる理解 |
|---|---|
| ビット | 0または1を表す最小単位 |
| バイト | 8ビットのまとまり |
| 型のサイズ | 何ビットで値を表すか |
| 値の範囲 | 何通りの状態を表せるか |
| short型 | 2バイト、16ビット、65536通り |
| int型 | 4バイト、32ビットで値を扱う |
| long型 | 8バイト、64ビットでさらに広い範囲を扱う |
ドラゴンボール風にたとえるなら、ビットとバイトは、派手な必殺技ではなく、気の扱い方の基礎です。
目立つ内容ではないかもしれません。
でも、ここを理解しておくと、Javaの型やメモリの話がかなり分かりやすくなります。
byte、short、int、long の違いも、単に名前が違うだけではありません。
使えるビット数が違います。
表せる状態の数が違います。
扱える値の範囲が違います。
この関係が分かると、Javaのデータ型は暗記ではなく、しくみとして理解できるようになります。
ビットとバイトを見る力が型の理解を深める
ビットは、0または1を表す最小単位です。
バイトは、8ビットをまとめた単位です。
1バイトは8ビットなので、2バイトは16ビット、4バイトは32ビット、8バイトは64ビットになります。
そして、nビットでは2n通りの状態を表せます。
この考え方を押さえておくと、Javaの型のサイズが意味を持って見えてきます。
| ポイント | 内容 |
|---|---|
| 1ビット | 0または1 |
| 1バイト | 8ビット |
| 2バイト | 16ビット |
| 16ビット | 216 = 65536通り |
| short型 | 2バイトなので16ビットで値を表す |
| short型の範囲 | -32768〜32767 |
Javaの型を学ぶとき、サイズや範囲の数字がたくさん出てきます。
でも、それらはバラバラの暗記ではありません。
型のサイズが決まる。
使えるビット数が決まる。
0と1の組み合わせ数が決まる。
表せる値の範囲が決まる。
この流れを理解できると、Javaのデータ型がかなり立体的に見えてきます。
ドラゴンボール風に言えば、0と1の気の粒をどれだけ使えるかによって、作れる技の幅が変わります。
少ない気の粒なら小さな技。
多い気の粒なら大きな技。
Javaの型も同じで、使えるビット数が多いほど、より広い範囲の値を表せるようになります。
