• 2進数の計算方法(足し算・引き算)
  • なぜコンピュータは2進数を使うのか
  • 16進数との関係
  • プログラムでの2進数の使われ方

2進数のおさらい

前回の記事「そもそもプログラムって何?」で、2進数について学びましたね。

※まだ読まれてない人はこちら

簡単におさらいしましょう。

2進数とは

  • 0と1の2種類だけで数を表現する方法
  • コンピュータのスイッチ(ON/OFF)に対応している
  • 10進数の「5」は、2進数では「101」

10進数から2進数への変換

  • 半分にして、あまりを記録
  • あまりを下から順に読む

この基本を覚えていますか?

このおかげで、僕たちが馴染みのある10進数でコンピュータを操作することができる仕組みになっていました!

今回は、2進数をもっと深く理解していきましょう!

2. なぜコンピュータは2進数を使うの?(詳しく)

前回は「スイッチのON/OFFだから」と説明しましたが、もう少し深掘りしてみたいと思います。

2進数を扱う理由は2つあります。

理由1: 電気信号が2つの状態しか持てないから

コンピュータは機械です。なので、コンピュータ内部では電気が流れているか、流れていないかの2つの状態しかありません。

つまり「ONOFF」です。

2進数の場合

  • 2種類の電圧
  • 電圧があるか、ないかの2択

では、10進数ならどうなると思いますか?

僕たちがよく知る10進数は0〜9の10種類なので10進数の場合は電圧を10段階に分ける必要が出てきます。

10進数の場合

  • 0Vの時 → 0
  • 1Vの時 → 1
  • 2Vの時 → 2
  • 9Vの時 → 9

※Vは電気信号、電圧のボルトです。

10種類に分けた時、問題が発生します。

電圧は常に一定ではなく不安定という特徴があります。

なので、「これは2Vなのか3Vなのか」を正確に判断するのが難しいんです。

電子工作などに使われているパーツに「〇〇V」って書いてあるんですが、それを測る道具(テスター)を使うと、正確な数値ではなく誤差が生じることがあります。

電気は特定の値で安定しないんです。

一方、2進数なら

  • 電気が流れていない(0V前後) → 0
  • 電気が流れている(5V前後) → 1

この2つだけなので、判断がとても簡単で、間違いが起きにくいです。

理由2: 回路がシンプルになるから

2進数を使うと、AND(論理積)OR(論理和)NOT(否定)という3つの基本的な回路だけで、すべての計算ができます。

また、数値が増えても、この3つで対応できるので、把握しやすいです。

これが10進数だと…

はい。ものすごく回路が複雑になりすぎてしまいます。

想像したらゾッとしてよくわからないので想像するのやめました笑

数が増えればいいってものでもなく、できればいいってものでもないんですね!

自分たちの把握できる範囲が大切なんです!

誰かが作った回路が10進数なら、、、もう読むだけでパンクしてしまいます。

2進数の計算をやってみよう

2進数でも、10進数と同じように足し算や引き算ができます!

2進数の足し算

例題1: 10(イチゼロ) + 1001

10(イチゼロ)は10進数の2

1001は10進数の9

10進数では「 2 + 9 = 11」です。

2進数では「10(イチゼロ) + 1001= 1011」  です。

ここでこんがらがるんですが、この2進数で表現された「10」(イチゼロ)は、10進数の「2」を表現しています。

※「ジュウ」と読んでしまうと分からなくなるので、「イチゼロ」と読みましょう。

では、この「1011」をどうやって導き出したのか…

これは、2進数の計算ルールを知る必要があります。

それは、「2以上の数値が来たら繰り上がる」です。

これを覚えれば、あとは10進数と同じ要領で計算できます。

また筆算を使うとわかりやすいので筆算で進みたいと思います。

2進数の足し算

これが2進数の筆算です。

例題2: 10100 + 11101

一旦ここで解説を入れます!

2以上の数値には注意が必要

筆算で加算していくと「10進数の2以上」になることがあります。

その時2進数では「0と1」しか無いので2を直接書くことはできません。

そこで2以上の数時を2進数にするには簡単な方法があります。

加算した10進数を2で割った余りが「偶数= 0」「奇数=1」です!

つまり「繰り上がる数字(左に増える数字) と 余りの数(下におろす数字)」になります。

加算した結果が「10進数の5」なら「2あまり1」なので1を下ろして左に2を追加するこんなイメージです。

そしたらつづき行きたいと思います。

10100 + 11101の計算の続き

