なぜゲームでは255という数字が使われているのか【2進数の基本】

スマホやパソコンのようなコンピューター機器を使っていると、ビット(bit)やバイト(Byte)といった単位をよく聞きます。

しかし、その基本である2進数についてはあまり馴染みがないのではないでしょうか。

そもそも2進数なんて聞いたことすらないかもしれません。

実際、知らなくても困ることはありません。

知らなくても困りはしませんが、知っておいて損はありません。

2進数の読み方を知ることで、コンピューターで使われている数字の意味がわかるようになります。

 

なぜHPの上限が255なのか

ゲームによってはHP(ヒットポイント)などのステータスの上限が「255」になっている場合があります。

昔プレイしたイースの主人公アドルは、レベルが上限に達するとHPが255になりました。

99や100ならキリがいいのに、255とは半端な印象を受けるのではないでしょうか。

なぜこのような半端な数字が使われているのでしょう。

255」を2進数で表記すると「11111111」となります。

2進数の8桁8bit)の数の上限である「255」がステータスに設定されていたのです。

 

2進数とは

0と1で数を表す方法を2進数(2進法)といいます。

コンピューターが扱うデータは「0」と「1」のみです。

色なら「白と黒」、磁石なら「S極とN極」です。

これですべてを処理します。

人類が一般に使っている十進数とは違い、2進数は2~9の数字を使用しません。

十進数は「9」の次が桁が繰り上がり「10」(いち、ゼロ)になります。
10の10倍」ごとに桁が上がっていきます。

2進数は「1」の次が桁が繰り上がり「10」(いち、ゼロ)になります。
十進数に換算して、「2の2倍」ごとに桁が上がっていきます。

2進数で扱う桁は「bitビット)」と呼びます。コンピューターが扱う最小の単位です。

1桁なら1bit

8桁なら8bitです。

24桁なら24bitとなります。

 

2進数の桁の増え方

2進数は桁が上がるごとに、10進数に換算して2倍ずつ数が増えていきます。

2進数 10進数
1 1
10 2
100 4
1000 8
10000 16
100000 32
1000000 64
10000000 128
100000000 256
1000000000 512
10000000000 1024

見慣れた数字がいくつかあることに気づいたのではないでしょうか。

3264という数字は、32bit64bitという言葉でお馴染みの数字ですね。

256という数字もよく使われています。

こういった数字は2進数に由来するものです。

 

2進数の数え方

2進数を直接読むのは難しいので、十進数換算で数えます。

2進数の桁に1が入る場合に、桁に応じた数字が加えられます。それらの数字を合計します。

桁数 n桁目 8桁目 7桁目 6桁目 5桁目 4桁目 3桁目 2桁目 1桁目
計算式 2^(n-1) 2^7 2^6 2^5 2^4 2^3 2^2 2^1 2^0
十進数表記 128 64 32 16 8 4 2 1

 

例)
2進数の「10010110」を数えます。

桁数 8桁目 7桁目 6桁目 5桁目 4桁目 3桁目 2桁目 1桁目
計算式 2^7 2^6 2^5 2^4 2^3 2^2 2^1 2^0
2進数表記 1 0 0 1 0 1 1 0
十進数表記 128 0 0 16 0 4 2 0

2^1 + 2^2 + 2^4 + 2^7
= 2 + 4 + 16 + 128
= 150

になります。

 

簡単に2進数を読む方法

いちいち計算するなんて面倒くさい。もっと楽に数える方法はないのだろうか。

そんな人にはいい方法があります。

Windowsに標準搭載されている電卓を使います。

 

プログラムアクセサリ電卓 を起動します。

 

表示プログラマ を選択します。
※電卓のレイアウトはWindowsのバージョンにより異なる場合があります。

 

電卓の表示が切り替わりました。

 

例)
十進数の「150」を2進数に変換する場合。

10進」を選択して、キーボードから入力、または電卓のキーをクリックして「150」と入力します。

 

2進」を選択して表示を切り替えます。

十進数の「150」が変換されて、2進数の「10010110」と表示されました。

 

1バイトは8ビット

パソコンを使っていると、ギガバイトGB)やテラバイトTB)といった単位に遭遇します。

32GBのUSBメモリや、1TBのハードディスクといったものです。

スマホでも、通信量が3GBなど、バイトという単位が出てきます。

では、バイトとはどんな意味なのでしょうか。

コンピューターは「8桁の2進数」である「8ビットbit)」を「1バイトByte)」として扱います。

1バイトByte)」=「8ビットbit)」になります。

例えば、1GBの場合は8ビットが10億個も集まったものだったのです。