電気を通すマス

 マス(measure)は団塊だんかいの人 だけが知っている(笑)

8ビットBOX  左の図は8個のマスが横につながっています。マスには区別するため右から仮の番号 0, 1, 2, 3, 4, 5, 6, 7 を付けてあります。(0から始めるのが何となく意味ありげで面白いm^○^m
8ビット例 各マスは電気を通し(スイッチなどを)操作して電気をつけたり(ON) 消したり(OFF)します。簡単なマシン(= Box)です。
2進数例8ビット 左側の縦(たて)に並んだ16個のマシン
に注意してみよう。
上から順に 0,1,2,3,4,5,6,7,8,9,‥‥,15 のナンバーをつけました。オレンジ色になっているマスは点灯(電気がつ く)させます。
上のマシンから半分遊び感覚で、
ナンバー0:どのマスも消灯(しょうとう)。
ナンバー1:0番のマスが点灯。
ナンバー2:1番のマスが点灯。
ナンバー3:0, 1番の2つのマスが点灯。
‥‥
以下こんな感じです。何か上から規則的に点灯操作しているところをよく見ていただきたい。

次に右側の方ですが、左側のマシンを単にコピーしたもので、点灯マスには「1」を入れ、消灯マスは「0」を入れてあります。
 例えば、ナンバー13 のマシンは、「1101」と入っています。本当は8個あるから「00001101」なのでしょうが、始めから続く「0」は 、「1」が表れるまで普通略します。この1101 などが2進数と呼ぶものの正体です。「0 1」だけの世界です。

1 マス⇔1 ビット( bit ) , 8 ビット⇔ 1 バイト( byte )

コンピュータではビットとバイトという基本用語を使います  

さて、点灯や消灯が出来る(これを電圧を高くしたり低くしたりするでもいい)「マス」を「 ビット(bit) 」と呼びます。 1マスが1ビットです。ビットをさらに細分することはありません。ビットが一番小さい単位になります。 そして 8 ビット=1 バイト (byte) と呼ぶことにします。約束ごとですm(^_^)m
2進数例2−8ビット 8 ビット( = 1バイト ) のマシンの続きです。操作を続けて各ビットを点灯、消灯していきます。次々と色々な「2進数」が作られます。
左図では、ナンバーを16 から 31までつけた16個のマシンを取り上げています。仮の番号4のビットは全て点灯させ、「10000から「11111までを規則的に順序よく 表わした積りです。
さらにまだ一度も電灯がつかない仮番号5、6、7のビットも点灯などをしてみましょう。
そして、ついに8個のすべてのビットが点灯すると、2進数「11111111」が出現することになります。 
ところで、8ビット( =1バイト) のマシンは何通りの「2進数」を表現できるのでしょうか。いままで見てきたように、「0」から「11111111」まで規則的に並べてみると、ズバリ256個の2進数が出てくることになりますが、これはシラミツブシ(下品な言い方=)でも数えられるし、理由は自分で確かめて下さい(いい加減ダm(_▽_)m

さてここで大切なことは、 8ビットのマシンの先頭に付けたマシンのナンバーは、出来上がった2進数と何か深い関係がありそうです。例えば、マシンナンバー  10進数「29」⇔2進数 「11101」、マシンナンバー 10進数 「31」⇔2進数 「11111」 に、どんな関係があるかをこれから調べましょう。

位(くらい)取り

  位(くらい)とか 桁(ケタ)とか多少うるさいです

 ところで数を数えることは、そう簡単な(やさしい)ことではありません。原始人はたくさんの石でも並べて数えたに違いありません。ローマ人は�、V、X、C、D‥などの記号(英字)を次々に増やして使いましたがまだ位取りの方法を知らなかった。 日本でも漢字数字を使っている限りでは同じようなものでした(休憩室 0110ページ)
それでは、0 (零、れい、ゼロ、zero)を用いた位取り(記数法きすうほう)のすばらしさをを、たっぷり味わって見よう。
0,1だけで数を数える
10進 2進数 ケタ
0 0
1 1 1
2 10 2
3 11 2
4 100 3
5 101 3
6 110 3
7 111 3
8 1000 4
9 1001 4
10 1010 4
11 1011 4
12 1100 4
13 1101 4
14 1110 4
15 1111 4
16 10000 5
17 10001 5
 マス= ビットに0か1を入れて、これを並べて2進数。
2進数の世界では、使う数字は 0、1 だけであって、2,3,4,5,6,7,8,9の数字は使わない。 それでは
0、1 だけでものを数えるとき、小さいほうから順に書く
とどうなるか。規則的な繰り(くり)上がりがどうしても必要になってきます。
順に何回か繰(く)り返してみましょう。とくに、
10  は 1ケタから ケタ(桁 )になったところ。
100 は ケタから ケタになったところ。
1000は ケタから ケタになったところ。
  ……  
くり上がりに注意して見ます。
これがを使った 位取りの考え方です(注1*) 。

意識したかどうかは別ですが、これまでの10進数の世界でも同様のくり上がりはありました。
… 7  8  9  と 1けたが続き次に 10 と 2けたになるところ や、… 98  99  と2けたできて次 100 と 3けたになるところ、… 998 999 1000 …  などでおなじみのことです。
さて、これまでに扱ったマシンと上表を較べて下さい。各2進数の先頭につけたナンバー(勿論これは10進数)が、その数の10進数と完璧(かんぺき)に一致することが分かります。

次は 16ビット (= 2バイト)です

  1バイトのマシンを2個つないで、ちょっと大きく

2進数-65535 16個のビットをつなぐと、16ビット列のBox(マシン) が出来ます。16ビット= 2バイトです。たくさんつなげるほど大きな2進数が表現できます。左上図でマシンナンバー1579と付けてありますが、ピンク110、オレンジ00101011をつなげて、合わせて16ビットの2進数「 110 00101011 」が出来ました。10進数では「 1579 」に当たるのですが、この説明は次ページです。
 ところで、負の数の2進表現は独自の面白いルールで行いますが、このページでは触れません。ここでは正の数(符号なし2進数)について述べているということです。
さて、16ビット(2バイト)では最大の2進数「 11111111 11111111 」(1が16個並ぶ、符号なし)は、マシンナンバーを65535とつけてありますが、それは10進数の 「65535」 にあたるからなのですがやはり次 ページに説明します。

たし算のルール(かけ算 はおまけです注2*

覚えるルールはものすごく簡単 かんたん

ルールはごく自然なもの
加算ルール
積み木にしてありますが、横並びでもいいです。
どんな世界にも『ルール』があり従わなければダメm(~_~)m
2進数の「たし算(足し算、加算)とかけ算(掛け算、乗算)」のルールを左に示しました。
この、たし算(4通り)とかけ算(4通り)がすべてです。 小学生頃に算数嫌いを見ませんでしたか(Youは如何ですか)?九九の暗記 (おぼえる)の辺りで躓く(つまづく)人もいるようです。正直10進数のアキレスです。
2進数ではまったくスッキリしています。実際の計算にはケタ上がり、位取り(くらいどり)に気をつける程度でしょう。
(注2*) コンピュータの内部では、かけ算をすることはないようです。シフト(ずらす)することと、たし算で処理(けいさん)します。 もちろん引き算(減算げんざん)もありません。このことについて今後のページでのっけています。
   

たし算をやってみよう

2進加算の例 たし算です。

 例1 1001 + 101 = 1110
積み木の方が分かりやすい。そして右端の位からやっていきます。次の位(くらい、ケタ)に、1 を送る場合()と、送らない場合があります 。
10進数に直してみると、1001=9 , 101=5 ,1110=14ですから、正しい結果です。

 例2  1101+ 11 = 10000
 ルール  1 + 1 = 1 0 
が4か所(ビット)に表われます。10進数に直して正しいことを確かめてみよう。

かけ算です まず基本の考え方から

乗算とシフト 出来るだけ、コンピュータと関連させるため、シフトを使います。シフトについては「論理シフト(符号なし)」と「算術シフト(符号付き)」で詳しく述べますので、ここでは「ひとまとめにして、ずらす」程度でいいでしょう。
2進数では 10=、100=、1000=、10000=、 ‥‥ですから、
×10は2倍、×100は4倍、×1000は8倍、×10000は16倍、‥‥です。
そしてこれが、1ビット左シフト、2ビット左シフト、3ビット左シフト、4ビット左シフト‥‥ と対応します。
シフトで空いたビットは 0で埋(う)めます。
参考までに、右シフトは次々に、倍、倍、倍、‥‥と対応します。
 

いよいよ かけ算をやってみます

2進乗算の例 かけ算(乗算)
 例1 1001×101
積み木にした方が分かりやすいでしょう。
1001をかけられる数、101をかける数(乗数)といいます。例のように乗数を分解(ぶんかい)して分けてかけた方が、積み木した時の意味が分かります。
最後には、すべてたし算(加算)してやります。
従って、かけ算はシフトとたし算で行うのです。

例は、10進数に直すと、1001 = 9 , 101 =  5 ,
 101101 = 45 ですから、正しい結果です。
ここでは符号なし2進整数のかけ算についてかんたんな説明をしましたが詳しくは「シフト」のページです。符号付き2進数や、2進小数のかけ算については、「負の数/補数」「小数と分数」、「論理シフト」「算術シフト」のページなどで次々に説明を行っていますから、参考(さんこう)にしてください。

問をやってみましょう。

ここでは全て正の数(符号なし)です。答えが出たら、10進数で計算してみれば正しいか間違いか分かるというものです。

 2進数を10進数に直したり、 10進数を2進数に直したりするのは次ページから扱います。
この答えは次ページです。

うれしい話しです。ひき算は2進数では考えなくていいのです。 たし算をすることでひき算をやってくれるからです。後のページの「負数/補数」で説明します 。

(文中 注1*) ふだん何となく使っている (零、ゼロ) は、位取りを表すために大切な役割をしています。 無名のインド人による「零の発見」などについて、一休室(休憩室)でしゃべってます。


注意1 2進数は「binary」 10進数は「decimal」です。
注意2 区別するため2進数の場合は 101、10進数は 10110と表記することがあります。書物によっては(101)2 や [101]などと書くのもあります。
注意3 読み方は 101(2)が 「いち れい いち」。 101(10) が 「ひゃくいち」です。つまり、読み方を気にする人は 、2進数を読むときは棒読みして、10進数と区別します。実際はどちらでもいいと思いますが…

前のページ

次のページ

  to home