ツイート
シェア
LINEで送る
B! はてぶでブックマーク
Pocketでブックマーク
RSSフィード

2進数と16進数、10進数を理解するには、小学1年生に戻ると分かりやすい。

2進数の画像
by 写真素材ダウンロードサイト【写真AC】
の画像をもとに加工しています。

ご覧のページは 3 / 7 です。先頭ページはこちら。

【2進数】囚われの10を2に変えるだけ。

小学校で習って高校までまったく疑問を持たない10進数は『10に囚われている』と言いました。2進数は『2に囚われれば』いいだけです。

2進数の画像1
2進数の画像2

10種類の数字を使う-> 2種類の数字を使う

10nの位 -> 2nの位

10進数の『10』を『2』に置き換えて考える。

『10という数字にこだわらないで!一番大きい玉だと思って!』と言ったのは、10を忘れることをしつこく言いたいから。10や2を大きい玉だと思えば、何進数だろうが関係ありません。

大きい玉の大きさが9であったり1であったり、はたまた15になるだけなので。

この大きい玉の大きさ+1のことを(てい)や基数(きすう)といいます。(累乗で使う用語。)

訂正

図の『2n倍膨らむ』にどこから?がありません。図の説明なら1の位が基準です。

2(現在の位は基準から何個離れてるか?)になる。

左隣なら2倍、その左隣なら4倍。右隣は2-1(1 / 2 )、その右隣は2-2(1 / 4)になる。

2進数はコンピュータの考え方。10進数は人間の考え方

ボクが高校のころはN進数というものを習った記憶がありません。ある年代以上は多いんじゃないでしょうか?

2進数の考え方はパソコンやスマホなどコンピュータの基本中の基本です。最近は情報系の科目が普通科でもあるらしく、高校数学で教えているみたい。

さっき『みんな10年間くらい "10" に囚われている』と言いましたが、人間は数の考え方で10にこだわるようになっています。囚われるように教えるのが悪いんじゃなくて、現実世界に一番合っている教育。

ただコンピュータの世界はちがいます(というよりデジタル情報)。デジタルでは10のところが2に変わります。

人間が10にしっくりくるようにデジタル世界では2がしっくりくるようになってる。デジタルはすべてのものを0と1で表現するから。

プログラマーやシステムエンジニアなどは、人間世界とデジタル世界を結ぶ翻訳家みたいなもの。

デジタル語(2進数)は人間語(10進数)に翻訳して見るのが普通

『2進数10011001の値はいくらですか?』といきなり言われると即答できないでしょう。

では『153って数字分かりますか?』はクソみたいな質問です。なにか裏があってちがう答えを探しそうなほど。

『2進数10011001』は人間世界では『153』です。『10011001』はデジタル語です。

人間世界では10種類の数字で表現できるのに、デジタル世界では0と1しか使えないのでどうしても長くなります。同時にそのままでは何を言っているのか分からない。

そこでプログラマなどはデジタル語では分かりにくいものをいろいろな方法で翻訳していきます。

デジタル語(2進数)を人間語(10進数)に翻訳する

2進数から10進数への変換は、また小学生へ戻ります。まずは、10進数の153という数字は何かから。

先生
学校の先生
153という数字を位で分けてみましょう。まず、一番大きな位はどれ?
生徒
小学生
100
先生
学校の先生
一番大きい位に入ってる数字は?
生徒
小学生
1
先生
学校の先生
値は?
生徒
小学生
100 × 1 = 100
先生
学校の先生
2番めに大きい位は10(10の1乗)ですね?その中に入ってる数字は?
生徒
小学生
5
先生
学校の先生
値は?
生徒
小学生
10 × 5 = 50
先生
学校の先生
残りは1の位(10の0乗)ですね?その中に入ってる数字は?
生徒
小学生
3
先生
学校の先生
値は?
生徒
小学生
3
先生
学校の先生
分解した値から153になる式を作ってください。
生徒
小学生
100 + 50 + 3 = 153

ここで大事なのは、位を『いち、じゅう、ひゃく、せん、まん、...』と見ないことです。基数を使って『100, 101, 102, 103, 104, ...』で見ます。

もうこれで、2進数から10進数への変換ができます。先生と生徒のやり取りの "10" を "2" に変えるだけ。

入ってる数字10011001
27
(128)
26
(64)
25
(32)
24
(16)
23
(8)
22
(4)
21
(2)
20
(1)
12800168001

\[128 + 16 + 8 + 1 = 153\]

かんたんですね? ちなみに"1000" は2進数の "8" なのか10進数の "1000" なのか分からないので、『数字(10進数の値)』で書きます。

2進数の10001000(8)8
10進数の10001000(10)1000

人間語(10進数)をデジタル語(2進数)に翻訳する

10進数から2進数への変換はさっきの先生と生徒のやり取りをそのまま割り算で表現すれば完成します。

10進数では、

\begin{align}153 \div 100 &= \textcolor{#cf2e2d}{1} 余り 53 &\longleftarrow \ 一番大きな位の分解 \\ 53 \div 10 &= \textcolor{#cf2e2d}{5} 余り 3 &\longleftarrow \ 2番目の位の分解 \\ 3 \div 1 &= \textcolor{#cf2e2d}{3} &\longleftarrow \ 一番小さい位の分解\end{align}

余りが無くなるまで位の大きい方から割っていき、商(赤色)を出てきた順に左から並べれば完成。(2回目以降は直前の余りを位で割る。)

2進数の場合は割る値に2進数の位の10進値を使います。

\begin{align}153 \div 128 &= \textcolor{#cf2e2d}{1} 余り 25 \\ 25 \div 64 &= \textcolor{#cf2e2d}{0} 余り 25 \\ 25 \div 32 &= \textcolor{#cf2e2d}{0} 余り 25 \\ 25 \div 16 &= \textcolor{#cf2e2d}{1} 余り 9 \\ 9 \div 8 &= \textcolor{#cf2e2d}{1} 余り 1 \\ 1 \div 4 &= \textcolor{#cf2e2d}{0} 余り 1 \\ 1 \div 2 &= \textcolor{#cf2e2d}{0} 余り 1 \\ 1 \div 1 &= \textcolor{#cf2e2d}{1} \end{align}

答えは『10011001』で合ってますね?

次は 【16進数】2進数を人間に見やすくしたショートカット
前は 【10進数】小学1年生になったつもりで復習しよう!
コメントを残す

*