プログラミングにおける2進数の概要まとめ

プログラミングで扱うデータの単位には、
2進数という単位のデータが使われます。

しかし、一般的に私達が扱うデータでは、
画像ファイル、テキストファイルなどの場合、
〇〇バイトという数字で容量が表示され、
2進数が日常的に使われることは少ないです。

何故、パソコンの通信では2進数が使われ、
私達がそれを理解する必要があるのか?
今回の記事では、その点について解説していきます。

2進数とは何か

2進数とは、2を基数として0と1の2種類の文字だけで
表現をする数値で、主にデータの容量計算に使われます。

また、データの容量以外にも、ネット回線のように
「1秒あたりの伝送量」などの単位にも使われます。
(1秒間に100MBを送れる→100Mbps)

画像も動画もテキストファイルも、パソコンにとっては
「データ」として扱われる為、どれくらい保存できるか、
どれくらいの速さで送れるのかを表現する単位が必要で
2進数が用いられています。

例えば、2進法を使うと、10進数から変換する場合

1→1
2→10
3→11
4→100
5→101

という風に、桁数が上がっていき、
下一桁目が1、下二桁目が2、下三桁目が4…という風に
数字が倍数毎に一桁ずつ割り振られ、0と1の2種類だけで
対応する10進数を表すのが、2進法と言われています。

何故、2進数を知る必要があるのか

パソコンもサーバーも、ただの膨大な電気信号だから

結論から言うと、パソコンが内部でやっていることは、
結局、電気信号のON/OFFを膨大に送っているだけであり、

それを人間に分かる形(10進数、文字、画像、動画)で
表現するには、形に変換する前の原始的な形である
2進数とは何かを知る必要があるからです。

〇〇バイト、ギガバイトなどの単位が2進数基準

パソコンやサーバーで扱うデータの容量は

最小単位が1ビット、
8ビットが1バイト、
1024バイトが1キロバイト、
1024キロバイトが1メガバイトです。

以降も、ギガバイト(GB)、テラバイト(TB)と続きます。

よく通信機の速度や光通信の回線の営業で「1Gbps保証!」とか
ハードディスクの販売で「2GBが安い!」とかやってますが、
あれも元を辿るとビット単位のデータの集合体です。

そして、最小単位の1ビットの値は8桁の2進数。
つまり、世の中の全てのファイルやネットワーク通信は
2進数の集合体で、0と1で作られているんです。

ネット上の全てのサービスは、2進数の集まりだから

そして、その二進数を使って打ち出した文字を使い、
変数を定義し、関数を定義し、画像や動画を表示し、
if文などの条件分岐を計算して判定を行い

機械やパソコンの画面に出力された画面を使って
世の中に数えきれないサービスを人々が生み出しています。

この仕組みを最初に考えた人は天才だと思いますし、
当時から彼らは、今のような世界がいずれ訪れると
胸を熱くさせていたに違いありません。

0と1が人々の生活を支え、これからも
世界を変えていくということを想像すると、
ロマンが溢れてこないでしょうか?

特に溢れてこなかったら…すいません、
ただの独り言なので、聞き流して頂けると幸いです。

実務で2進数の知識が必要になる理由

基礎を知らない事自体が仕事の不利益に繋がるから

士業や専門スキルを使う他の仕事でも言えることですが、
あまりにも仕事の基礎知識や常識を知らない場合、
それ自体が仕事の失注に繋がる可能性は大いにあります。

例えば、将棋の指導を行っている人が、
美濃囲い、矢倉囲いという防御の型を知っていたとしても、
何故それが強いのかを言葉で説明できない天才肌の人の場合、
この人に教わって大丈夫なのかと、受講者は不安になります。

他にも、デザインの仕事をしていて、我流で覚えたために
Photoshopの拡張機能やショートカットキーを知らなかったり、
配色でNGとされていることを平然とやってしまっている場合、

仕事を頼んでいる最中のクライアントさんも
「この人、本当に大丈夫なの?」と不安が増大します。

2進数という仕組みがあるという前提を知らない状態で
プログラミングを行い、客や上司と交渉をするということは、
そういう爆弾を抱えた状態で仕事をするようなものです。

知識不足が露呈するのが遅れて、扱う仕事が大きくなり、
ベテランになって立場や権限が重くなればなるほど、
基礎が抜けていることの抱えるリスクが大きくなります。

なので、2進数やネットワークの基礎知識は、
可能な限り早い段階で、叩き込んでおく必要があります。

より上位概念を学ぶ際の納得感が高まるから

例えば、すごく単純な話で言えば、ログが溜まったり
条件分岐のリファクタリングが不十分になり、
コードの量が増えると、画面表示の処理は遅くなります。

これが

「そういうものなんだな」

と漠然と理解するのか、

「2進法に変換した際の01の量が増えて、その結果
パソコンが発信する必要のある電気信号が増えたことで
処理に時間がかかってしまうんだろうな」

と理解するのかで、自分の納得感が変わってくるのです。

プログラミングの文法の中にも、基礎を覚えることで
より難しい上位概念がスッと頭に入ることがありますが、
2進法の知識というのは、Webに関わる人間のほぼ全員の
体系化された知識の始祖にあたる部分になります。

よって、今すぐ目の前の勉強や仕事で必要性を感じなくても、
必ず優先して把握しておくべきテーマです。

2進数を学ぶ際に役に立つ方法

Webを支える技術

「2進数は何か」という問いに端的に答えるだけなら
ググれば一発ですが、より体系的に基礎を学びたい場合は
「Webを支える技術」という本がお勧めです。

この本は、01だけでなく、GETとPOST、
CookieとSession、HTTP通信の概要など、
ネットワークに関する様々な基礎知識を網羅しており、
WEB系の仕事に関わる人のバイブルと呼ばれています。

その影響か、なかなかお値段は張りますが、
この業界で仕事をしたいと思っている人は、
買っておいて損はありません。

就職転職を考えている人は、何をやってきたのか聞かれたら
この本を読んでいたことを伝えると「勉強してるな」と
判断してもらえることが多くなります。

基礎を抑える重要性はここまで話した通りですが、
具体的に何をやったらいいのよ?と聞かれたら
僕はこの本をお勧めさせて頂きます。

まとめ

2進数は、大学や高専の工学部なら
割と早い段階で勉強することになりますが、
この仕組みに感動を覚え始めるのは、
やはり、エンジニアとして何らかの技術に触れ、
その本当の意味を知った後だと思います。

気になる方は、少しでも2進数を調べたり勉強してみて、
基礎をしっかりと抑え、仕事に役立てていきましょう!