位取り記数法を理解しよう(n進法の計算とすだれ算)【数学IA】

数学IA

みなさん。こんにちは。数学IAのコーナーです。今回は【位取り記数法】についてです。

 

位取り記数法、またはn進法とは、数字の書き表し方のことであり、コンピュータの仕組みを理解するうえで非常に重要な概念です。また、「すだれ算」はかなり簡単に理解できると思うのでせめて「すだれ算」はこの機会にマスターしておきましょう。

 

センター試験での出題はまちまちですが、今後一層重要になるPC関連の知識の初歩となります。将来PCを使った仕事に就きたい、という人にはセンター試験よりも大切です。

 

まずは位取り記数法とは何なのかを理解し、その後、10進数と2進数の相互変換、2進法での小数表記、2進数の四則演算 (足し算、引き算、掛け算、割り算)について解説いたします。

スポンサーリンク
スポンサーリンク

位取り記数法 (n進法)とは

 

我々の普段使っている数字は

 

0、1、2、、、、9 まで行くと、次は桁が1つ上がって 10 になります。

 

さらに10、11、12、、、、20、21、22、、、、98、99 まで行くと、また1つ桁が上がって、100になります。

 

このように、各桁の数字が0~9の10個の数字のどれかで表され、各桁の数のすべてが9になったら次の数は桁が上がる、というような数字の表し方を、「10進位取り記数法」またの名を「10進法」といい、「10進法」で書かれた数字を「10進数」といいます。

 

10進数以外にも数字の表し方は色々ありまして、実は身の回りにも10進数以外で表記された数字があります。

 

例えば、「時間」です。

 

「時間」は、60秒で1分になり、60分で1時間になります。これは「60進数」であると考えることができます。

 

他にも鉛筆がたくさんあるときに「ダース」という数え方をすることがあります。

 

1ダースは12本、2ダースは24本で、これは12ごとに桁が上がる「12進数」です。

 

そして、皆さんお使いのスマートフォンやPCの中では、「電気が流れている」「流れていない」の2つの状態を「1」と「0」とした2進数で数字が表されます。

 

10進数では0、1、2、3、、、、9、10 となりますが、

 

2進数では0と1しか使うことができないので、各桁の位のすべてが1になれば、桁が上がって、

 

0、1、10、11、100、101、110、111、1000、、、、となります。

 

10進数で表された数字は下のような意味を持っています。10進法なので10に各々の桁の数-1を使用します。

 

$$ 2378 = 2 \times 10^3 + 3 \times 10^2 + 7 \times 10^1 + 8 \times 10^0 $$

 

対して、2進数で表された数は下のような意味です。2進法なので2に各々の桁の数-1を使用します。わかりにくければ 1 が立っているところに2のベキ乗をかけて足し合わせるということができます。

 

$$ 101101 = 1 \times 2^5 + 0 \times 2^4 + 1 \times 2^3 + 1 \times 2^2 + 0 \times 2^1 + 1 \times 2^0 $$

 

よって、2進数で表された $101101$ という数を10進数にすると、

 

\begin{eqnarray} 101101_{(2)} &=& 32+0+8+4+0+1 \\ &=& 45_{(10)} \end{eqnarray}

 

となります。数字の右下に付いている $_{(2)}$ は「2進数で表している」ことを意味する記号です。

 

例題を見つつ、さらに理解を深めていきましょう。

 

例題 1以下の2進数で表記された数を10進数にせよ。

(1) 110011 (2) 10010010

以下、左辺は2進数、右辺はすべて10進数になっています。

\begin{eqnarray} 110011 &=& 2^5 + 2^4 + 2^1 +2^0 \\ &=& 32 +16 +2 +1 \\ &=& 51 \end{eqnarray}
\begin{eqnarray} 10010010 &=& 2^7 + 2^4 + 2^1 +2^0 \\ &=& 128 +16 +2 +1 \\ &=& 147 \end{eqnarray}

10進数 → 2進数 の変換

2進数を10進数にするのは簡単なのですが、10進数を2進数にするのは少々困難です。

 

例として、10進数で表記された$87$という数字を2進数へ変換することを考えます。2進数へ変換するには、10進数で表記された数を2の累乗の数の和として表す必要があります。

 

$$ 87 = 64 (= 2^6 ) + 16 (= 2^4 ) + 4 (= 2^2) + 2 (= 2^1 ) + 1 (= 2^0 ) $$

 

