さてさて、そろそろ何か始めないとな

さいたま市のソフトウェアエンジニアのブログ

ファミコンは8ビット、8ビットは1が8個だけの世界

何故か、仕事でARMのアセンブラを見るはめになった。

 

アセンブラ

アセンブラっていうのは、一般的にソフトウェアを作るときに人が書くC言語というものと、コンピューターが直接理解できる機械語の中間にあたります。

コンピューターっていうのは、どんなに頭が良くなった今でも、0と1しか分かりません。

0と1の組み合わせで、何をしなければいけないのかを認識します。

2進数

0と1で表現する数値を2進数と言います。

私達が普段使っているのは、10進数です。

10進数は、9の次は繰り上がって10になりますね。

2進数の場合は、0の次で繰り上がって、10になります。10に1を足すと11

11に1を足すと、100とさらに繰り上がります。

これを繰り返していくと、8桁の2進数では、11111111。10進数でいうところの255です。

それぞれの1とか0に変化する各桁をBit と表現するので、この8桁の2進数が8ビットと言います。

パソコンは32ビットが主流

最近のパソコンでは、32ビットだとか64ビットとか言われます。

要は、この2進数でいうところの1が32個同時に並んだ数を一度に処理できるのが、32ビットパソコンです。

32ビットの世界では、1111111111111111・・・(32個並びます)

8ビットでは、0から255まで認識できましたが、

32ビットの世界では、0から4,294,967,295までの数字が扱えるようになっているのです。

16進数

さすがに1を沢山並べるのは、面倒なので16進数というのを使います。

10進数は、0から9までで数字を表現していますが、16進数では0から9とA、B、C、D、E、Fまでを組み合わせて数字を表現します。

16進数でいうところの F が、10進数でいうところの 15になります。

ちょうど、2進数の4ビット分、1111と同じです。

8ビットの世界では、FF

16ビットの世界では、FFFF。32ビットではFFFF FFFF。

64ビットならFFFF FFFF FFFF FFFF

 

これを利用すると、10進数で40歳は、16進数で28歳です。

誰かに年齢を聞かれたら、16進数で答えてあげましょう。若く見えます。

現在、私は2F歳なので、すぐにバレてしまいます。

そんなときは、来年30歳ですと言いましょう。

8ビットの世界で動いているもの

初代の任天堂ファミリーコンピューターは、8ビットの世界で動いています。

すごい時代の進化ですね。

ただし、今でも電化製品や自動車の一部の部品では、8ビットや16ビットの世界で動いているものが沢山あります。

ファミリーコンピューターは、8ビットの世界で動いているので、画面のサイズは255を超えると大変。色の数も255種類。画面の部品の種類も255種類と、いろいろなところで255という制限の中でゲームが作られています。

初代のポケモンのレベルのマックスが255なのも、これが理由です。

 

16ビットのアセンブラは、見るのが大変。

8ビットの世界では、コンピューターに命令する種類も255しかありませんので、頑張ればなんとかなります。

 

私が今日みていたアセンブラは、16ビットで動いているのですが、もう訳がわかりません。

命令も多いし、複雑だし、突然16ビットを2つ使って32ビットにしてみたりします。

32ビットの世界では、数字が大きすぎて、もう手に負えないですね。 

おまけ

f:id:iNack:20190318000218p:plain

64ビットで絵を書いてみました。

8ビットの世界だと、使えるのが8個しかありませんので、こんな適当な絵を書くのも大変です。