2進数の引き算 例題:10(イチゼロ) – 1

引き算も同じ考え方です。

ただし引き算は慣れが必要だと感じます。

すごい短い感じになってしまいましたが基本的には10進数と同じで要領で足し算も引き算も可能です!
借りてくる数字が違かったりちょっとだけルールが違ったりしますが基本的な仕組みは一緒です!

次は16進数についてです。

16進数って何?

プログラミングをしていると、「16進数」というものを目にすることがあります。

2進数は2種類の数字
10進数は10種類の数字
16進数は16種類の数字…

いいえ、違います!

数字は最大0〜9の10種類しかありません。

では、16進数とは?

16進数は、0〜9とA〜Fの16種類で数を表現します!

10進数2進数16進数
0000
1011
2102
3113
41004
51015
61106
71117
810008
910019
101010A
111011B
121100C
131101D
141110E
151111F
161000010

これは何のためにできたのか…

それは、2進数を短く書いて人でも扱いやすくするためです!

なぜ16進数を使うのか?

2進数は、数が増えていくほど桁数が多くて、結果として人間には読みにくい形になってしまいます。

16進数は、ある程度僕たちでも理解しやすいようになっています。

例えば2進数の「11111111」これを16進数にしたら「FF」たったこれだけになります。

すごく読みやすいですよね!

プログラミングでは、こんな場面で16進数を使います

プログラミングで16進数を使う

1.色

プログラミングでは「#FF0000」といった形で色を指定することがよくあります。

このようなものをカラーコードと言います。

カラーコードは16進数で表されており、画面を作っていくときに使用します!

2. IPアドレス(IPv6)

インターネット上の住所を表す時に使います。

例: 2001:0db8:85a3:0000:0000:8a2e:0370:7334

このようは16進数の羅列を住所として使っています。

これがわかることによってインターネット上でどこに存在しているか明確になります!

※IPアドレスにはIPv4というバージョンがあり「192.168.1.1」のような形式になっており10進数で表現されているものもあります

他にもメモリアドレスやMacアドレスといった物も16進数で作られており、プログラムをやっているとあらゆるところで遭遇します。

2進数はコンピュータが扱いやすいもので10進数、16進数は僕たち人が扱いやすいものです!

プログラムでの2進数の様々な使われ方

実際のプログラムで、2進数はこんな風に使われています。

ビット演算

JavaやJavaScriptでは、「&」「|」「^」などの記号を使って演算子で、2進数を直接操作できます。
※&(ビット論理積) |(ビット論理和) ^(ビット排他的論理和)については別の記事で紹介しようと思っているので今回は割愛します。

Javaでの例

int a = 5; → 2進数の101
int b = 3; → 2進数の11
int c = a & b; 2進数の01 10進数の1

このように直接2進数を操作することができます。

ビットとは?

電球のスイッチを思い出してみてください。

OFFONの状態の2種類があったと思います。

この1スイッチの単位を「ビット」と言います。

  • 4ビット → スイッチ4つ
  • 2ビット → スイッチ2つ

僕たちはプログラミング言語(翻訳機)を経由して操作しているんですが、それを直接計算したりする、それがビット演算です!

権限管理

ユーザーの権限を2進数で管理することがあります。

権限とは誰がこのファイルを書き込めたり読み込めたりする権利があるかを決められることです。

プログラミングでお仕事しているとこの「権限」という言葉をよく聞きます!

権限の例

権限の種類2進数10進数
読む権限011
書く権限102
実行権限1004

これらを組み合わせると:

権限の組み合わせ2進数10進数
読む + 書く113
すべて1117

実際の場面

隣の人は操作できて、自分は操作できない…なんてことがたまにあったりします。

そういう時は、大概権限がもらえていないか操作方法を間違えているかのどちらかです。

そんな時、「権限付与してる?」なんて言葉が飛び交ったりします!

これが2進数の考え方で管理されています!

6. まとめ

✅ コンピュータが2進数を使うのは、電気信号が安定するから
✅ 2進数でも足し算・引き算ができる
✅ 16進数は、2進数を短く書くための方法
✅ プログラムでは、ビット演算や権限管理で2進数が使われる

2進数を理解すると、コンピュータの動きがより深く理解できます。

関連記事

こんな記事もおすすめです!

プログラミング言語の種類と選び方
→ Java、Python、JavaScript…どれを学べばいい?

そもそもプログラムって何? 〜初心者でも10分で分かる基礎〜
→ そもそもプログラムを知りたい人へ