あなたは、コンピュータがどのようにあなたの指示を理解しているのか考えたことはありますか? スマートフォン、パソコン、家電製品など、私たちの生活に欠かせないこれらのデバイスは、すべてコンピュータによって制御されています。そして、コンピュータが情報を処理する際に使っているのが2進数と呼ばれる、0と1の2つの数字だけからなる記数法です。
この記事では、2進数の基礎知識から、加算、減算、乗算、除算といった基本的な演算、そしてコンピュータ特有のビット演算 (AND、OR、XOR、NOT) まで、例題を交えながらわかりやすく解説します。さらに、2進数と10進数、16進数の相互変換方法についても詳しく説明します。この記事を読み終える頃には、コンピュータの言語である2進数の世界を理解し、コンピュータの動作原理への理解を深めることができるでしょう。
2進数とは?
私たちが普段使っているのは、0から9までの10個の数字を使って数を表す10進法です。一方、2進法は、0と1の2つの数字だけを使って数を表す記数法です。コンピュータは、電圧の高低やスイッチのオンオフなど、2つの状態を表現しやすい電子部品で構成されているため、2進法が情報の表現に適しています。
2進法では、各桁は2の累乗を表しています。例えば、10進法の「8」は、2進法では「1000」と表されます。これは、右から順に、
- 0×2^0=0
- 0×2^1=0
- 0×2^2=0
- 1×2^3=8
を足し合わせたものになります。
桁 | 10進法 | 2進法 |
2^0 | 1 | 1 |
2^1 | 2 | 10 |
2^2 | 4 | 100 |
2^3 | 8 | 1000 |
2^4 | 16 | 10000 |
2^5 | 32 | 100000 |
2^6 | 64 | 1000000 |
2^7 | 128 | 10000000 |
※^は累乗
2進数、10進数、16進数の変換
コンピュータ内部では2進法が使われていますが、人間にとっては10進法の方が扱いやすい場合があります。また、16進法は、2進法をよりコンパクトに表現するために使われます。ここでは、2進法、10進法、16進数の相互変換方法について解説します。
2進数から10進数への変換
2進数を10進数に変換するには、各ビットに2の累乗を掛けて足し合わせます。
例題
1011 を10進数に変換してみましょう。
1 × 2^3 + 0 × 2^2 + 1 × 2^1 + 1 × 2^0 = 8 + 0 + 2 + 1 = 11
結果、10進数で11となります。
10進数から2進数への変換
10進数を2進数に変換するには、以下の手順を繰り返します。
- 10進数を2で割る。
- 余りを記録する。
- 商を新しい10進数として、1.に戻る。
- 商が0になったら、記録した余りを逆順に並べる。
例題
10進数の13を2進数に変換してみましょう。
- 13 ÷ 2 = 6 余り 1
- 6 ÷ 2 = 3 余り 0
- 3 ÷ 2 = 1 余り 1
- 1 ÷ 2 = 0 余り 1
余りを逆順に並べると、1101となります。
10進数から16進数への変換
10進数を16進数に変換するには、以下の手順を繰り返します。
- 10進数を16で割る。
- 余りを記録する。
- 商を新しい10進数として、1.に戻る。
- 商が0になったら、記録した余りを逆順に並べる。
- 余りが10以上の場合は、A〜Fの文字に置き換える。
例題
10進数の203を16進数に変換してみましょう。
- 203 ÷ 16 = 12 余り 11 (B)
- 12 ÷ 16 = 0 余り 12 (C)
余りを逆順に並べると、CBとなります。
16進数から10進数への変換
16進数を10進数に変換するには、各桁に16の累乗を掛けて足し合わせます。16進数のA〜Fは、それぞれ10〜15に対応します。
例題
16進数のCBを10進数に変換してみましょう。
C × 16^1 + B × 16^0 = 12 × 16 + 11 × 1 = 192 + 11 = 203
結果、10進数で203となります。
2進数から16進数への変換
2進数を16進数に変換するには、2進数を4ビットずつに区切り、各4ビットを16進数の数字に変換します。
例題
101110100 を16進数に変換してみましょう。
- 4ビットずつに区切ると、1011 1010 0 となります。
- 各4ビットを16進数に変換すると、B A 2 となります。
結果、16進数でBA2となります。
2進数 (4ビット) | 16進数 |
0000 | 0 |
0001 | 1 |
0010 | 2 |
0011 | 3 |
0100 | 4 |
0101 | 5 |
0110 | 6 |
0111 | 7 |
1000 | 8 |
1001 | 9 |
1010 | A |
1011 | B |
1100 | C |
1101 | D |
1110 | E |
1111 | F |
16進数から2進数への変換
16進数を2進数に変換するには、各16進数の数字を4ビットの2進数に変換します。
例題
16進数のA5を2進数に変換してみましょう。
- Aは10進数で10なので、2進数で1010となります。
- 5は2進数で0101となります。
結果、2進数で10100101となります。
2進数の基本演算
2進数には、10進数と同じように、四則演算(加算、減算、乗算、除算)があります。さらに、コンピュータ特有の演算として、ビット演算があります。ここでは、基本的な演算である加算、減算、乗算、除算、AND演算、OR演算、XOR演算、NOT演算、左シフト演算、右シフト演算について解説します。
加算
2進数の加算は、10進数の加算とほぼ同じように行います。ただし、繰り上がりが発生する条件が異なります。10進数では、桁の合計が10になると繰り上がりますが、2進数では2になると繰り上がります。
例題
1011 (10進数で11) と 1101 (10進数で13) を加算してみましょう。
1011
+ 1101
------
11000
計算手順は以下の通りです。
- 1 + 1 = 10 (2進数) なので、0を書き、1を繰り上げます。
- 1 + 0 + 1 (繰り上がり) = 10 (2進数) なので、0を書き、1を繰り上げます。
- 0 + 1 + 1 (繰り上がり) = 10 (2進数) なので、0を書き、1を繰り上げます。
- 1 + 1 (繰り上がり) = 10 (2進数) なので、10を書きます。
結果、11000 (10進数で24) となります。
減算
2進数の減算も、10進数の減算とほぼ同じように行います。ただし、繰り下がりが発生する条件が異なります。10進数では、上の桁の数字が下の桁の数字より小さい場合に繰り下がりが発生しますが、2進数では上の桁が0で下の桁が1の場合に繰り下がりが発生します。繰り下がりが発生すると、上の桁は10 (2進数で2) になります。
例題
1011 (10進数で11) から 0101 (10進数で5) を減算してみましょう。
1011
- 0101
------
0110
計算手順は以下の通りです。
- 1 – 1 = 0 なので、0を書きます。
- 1 – 0 = 1 なので、1を書きます。
- 0 – 1 は繰り下がりが必要なので、上の桁から1を借りてきて 10 – 1 = 1 を計算し、1を書きます。(10は2進数で2なので10 – 1 → 2 – 1 = 1)
- 上の桁は1を借りたので 0 になります。
結果、0110 (10進数で6) となります。
乗算
2進数の乗算も、10進数の乗算と同様に行います。ただし、掛け算九九は非常にシンプルで、0×0=0, 0×1=0, 1×0=0, 1×1=1 の4通りしかありません。
例題
1011 (10進数で11) と 1101 (10進数で13) を乗算してみましょう。
1011
× 1101
-------
1011
0000
1011
+1011
-------
100000010101010
結果、100000010101010 (10進数で143) となります。
除算
2進数の除算は、10進数の除算と同様の手順で行います。ただし、各ステップで減算を行う際に、2進数の減算のルールに従う必要があります。
例題
1101 (10進数で13) を 10 (10進数で2) で除算してみましょう。
110
-------
10 | 1101
10
--
10
10
--
01
計算手順は以下の通りです。
- 1101 のうち、10 で割れる最大の桁は 11 です。 11 ÷ 10 = 1 余り 1 なので、商に 1 を立て、余り 1 を下に書きます。
- 余りの 1 に次の桁の 0 を下ろして 10 とします。 10 ÷ 10 = 1 余り 0 なので、商に 1 を立て、余り 0 を下に書きます。
- 余りの 0 に次の桁の 1 を下ろして 1 とします。 1 ÷ 10 は割れないので、商に 0 を立てます。
結果、商は 110 (10進数で6) 、余りは 1 となります。
AND演算
AND演算は、2つのビットに対して行われる演算で、両方のビットが1の場合にのみ結果が1になります。それ以外の場合は、結果は0になります。
例題
10111010 と 01011001 のAND演算を行ってみましょう。
10111010
& 01011001
----------
00011000
各桁の結果は以下の通りです。
- 0 & 1 = 0
- 1 & 0 = 0
- 0 & 0 = 0
- 1 & 1 = 1
- 1 & 1 = 1
- 0 & 0 = 0
- 1 & 1 = 1
- 0 & 0 = 0
結果、00011000 となります。
OR演算
OR演算も、2つのビットに対して行われる演算です。どちらか一方のビットが1であれば、結果が1になります。両方のビットが0の場合にのみ、結果が0になります。
例題
10111010 と 01011001 のOR演算を行ってみましょう。
10111010
| 01011001
----------
11111011
各桁の結果は以下の通りです。
- 0 | 1 = 1
- 1 | 0 = 1
- 0 | 0 = 0
- 1 | 1 = 1
- 1 | 1 = 1
- 0 | 0 = 0
- 1 | 1 = 1
- 0 | 1 = 1
結果、11111011 となります。
XOR演算
XOR演算 (排他的論理和) は、2つのビットに対して行われる演算です。2つのビットが異なる場合にのみ結果が1になります。両方のビットが同じ値の場合、結果は0になります。
例題
10111010 と 01011001 のXOR演算を行ってみましょう。
10111010
^ 01011001
----------
11100011
各桁の結果は以下の通りです。
- 0 ^ 1 = 1
- 1 ^ 0 = 1
- 0 ^ 0 = 0
- 1 ^ 1 = 0
- 1 ^ 1 = 0
- 0 ^ 0 = 0
- 1 ^ 1 = 0
- 0 ^ 1 = 1
結果、11100011 となります。
ここでの^は累乗では無くXORです。
NOT演算
NOT演算 (否定) は、1つのビットに対して行われる演算です。ビットが0であれば結果が1になり、ビットが1であれば結果が0になります。
例題
10111010 のNOT演算を行ってみましょう。
~ 10111010
----------
01000101
各ビットの結果は以下の通りです。
- ~ 1 = 0
- ~ 0 = 1
- ~ 1 = 0
- ~ 1 = 0
- ~ 1 = 0
- ~ 0 = 1
- ~ 1 = 0
- ~ 0 = 1
結果、01000101 となります。
左シフト演算
左シフト演算は、ビット列を左に指定したビット数だけ移動させる演算です。空いたビットには0が埋められます。
例題
10111010 を1ビット左シフトしてみましょう。
10111010 << 1 = 101110100
結果、101110100 となります。
右シフト演算
右シフト演算は、ビット列を右に指定したビット数だけ移動させる演算です。空いたビットには、符号ビット(最上位ビット)と同じ値が埋められます。 符号なし整数の場合には、空いたビットには0が埋められます。
例題
01011001 を1ビット右シフトしてみましょう。
01011001 >> 1 = 0101100
結果、0101100 となります。
2進数演算の重要性
2進数演算は、コンピュータの動作原理を理解する上で非常に重要な役割を果たしています。コンピュータ内部では、AND、OR、XOR、NOT といった論理ゲートと呼ばれる回路が組み合わさって、複雑な計算や処理を行っています。これらの論理ゲートは、2進数のビット演算に基づいて動作しており、コンピュータのあらゆる処理の基礎となっています。
また、2進数演算は、画像処理、暗号化、データ圧縮など、様々な分野で応用されています。例えば、画像処理では、画像を2進数のデータとして扱い、ビット演算を用いて画像の編集や加工を行います。暗号化では、2進数演算を用いて情報を暗号化し、セキュリティを高めています。
まとめ
この記事では、2進数の基礎知識から、基本的な演算、そして10進数や16進数への変換方法まで解説しました。2進数は、コンピュータが情報を処理するための基本的な言語であり、コンピュータの仕組みを理解する上で重要な概念です。
2進数演算は、コンピュータ内部の論理ゲートの動作原理を理解するだけでなく、画像処理、暗号化、データ圧縮など、様々な分野で応用されています。この記事を通して、2進数への理解を深め、コンピュータの世界に興味を持っていただければ幸いです。
結論
現代のテクノロジー社会において、コンピュータはあらゆる場面で活躍しています。そして、そのコンピュータの根幹を支えているのが2進数です。2進数を理解することは、コンピュータの動作原理を理解するだけでなく、コンピュータがどのように私たちの生活を支えているのかを理解することにもつながります。
この記事で解説した2進数の基礎知識、演算、変換方法などを参考に、2進数の世界を深く探求してみてください。
たび友|サイトマップ
関連webアプリ
たび友|サイトマップ:https://tabui-tomo.com/sitemap
検引友:https://kentomo.tabui-tomo.com
ピー友:https://pdftomo.tabui-tomo.com