« 「天文屋のためのマイコン入門」データの基本 | トップページ | 「天文屋のためのマイコン入門」データメモリとは »

2014年5月18日 (日)

「天文屋のためのマイコン入門」バイトとは

さて、以前マイコンのデータは0か1で表現できると説明しました。この0か1の情報の単位をビットといいます。

マイコンはビットを単位として処理してもいいのですが、ビット単位ではあまりにも効率が悪いので、ビットを8個集めた、バイトを処理単位とします。(ビットが処理単位の命令もある、ビット命令という)

これがバイトです。

1405173

命令の説明でワーキングレジスタというのが出てきましたが、ワーキングレジスタはまさにこのバイトそのものです。

また、データメモリやポートもこのバイトが基本単位です。

バイトは8ビットの情報単位ですから、2の8乗=256通りの数を表現できます。そこで、この256通りに0~255を割り当てればマイコンのデータとなります。

その様子を下の図に示します。

1405174

バイトの各ビットの0か1をそのまま2進数表現とすれば数を表すことができます。2進数を10進数に変換するのはちょっと面倒なので、16進数を仲介させたり、最初から16進数で表したりします。なぜ16進数が便利かというと、桁数が固定できるからです。2進数の4桁が16進数の1桁になります。進数の詳しい話は別のところで勉強して下さい。この連載では分かりやすい2進数でなるべく表現するようにします。またあまり16進数は使わないようにします。

さて、256通りの表現を0から255に割り当てましたが、-128から127に割り当てれば、正負の数を表すことができます。この連載では負数は扱わないので、これ以上詳しくは説明しませんが、数の割り当て方で、いろんな数(小数も含む)を扱うことができます。ただ、どんな割り当て方をしてもそれは人間の解釈であって、マイコン自体はやっていることは同じです。

さて、バイトは255までの数しか格納できません。ではそれを超えたらどうなるでしょうか?

以下の図は255の数が入ったバイトを表してします。これに1を足してみましょう。

1405175

各ビットは次々と桁上がりしていき、最後は'1'がバイトから溢れてしまい(桁上がり)バイトには0が残ります。

つまり溢れた分は、バイトには収まらないので、これは0と同じです。つまり

255+1=0

なのです。256と0は等しいのです。これは覚えておいてください。

ちなみに溢れた'1'、どこへ行くのでしょうか? バイトに収まらないので捨てられるのでしょうか?

実は捨てられないで、ステータスレジスタ(これもバイトですが)というところに、一時的にですが保存されます。これがあるため、実はバイトを超える大きな数の計算もできるのです。詳しくはいずれ、話をすることがあるかもしれません。

今日はちょっと難しい話が続いたのでここまで。

|

« 「天文屋のためのマイコン入門」データの基本 | トップページ | 「天文屋のためのマイコン入門」データメモリとは »

コメント

コメントを書く



(ウェブ上には掲載しません)




« 「天文屋のためのマイコン入門」データの基本 | トップページ | 「天文屋のためのマイコン入門」データメモリとは »