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

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

しかし、その基本である2進数についてはあまり馴染みがないのではないでしょうか。そもそも2進数なんて聞いたことすらないかもしれません。

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

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

なぜHPの上限が255なのか

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

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

99や100ならキリがいいのに、255とは半端な印象を受けるのではないでしょうか。なぜこのような半端な数字が使われているのでしょう。

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

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
1 0000 16
10 0000 32
100 0000 64
1000 0000 128
1 0000 0000 256
10 0000 0000 512
100 0000 0000 1024

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

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

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

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



2進数の数え方

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

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

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

2進数10進数 の計算式は 2^(n-1) です。
8桁目の場合は 2^(8-1)=128 となります。
※nは桁数を表します。

 

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

桁数 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
10進数表記 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」と表示されました。

2進数を数える裏技

【問題】
「2進数で14桁」の上限である「11 1111 11111 1111」は10進数にするといくつになるでしょうか。電卓の変換機能を使わずに計算してください。

一見、計算するのは手間がかかるようにみえます。実は簡単なテクニックがあります。

2進数の「11 1111 11111 1111」に「1」を足すと一桁繰り上がります。14桁から15桁になり「100 0000 0000 0000」となります。

つまり「100 0000 0000 0000」から「1」を引いた数字が「11 1111 11111 1111」なのです。

「2進数で15桁」を10進数にすると「2^(15-1)=16384」になります。

10進数で「16384から1を引いた数字」は「16383」です。こうして簡単に計算することができます。

1バイトは8ビット

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

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

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

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

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

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

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

おわりに

10進数で255は2進数の8桁で扱える数字の上限です。一見半端な数字ですが意味のある数字だったのです。

なにげなく使われている数字でも実は意味があるということはよくあります。コンピューターでは2進数や16進数がよく出てきます。この機会にいろいろと覚えてみるのもいいかもしれません。