$87$をこのように表すことができれば、あとは各桁に対応する$1$もしくは$0$を入れることで、2進数にすることができます。

 

すなわち、2進数で表すと $ 87_{(10)} = 1010111_{(2)}$ となります。

 

どういった計算をすれば良いかというと、まず、$87$は$2^6 =64$より大きく、$2^7 =128$より小さな数なので、$87-64$を実行し、$23$を得ます。

 

次に$23$と$2^5 =32$との大小を比較し、$23 < 2^5$ですので、続けて$2^4 = 16$との大小を比較します。

 

$23 > 2^4$ですので、$23-16$を実行し、$7$を得ます。このような計算を$2^0$まで続けることで、

 

$$ 87 = 64 (= 2^6 ) + 16 (= 2^4 ) + 4 (= 2^2) + 2 (= 2^1 ) + 1 (= 2^0 ) $$

 

を得ることができます。

 

今回は2進数への変換を行いましたが、3進数でも、5進数でも、16進数でも方法は同じです。

10進法を2進法にする「すだれ算」について

前章で述べたような方法を用いることで、10進数は2進数へ変換することが可能です。しかし、上記方法は少々面倒だったので、頭の良い方がもっと簡単な方法を見つけました。

 

日本ではその方法はすだれ算と呼ばれます。計算後の形が「すだれ」に似ていることから名付けられました。「すだれ」というのは日本のカーテンのことですね。都会には存在しません。

 

方法は実際にやってみるのが一番分かりやすいです。以下に10進数の$87$を例として、すだれ算の計算過程を図にしました。

「すだれ算」は割り算を連続して実行するのですが、余りを右側に記しておきます。2で「すだれ算」をする(2進数に変換する)ときには余りは0または1になります。

 

商が0になるまで計算が終わったら、横に書いておいた余りを下から順番に並べます

 

すると不思議なことに、2進数への変換が完了します。原理について詳しいことは説明しませんが、上の図を見ていると分かる方もいるかもしれません。

 

すだれ算は特殊な計算方法ですし、下から余りを読んでいく、というのは覚えにくい方もいるかもしれません。しかし、すだれ算は変換を簡単にするためのものですので、無理して使う必要はありません。忘れてしまったときには、前の章の方法を使えば大丈夫です。2進数とは何なのかを分かっていれば、前の章で述べた計算方法はすぐに思い浮かぶはずです。

 

また、計算に自信がないときには、2進数を10進数にもう一度変換し、ちゃんと元の数に戻るかを検討するとよいでしょう。2進数から10進数への変換は簡単ですので。

 

例題 2以下の10進数で表記された数を2進数にせよ。

(1) 39  (2) 89

 

どちらもすだれ算で計算した結果を以下に示します。

2進数の小数表記

段々と難しくなってきます。次は2進数で小数を表します。こちらも10進数での表記と比較してみると分かりやすいです。

 

$0.739$ という10進数で表記された小数について考えます。この数字は以下のような意味を持っています。

 

$$ 0.739 =0 \times \left( \frac{1}{10} \right)^0 + 7 \times \left( \frac{1}{10} \right)^1 + 3 \times \left( \frac{1}{10} \right)^2 + 9 \times \left( \frac{1}{10} \right)^3 $$

では、$0.101011$という2進数で表された小数について考えます。この小数は以下のような意味を持っています。

 

\begin{eqnarray} 0.101011 = 0 \times \left( \frac{1}{2} \right)^{0} + 1 \times \left( \frac{1}{2} \right)^{1} + 0 \times \left( \frac{1}{2} \right)^{2} + 1 \times \left( \frac{1}{2} \right)^{3} \\ + 0 \times \left( \frac{1}{2} \right)^{4} + 1 \times \left( \frac{1}{2} \right)^{5} + 1 \times \left( \frac{1}{2} \right)^{6} \end{eqnarray}

 

よって10進数にすると、

\begin{eqnarray} 0.101011_{(2)}&=& \frac{1}{2} + \frac{1}{8} + \frac{1}{32} + \frac{1}{64}  = \frac{43}{64} \\ &=& 0.6718 \cdots_{(10)} \end{eqnarray}

 

となります。2進数で表記すれば有限小数となる数字が、10進数で表記すると無限小数になることはよくあります。逆もまた然り。

 

