「プログラミング学習のツボ」へようこそ!
管理人のKENです。
本サイトでは、文系・初心者の私が、プログラミング学習を進める中でつまづいたこと、
最初から知ってれば良かったということをまとめていきます。
これからプログラミング学習を始める方の一助になれば幸いです。
プログラミングと2進法の関係
プログラミングをするのにコンピュータは必ず使いますよね。
「コンピュータは2進法で動いています」
と聞いて、皆さんはどのように感じますか?
私は、初めて聞いたとき、
「何で2進法で動いているんだろう?」
と疑問でした。
また、人によっては
「プログラミングをするためには、2進法を勉強しないといけないの?」
と感じるかもしれません。
今回は、プログラミングと2進法の関係について解説していきます。
プログラミングに2進法の知識は必要?
まず、皆さんがおそらく一番気になる
『プログラミングに2進法の知識が必要かどうか』
についてです。
結論から言いますと、
2進法の知識は、プログラミングにほとんど必要ありません。
私もアプリを個人で開発、公開をしていますが、
2進法の知識が必要なタイミングは一度もありませんでした。
2進法の知識が必要無いのは、
『とある処理をブラックボックスにする』
というプログラミングの考え方があるからです。
例えば、プログラミングで『2 + 3』(10進法)をするとき、
コンピュータ上では、
2と3を2進法に変換
2進法で足し算をする
10進法に変換
という手順で行います。
これはプログラミングだけでなく、電卓やエクセルでも同じです。
しかし、私たち使っている人からすると、
『2 + 3』をそのまま計算しているように見えます。
このように、めんどくさい処理や難しい処理を、
見えない部分でギュッとまとめて簡単にしてくれる不思議な箱のことを、
プログラミングでは、
『ブラックボックス』
と言います。
「それじゃあ、ブラックボックスに任せて何も勉強しなくてもいいじゃん」
と感じるかもしれません。
確かに2進法の知識はあまり使われません。
しかし、2進法は『デジタル(ディジタル)』と深い関わりがあります。
『デジタル』とは、
『区切り』を持たせた表現のことです。
『デジタル』によって、
音楽や動画などもコンピュータで取り扱うことが出来ています。
音楽や動画を使ったアプリやサイト、
今では当たり前で、皆さんも一度は目にしたことありますよね。
『デジタル』と2進法に深い関係がある以上、
プログラミング自体に2進法の知識は必須ではありませんが、
考え方をある程度知っていた方が、
プログラミングの世界についてより理解を深めることができると言えるでしょう。
コンピュータが2進法を扱う理由
ところで、コンピュータはなぜ2進法を扱うのでしょうか。
コンピュータが2進法を扱う理由はシンプルで、
『コンピュータにとって扱いやすいから』です。
コンピュータでは、
あらゆる処理が『電圧が高い=1、低い=0』で表されます。
例えば、『0V=0と1V=1』。
この値を電圧計で測ることでデータを読み取ります。
(0Vや1Vなどの値はコンピュータによって違います。)
あらゆる処理を1と0で表す、、、
これって2進法と同じですよね。
もし電源が弱くなって0.7Vなどになったとしても、
「1Vに近いから1」のようにある程度直すこともできます。
ちょっとした誤差に対応できることも、
2進法を扱うメリットになります。
ちなみに、カメラなどで外の情報をコンピュータに読み込むときに、
もとから2進法にはなっていません。
カメラの場合、まずレンズに入ってきた光の色を、赤、緑、青に分けます。
その後、各色の強さを電圧の強さに変えます。
(詳しくは省きますが、「こんな装置があるんだ」くらいで大丈夫です。)
ここで得られる電圧はとても細かく、コンピュータには扱いにくいです。
この細かい値をアナログといいます。
デジカメなどは、この得たアナログ値を2進法に直します。
これが『デジタル』化です。
2進数を使うこと、
すなわちデジタル化のメリットは主に3つあります。
- コピーしてもきれいなまま
- 保存や送信ができる
- プログラミングで扱える
それぞれ見ていきましょう。
1.コピーしてもきれいなまま
デジタル化されたデータは、
0と1だけで表されているので非常にシンプルです。
そのため、コピーをするときに全く同じデータを作ることができます。
これがもしアナログであれば、
細かい数字を間違えたり、取りこぼしたりして、
コピーするたびに汚くなってしまいます。
2.保存や送信ができる
アンプという便利な道具があります。
アンプは、デジタル化した値が少し乱れても直すことができます。
例えば、1Vが0.7Vになってしまったとしても、また1Vに戻すことができます。
これを使うことで、遠くに届けたり、
時間が経つことで崩れた値を戻すことができます。
これはアナログ値ではできません。
3.プログラミングで扱える
基本的にソフトウェアは、デジタル化した値を扱うように設計されています。
アナログ値を扱いたい場合は半導体をイジる等複雑な処理をしなければいけません。
顔認証システムなども、
カメラで得た値をデジタル化してからAIで識別します。
余談ですが、画像処理のプログラミングをすると、
- 縦〇〇番目、
- 横〇〇番目の場所に
- 赤〇〇、
- 緑〇〇、
- 青〇〇の光の強さ、
というのが数値で出てくるので、
デジタル化していることが体感できますよ。
まとめ
2進法の知識は、ほとんど使う機会はありません。
しかし、2進法はデジタル化と深い関わりがあります。
デジタル化には
- コピーをしてもきれいなまま
- 保存や送信ができる
- プログラミングで扱える
などのメリットがあります。
あなたがエンジニアになった際には、
「なぜデジタル化を行うと良いのか」
を状況に合わせて考えたり、
伝えたりする必要が出てくることもあると思います。
そのときに、2進法やデジタル化の特徴を知っていると、
きっと話が進みやすくなると思います。