PRIMG0001
 毎週金曜日、プログラミングのちょっとした講座を記しています。
 ここでは、小学校から「プログラミング」が必須項目になってしまったため、お父さん・お母さん・おじいちゃん・おねえちゃんが子供に「プログラミング」教えることができるように、ここでこっそりと勉強してしまおうという企画です。
 今週は「進数」について説明していきます。
 今回の講座はプログラムからちょっと離れます。パソコンを使っていると、たまに「16進数」や「2進数」といった言葉が出てきます。この「16進数」や「2進数」をきちんと理解していない人が多いと思いますので、説明していきたいと思います。この説明内容は本家0から楽しむパソコン講座のHPからそのまま引用します。


1.進数(位取り記数法)とは
私たちが普段数を数えるときに1.2.3.4.5.6.7.8.9.10と数えますよね。なんで1.2.3.4....と数えるの?と言うと、「小さいときに教えてもらった」「この数え方があたりまえでしょう」というでしょう。
それはその通り正解!!!です。 
しかし、身近な生活の場においてこの数え方が違うものがあります。
例えば、時間を数えるとき、60秒になったら1分になります。60分になったら1時間になります。24時間になったら1日になります。これは当たり前ですよね、しかし、通常使用している10までの数え方の法則にはなっていません。60分で繰り上げで単位が変わるというのは変ではないですか?

また鉛筆を数えるとき、12本で1ダースと数えます。

このように、必ずしも普段の数え方の法則ではないのもあります。実際、この数え方は小さい時から教わって無意識のうちに使っているため、変に思わないでしょうが、通常の数え方とはちょっと違います。

私たちが通常1.2.3.4.5.6.7.8.9.10と使っている数え方は10進法と言います。一桁目が10個目に達した時位が上がり、一桁目がリセット(0になる)されます。
時間の場合、デジタル表記だと0~59まで表記されるためちょっと分かりにくいですが、アナログ表記で見た場合、60秒や60分に針が来た場合、別の針が1個進み、元の針は0に戻ります。
そのため秒や分は60進数で行われており、同様に時間は24進数となります。


sinsuu_1
本来、古代の文明では時間の表記は60通りの文字があり、それを使って位を上げていたそうですが、現在は記載が非常にややこしくなるため、あえて10進表で表記しながら60進法を採用しています。

このように、「N」個目で位が上がり、下の位がリセットされる数え方を「N」進数と言います。

2.情報機器の内部は2進数
 通常、私たちが使用している数え方は先ほども述べたとおり10進数です。
しかし情報機器の内部は2進数で動いています。ではなぜ、2進数なのでしょうか?
2進数は電気や中央演算装置と密接な関係にあります。
ここでは2進数に関係する「単位」を使って情報機器が2進数を使用している理由を説明いたします。

A.ビット(Bit)について
 ビット(Bit)というのは、中央演算装置(CPU)で1つの電気のON・OFFを出来る回路を示します。
このビット(Bit)はほとんどのデジタルコンピュータが扱うデータの最小単位となり、後の章でも詳しく説明しますが、2進数での1桁となります。
情報機器の基盤には多数のIC(集積回路)が使われています。中央演算装置(CPU)も集積回路の一種です。集積回路は電気で動きますが、電気の世界では前に説明した通り「ON」と「OFF」の世界しかありません。そのため電気の「ON」の状態を2進数で「1」、「OFF」の状態を「0」で表していま す。
電気には「電圧」というのがあるじゃないかと言う人もいると思いますが、集積回路には正確に電圧を認知できる機能がありません。また、電圧というのたえず変化しますから、電圧が変わった場合は間違ったデータになる可能性があります。そのため、確実にデータを転送するために電気の「ON」・「OFF」を使 用しているわけです。
CPUで「32Bit(ビット)」や「64Bit(ビット)」という表記がありますが、1ビットは集積回路の1本の足で1つの「ON」・「OFF」の回路になります。ですから、32BitCPUは「ON」・「OFF」の回路が32個あるということになります。

B.バイト(byte)について
 1ビットは集積回路の1つの足で表せる1桁の単位というのは上記で分かったと思いますが、この1ビットを8桁まとめた単位を「Byte(バイト)」と言います。
本来、「バイト」は、欧文の1文字を表すためのビット数でありますが、昔はバイトの統一性がなく、「9ビット=1バイト」や「6ビット=1バイト」というコンピュータがありました。
しかし、IBM System/360という大型汎用機が多く市場に出回り、また1980年台に8ビットCPUを使用したマイクロコンピュータが爆発的に売れたこともあり、現在ではこの「8ビット=1バイト」というのが規格になりました。
「バイト」という単位は主に記憶容量に用いられますが、記憶容量が100バイトとした場合、情報量として欧文文字で「100文字」保存できることを表します。

C.ワード(Word)について
上記のビットやバイトという単位の他に、2進数ではワード(Word)という単位が使われます。
このワード(Word)という単位は使用する場面において、単位の定義が変わってきます。
ワードの単位の定義は3種類あります。
bybit

1.CPUの処理での単位(OSの定める標準サイズ)
 1ワードは中央演算装置(CPU)が一回で処理できる単位のことを言います。32ビットCPUの場合、32ビット=4バイト(32÷8)=1ワードになり、64BitビットCPUだと64ビット=8バイト(64÷8)=1ワードとなります。

2.「2バイト」
 その通り2バイト=1ワードです。この単位はよく文字などの「コード体系」に使われます。
3.1つのアドレスのデータ量
 具体的なバイト数はまちまちになります。これはプログラムとも関係してきますが、作成するプログラムが1アドレスが何ビットなのかによって決まります。
WindowsのVisual C++の場合、1アドレスが1ビットで扱えるため、1ワード=1ビットになります。

 今回の講座はここまでとなります。来週は2進数を8進数・16進数に変換や計算する方法を説明していきます。