プログラミング初学者です。言語とフレームワークの使い方を勉強してきましたが、そもそも「PCはどういった仕組みで情報を処理し、表現しているのか?」 について知っておいた方がアドバンテージになると思い、学習開始。
誤認などございましたら、ご指摘ください。
二進法の概念と、その必要性
- すべての基本 「二進法」
- 二進法とは?
- ビットとバイト
- まぁ話は分ったけど、だから何?
1.すべての基本 「二進法」
PCの仕組みを理解する上で、なぜ二進法が重要?
コンピューターはIC(integrated Circuit=集積回路)と呼ばれる電子部品から構成されている。そこで単純な信号を大量に組み合わせることで、複雑な内容を表現している。PCを買う時、スペック表示にCPUが明記されているが、「あーCPUね・・はいはい・・今は性能いいんですね〜(何それ、美味しいの?)」なんて知ったかぶりをした経験は誰しもあるはず!私はある!その計算を行うCPUの実体はICだそうだ。
私たちは普段の生活で「192」とか「35876」など、各位の数字を上から並べて表記された「位取り記数法」、その中でも「十進法」を使っているわけだ。では、ICも同じように10進法を使っているのか?答えはNO!!
ICは2種類(1と0)しか扱えないのだそうだ。それが二進法を理解するべき理由である。
(今どきのPCたちは4の倍数で処理するらしい。ここで使われるのは16進数。だが今回は割愛)
仮にキーボードで「53」と打っても、ICは「110101」と認識し情報を処理する。そのように分解することで、超高速な処理ができるってわけですね。なるほど〜。
2.二進法とは?
ここからは数学Aのお話。
上記したとおり、普段私達は十進法を使っている。
十進法では0~9までの十個の数字が用いられ、十の累乗で位を決める。
それに対し、二進法は1と0のみを用い、2の累乗で位を決める。
...といってもピンとこないので、例をあげます。
二進数110101を十進法で表す
110101 によって
1・2⁵ + 1・2⁴ + 0・2³ + 1・2² + 0・2¹ + 1・2⁰
という数が表される。これを十進法に基数変換すると
32+16+4+1=53となる
今度は十進数53を二進法で表そう!
53を2で割ると余りが1,商が26
商26を2で割ると余りが0,商が13
商13を2で割ると余りが1,商が6
商6を2で割ると余りが0,商が3
商3を2で割ると余りが1,商が1
商1を2で割ると余りが1,商が0
余りの部分を下から順に並べる。よって二進数110101となる
基数変換を分かりやすく理解したい方はこちらの動画をご覧ください。
3.ビットとバイト
ICのピン1本で表せる情報すなわち2進数の1桁を「ビット」と呼びます。2進数の8桁を「バイト」と呼びます。
コンピューターにおいて、ビットは情報の最小単位であり、バイトは情報の基本単位です。ビット(bit)は、binary >digit(2進数)の略語ですが、一般用語で「破片」という意味もあります。バイト(byte)は、同じ発音のbite(噛む)と
いう言葉から作られた造語です。情報の破片がビットで、情報のひと噛み(ひとまとまり)がバイトというわけです。コンピューターは、バイト単位でデータを取り扱うことがよくあります。
日経XTECH
というように、聞いたことはあるけれど、なんじゃそりゃ?という言葉ばかりです。要するに、PCが処理する情報の最小単位が「ビット」であり、それは二進法で表されるということ。無限の可能性を秘めたPCをミクロ視点で分解していくと、数学に行き着くんですね〜。
4. まぁ話は分ったけど、だから何?
ここまで読んでくださった方のほとんどが、このように思ったでしょう。私も最初に学んだ時、思いました。ですが、カレーの作り方知ってるけど、火の付け方わかんない!では料理人として成り立たないように、プログラミングが動くPCの仕組みの理解は”プロのエンジニア”を目指すために必要不可欠だと、初学者ながら思うわけです。今はとても難しく感じますが、「ふ〜んそうなのね」と知っておくだけでOK!という気持ちで学習進めたい!
今後も駄文&つたない技術に恥じること無く、少しずつアウトプットしていけたらと思っています。
最後まで読んでくださり、感謝です!