目次:
【第1回】はじめに:OSの基本動作とファイルシステム 第1章
第2章
--パスワード
--キーボード操作
--日本語入力
第4章
第5章
--十進法と二進法
第6章
|
十進法と二進法
【本節の目的】
PCの世界で避けては通れない二進法について復習することです。 (今後も、二進法に関わる章を時々設けて行く予定です。) 十種類の文字(数字)で数を表わす世界数字を書けるようになった子どもの時のことを思いだしてみましょう。 三個物があると、何の疑いもなく「3」と書き、5個あると「5」と書きました。 ところが、十個物があると「じゅう」と呼ぶ(数える)ことはできましたが、 自然に「10」と書くことができたでしょうか? 我々は、通常0?9までの十種類の文字(いわゆる数字)だけで数を表現します。 この節では、どのようにして十種類の文字(数字)だけで、 十以上の数を表現するか(しているか)について良く考えてみましょう。 この節では、数を表わす文字(数字)は、0~9までの十種類しか無いとします。 (そのような世界に住んでいると考えて下さい。) ![]() 以下のように9までは、問題なく数を表現できます。 ![]() ![]() ところが、文字(数字)は、十種類しかありませんので、9を超えると、 表現すべき文字が無くなってしまいます。 ![]() (例えば「十(じゅう)」のように)9+1を表わす文字(数字)を作れば良いのですが、 十種類の文字(数字)で表現することにしていますので、 それ以外の文字を使うのはルール違反です。
そこで、9より1大きい数(これは、利用できる文字の数と同じです)を一塊(ひとかたまり)として
「10」(「いち・れい」と読む)と、
表わすことにします。 ![]()
この「10」は、9より1大きい数を表わす塊が1つで、
0から9までの数を表わすことのできる部分が
0(何もない)と解釈することができます。 ![]() 更に「10」の数 (図の袋の数)が9より多くなったら、 「10」が「10」個あることを表わす「100」(「いち・れい・れい」とよむ) を導入することで(図では箱で表わしている)、 それ以上の数も数えられるようになります。 ![]() ![]()
このように、0から9までの十種類の文字(数字)で、
数を数える方法を「十進法」と呼びます。 我々の生活では、十進数を用いることが多いので、十進数には、 各桁(塊)に名前がついています。先の図でいうと、「袋」は「十(じゅう)」と、 「箱」は「百(ひゃく)」と呼ばれます(知っての通りです)。 ですから、十進の世界で表現した「1(箱)3(袋)6(個)」は、 「百三十六」と呼びます。 十種類より少ない種類の文字(数字)で数を表わす世界では?
それでは、もし、0?3までの四種類の文字(数字)しかない世界では、
どのように数を数えるのでしょうか?
![]()
0から9までの十種類の数字がある世界(十進法)と同じ考え方で、
数えることができます。(四進法) ![]() ![]() ![]() 二進法同様にして、0と1の二種類の文字(数字)しかない世界でも、 数を数えることができます。 ![]() ただし、基数が二ですので、袋や箱はもっと小さいですよ。(二進法) ![]() ![]() ![]() 十種類より多い種類の文字(数字)で数を表わす世界では?時間で使う十二進法、六十進法時間は、十二進法や六十進法が使われますね。ただし、この場合、 数字は通常の十進法の0から9までが使われますので、少し複雑ですね。 例えば、59分+1分が1時間となり、分を1桁で表わせなくなってます。 もし、0から59までをすべて1文字(1桁)で表現できたら、時間の計算は、 もっとスッキリするでしょうね。 十六進法
PCの世界では、十六進法が使われる場合があります。 0から9までは、通常の数字を使い、それ以上は、aからfを用います。 十進の「10」が十六進では「a」と表わされ、 十進の「14」が十六進では「e」と表わされます。 ![]() ところで、「累乗」って憶えてますか?累乗(るいじょう)というのは、 ある一つの数同士を繰り返し掛け合わせるということ、 あるいはそれによって得られる数のことです。
An は、Aを n 回掛け合わせものと定義し、
これを Aの n 乗(じょう)と呼びます。 A2 は、A × A を表わしますが、 A1 (Aの1乗) は、A そのものを表わしています。 それでは、A0 (Aの0乗) は、何を表わすでしょう? これは、1(いち) になります。Aが0を除くどんな数(正確には実数)であっても、 必ず 1 になります。これは、そのように定義してあると思ってもらっても結構です。 もう一度書きますが、 Aの値に関係なく(A=0は除く)、 A0 = 1 です。 二進法と十進法の相互変換 (基数変換)N進法の世界で生きている人が、そのN進法のみで生活できるなら、 何の問題もないのですが、お互いの変換が必要になることがあります。 我々は、十進の生活に慣れていますので、 PCの得意な二進法や十六進法で表わされた数は、ピンときませんし、 逆に、我々の考え得ている十進法の数を、 二進法や十六進法で表わさなければならないことがあります。 ここで、これまでは、N進法しか扱わないそれぞれの世界での中だけで、 考えていましたので問題は無かったのですが、 複数の基数の数を同時にあつかうとなると注意が必要です。 単に「101」と書くと、十進の「101」(いわゆる「百一」)なのか、 「二進」の「101」(十進で表わすと「五」)なのか区別がつきません。 そこで、今後は、基数を右下に括弧で書くことにします。 例えば、十進の「101」は「101(十)」と、 二進の「101」は「101(二)」と表わすようにします。 また、何も書いてなかったら十進法の記述だと解釈して下さい。 先に二進法の説明で使った下図を例にして、その変換方法を考えてみましょう。 ![]() ◎ 十進法で表わされた数を、二進法で表わすには、 以下のようにすれば良いことが分ります。 (上図の矢印方向の変換です。)
![]() ![]() ![]()
(例 1)
具体的な例として、
◎ 二進法で表わされた数を、十進法で表わすには、 以下のようにすれば良いことが分ります。 (上図の矢印と逆方向の変換です。)
![]()
(例 2)
具体的な例として、(例 1)の結果を使い、
【演習 11】
自分の学生番号の下2桁を十進2桁だとして、二進表示に変換しなさい。
ただし、2桁の先頭が0の人(例えば、051-M8905の人)は、
学生番号の下3桁を十進3桁だとして
(例えば、051-M8905の人は、905)、
二進表示に変換しなさい。 (回答例)
054-T3298 総情 先太
1. 98 (十) ==> 1101110 (二)
(ただし、上の回答例の計算は、わざと間違っていますので、
98 の人もちゃんと計算して下さい。)
|