基本情報処理

2進数ってなに?0と1の世界をやさしく解説!

こんにちは!今回は、コンピューターの仕組みを理解する上で欠かせない「2進数(にしんすう)」について、解説していきます。
「2進数って何?」「どうしてコンピューターは2進数を使っているの?」という疑問を持つ方にも分かりやすく説明します。
またコンピュータの情報を扱う上で16進数の理解も非常に重要になってきます。
ぜひ最後まで読んでみてください。

2進数とは?

私たちが普段使っているのは「10進数」です。
たとえば「64」や「205」といった値は、0〜9の数字を使って数を表しています。
このように0〜9の10種類の数字を使って値を表現しているため「10進数」と言います。
それに対して「2進数」は、「0」と「1」だけの2つの数字を使って値を表現します。

10進数の「1」は → 2進数では「1」
10進数の「2」は → 2進数では「10」
10進数の「3」は → 2進数では「11」
10進数の「4」は → 2進数では「100」

このように、2つの数字「0」と「1」だけで値を表現することができます。
もちろん「64」や「205」も2進数で表現することができます。
「64」は「1000000」
「205」は「11001101」
と表すことができます。

なぜ2進数が必要なの?

コンピューターの中では、数字の情報だけではなく、文字の情報、キーボード、マウスからの入力情報、ディスプレイやプリンターに対する出力情報、ハードディスクやUSBメモリに保存している情報の全てを「0」と「1」で扱っています。

これはコンピューターが全ての情報を
「電気が流れている(ON)=1」
「電気が流れていない(OFF)=0」
という2つの状態で扱う仕組みになっているからです。
この電流が流れる場合がたくさんあり、ONとOFFの組み合わせであらゆる情報を表現しています。

合わせて理解しておきたい16進数

次に16進数の説明をします。
10進数が0~9の10個の数字、2進数が0と1の2つの数字を使うということは
16進数は16の数字を使って値を表現します。
でも数字は0~9の10個しかありませんよね。
足りない部分はアルファベットのA~Fで補って値を表現します。
10進数の「1」は → 16進数では「1」
10進数の「2」は → 16進数では「2」
10進数の「3」は → 16進数では「3」
10進数の「4」は → 16進数では「4」
と9までは10進数と同じです。10以降が以下のようになります。
10進数の「10」は → 16進数では「A」
10進数の「11」は → 16進数では「B」
10進数の「12」は → 16進数では「C」
10進数の「13」は → 16進数では「D」
10進数の「14」は → 16進数では「F」
10進数の「15」は → 16進数では「F」
10進数の「16」は → 16進数では「10」
このようにアルファベットをあたかも数字のように扱って16進数は値を表現します。

なぜ16進数が必要なの?

16進数が必要な理由は主に2つあります。
まず2進数ですべての値や情報を表現しますが、2進数はすぐに桁上がりをするため、大きなデータの中身を直接人の手で確認する必要があるとなると非常に多くの0と1の羅列を見ることになります。
コンピュータが理解しやすい分人にとっては分かりにくいのが2進数です。
2進数を16進数に変換して見せることで人が見てもややわかりやすいという状態に情報を置き換えることができます。
もう一つの理由は、16進数2桁で1バイトを表現することができるからです。
1バイトは8ビットの塊ですので合計256種類の値を表現することができます。
16進数2桁で1バイトを表現することが可能です。
コンピュータは情報をバイト単位で扱いますので1バイトずつを表現するのに16進数は最も適しているといえます。
実際に「バイナリエディタ」と呼ばれるツールではデータの中身を16進数で表示してくれるようになっています。
次の画像は「Stirling(スターリン)」というバイナリエディタのツールでExcelファイルを開いてみた例です。

このようにファイルの中身を16進数の値ですべて表現されています。

例で理解する10進数から2進数への変換方法

では、実際に10進数をどうやって2進数に変換するかを見ていきましょう。
ここでは10進数「13」を2進数に変換するのを例に見ていきます。
まずは13を2で割ります。そうすると商が6余りが1となります。
次に商の部分の6をまた2でわります。余りは0となります。
と順番に商を2で割ってあまりを出していき2で割った結果の商が0になるまでを
続けます。
商が0のときの余りを一番左として順番にすべての余りを並べたら
「1101」となります。これが10進数の「13」を2進数に変換した値です。
計算するときは次の画像のように書いて計算するとスムーズに2進数に変換できます。
情報処理試験の時も余白のスペースを使って計算することができます。


では次に「1101」を10進数に変換してみましょう。


2進数の1桁目は2^0(2の0乗)
2進数の2桁目は2^1(2の1乗)
2進数の3桁目は2^2(2の2乗)
2進数の4桁目は2^3(2の3乗)
で計算します。
「1101」の場合

2^3×1 + 2^2×1 + 2^1×1 + 2^0×1
= 8 + 4 + 0 + 1 =13
となって10進数の「13」となります。
このような方法で10進数から2進数、2進数から10進数に変換することができます。

まとめ

・2進数は「0」と「1」だけで数を表す仕組み
・コンピューターは電気のON/OFFで情報を扱うから、2進数が最適
・16進数は1バイトを表現するのに最適
・10進数から2進数への変換は2で割った余りを出していくことで変換できる
・2進数から10進数への変換は、2のべき乗を使って計算

最初はとっつきにくい2進数ですが仕組みをしっかり理解すると、論理的でシンプルな
仕組みです。

基本情報処理試験、応用情報処理試験にも出題される部分なのでしっかりと理解しておきましょう!