GPG雑学:ゲームで使う画像サイズはなぜ2の乗数なのか?(下)

​ こんにちは。


前回の記事で、コンピューターは画像を処理するとき
必要なメモリを確報するため、2倍ずつ拡張する
という話をしました。



今日は、その理由について詳しく話したいと思います。



※この記事は前回の記事と繋がる話です。
前回の記事をまだ読んでいない方は
是非、前の記事を先に読んでください。

↓(クリック)↓
ゲームで使う画像サイズはなぜ2の乗数なのか?(上)








● なぜメモリは2倍ずつ拡張されるのか? ●



理解を助けるため、マンションを例に説明します






Bさんは最近、新しいマンションに引っ越しました。

部屋番号は1103号です。







Q:Bさんの部屋は何階にありますか?

A:11階



私たちは寛容的に、部屋番号の前方2数字が
階数を示すことを知っています。




正に部屋番号だけで部屋の場所が推測できる
素晴らしいルールです。



でも実はこのマンション、20階のビルで
各フロアーには7つの部屋があります。




つまり、総部屋数は 7 x 20 = 140 個あります。




性格がケチな人なら、140個の部屋を職別するために
4桁の番号(9999まで)を使うのは無駄が多いな、と
思うかもしれません。

(実際は1 ~ 140までの数字で番号付けられます。)






仮にマンションの部屋番号を
1から順番につけてみましょう


これて140までの番号で部屋が区別できます。




ある日、106号のNさんから管理室に電話が来ました。








管理人:はい、管理室です。

Nさん:すみません、106号ですが
水道検針に問題があるようです。
ちょっと見て頂けませんか?

管理人:すぐ伺います。




管理人:え〜と、106を7に割って
10から7を引くと残り36で…



106号の階数を計算中



部屋を1から順番に番号付けると
数字は節約できるかも知れませんが
その代わり、場所を特定するため
面倒な計算を行う必要があります。




めんどくさい計算が嫌なのは
コンピューターも同じです。



コンピューターもマンション番号みたいに
画像を特定座標のメモリ位置を
簡単に取得したがっています。


ただし、人は10進数を使う一方
コンピューターは2進数を使っています。


1 → 10 → 11 → 100 →  …
コンピューターの数え方


画像情報は単純にメモリー上に並んでいるので
横縦の座標とメモリー住所を都合よく一致させるには
横の幅を少し調整する必要があります。


この幅なら順番に並べても座標が分かりやすいです。





幅が計算しにくい数字だと、空データを挿入して
計算しやすい幅に変えます。



2進数を使うコンピューターの場合は
こんな形が計算しやすくなります。


これがサイズを2の乗数に合わせる理由です。




今度は、ある広いホテルを想像してみましょう




このホテルは建物が広すぎて
各フロアーに部屋が120個もあります。






このホテルでは先ほどのマンションのように
4桁数字で部屋を職別する事はできません




なぜなら2桁で区別できるのは0~99番までで
101番目の部屋からは番号をつけられないからです。






Q:このホテルには、どう番号付けすれば
良いでしょう?

A:桁数を1つ増やす





はい、これで120個の部屋に
問題なく番号をつけられます。

(3桁を使えるので、1000部屋まで問題ないです。)




桁数を増やすことは10を掛けることです。
2進数を使っているコンピューターは
2を掛けることで桁数が1つ増えます。


これでコンピューターが2倍ずつ
メモリを増やす理由が分かるでしょうか?




まとめると

● コンピューターは効率良く計算するため、
2の乗数サイズで画像を管理しています。

● その理由で、ゲームで使う画像は
2の乗数サイズで制作した方が良いです。




ご精読いただき、ありがとうございました。



※ 元ブログから移転された記事です。

コメント