整数の場合と同様に、2進数から10進数に変換することは容易ですが、10進数から2進数へ変換することは少々難しいです。とはいえ方法は整数の場合と同様です。

 

$0.625$という10進数を2進数へ変換することを考えます。この10進数は

\begin{eqnarray} 0.625 &=& 0.5 + 0.125 \\ &=& 1 \times \left( \frac{1}{2} \right)^{1} + 1 \times \left( \frac{1}{2} \right)^{3} \end{eqnarray}

 

と、表記されるので、2進数で表すと、$0.101$となります。10進数から2進数にするときに有限小数となるのは最後の桁の数が$5$のときだけです。ゆえにテストでは最後の桁が$5$となる数以外はまず出題されません。

 

上記のように表すには、整数の場合と同様に、$\frac{1}{2}=0.5$と大小比較して、$\frac{1}{4} = 0.25$と大小比較して、、、という過程を繰り返します。

2進数の四則演算

最後に2進数の四則演算について、説明します。

 

2進数の四則演算は、「2進数のまま計算する方法」「10進数に変換してから計算する方法」の2つがあります。

 

10進数に慣れ親しんだ私たち人間は、10進数に変換した方が数字をイメージしやすく、間違いも少なくなるので、受験生の皆さんは10進数に変換して計算しましょう

 

ただ、「コンピュータの気持ち」を知るためにも、受験会場以外の場で1度くらいは、2進数のまま四則演算をしてみて欲しいと思います。

 

以下に2進数の四則演算の方法を示します。

 

2進数の四則演算で必要となるのは、以下のルールのみです。

上の図は、1桁の2つの2進数の足し算と掛け算の結果を表しています。足し算は$1+1=10$になることにご注意ください掛け算は10進数の場合と同じです。引き算は足し算の逆の演算ですね。

 

上のルールを見ながら下の例題を解いてみてください。

例題 32進数で表記された2つの自然数、$A=1101100$、及び、$B=1001$について以下の値をそれぞれ求めよ。

(1) $A+B$   (2) $A-B$   (3) $A \times B$   (4) $A \div B$

実際に解くと下のようになります。

2進数の計算に慣れてくると、やっていることは結局、$1$と$0$を足したり、引いたりしているだけだということが分かってきて、何も考えずに計算できるようになってきます。頭は空っぽで鉛筆を持つ手だけが動いている。それが「コンピュータの気持ち」です。

 

コンピュータの中枢は、ひたすら高速に2進数の四則演算を行っています。

 

コンピュータは2進数の四則演算がとても得意です。私たちも頑張れば上の問題を1つ20秒くらいで解けるようになるので、1秒に3回ぐらいは2進数の足し算ができます。一方の、コンピュータの中枢であるCPUは、1秒に30億回くらい2進数の足し算を実行します。

 

そうしてできた2進数を8桁ごとに区切り、できた8桁の2進数に「a」から「z」までの文字を割り振れば「文字列」ができますし、様々な色を割り振れば、色の並びができて、「画像」が出来上がります。8桁の2進数に「音」を割り振れば「音楽」となります。

 

2進数とコンピュータの関係に興味が湧いた方は是非、さらに詳しく調べてみてください。

 

繰り返しになりますが、我々人間には10進数の計算の方が簡単ですので、問題として出題されたときには10進数に直して計算しましょう

 

上記問題を10進数にすると、$A=108$であり、$B=9$なので、和は$117$、差は$99$、積は$972$、商は$12$です。10進数であればあっという間に計算できることが分かると思います。

今回のまとめ

今回の内容は以下のとおりです。

・10で桁が上がるのが10進数、2で桁が上がるのが2進数

・すだれ算は「2で割って、余りを右に書いておき、最後に余りを下から読む」

・四則演算は10進数に変換して計算しよう

より詳しくこの範囲を勉強したい人は「N分岐演算子記数法 I-A.整数編 第1分冊: – エヌブンキエンザンシキスウホウ (MyISBN – デザインエッグ社)」を読んでみましょう。整数の範囲を勉強しましょう。

スポンサーリンク
スポンサーリンク

にほんブログ村 受験ブログへ
にほんブログ村

にほんブログ村 受験ブログ 大学受験(本人・親)へ
にほんブログ村

コメント

タイトルとURLをコピーしました