離散数学とは、ざっくり言うと離散的な(飛び飛びの)数字を扱う数学のことっす。その代表例として2 進数があるっす。
飛び飛びの数字ってどういうこと?
私たちが普段使っている数字あるっすよね?
1,2,3,4,5・・・ってやつ?
それは連続している数字で人間が理解しやすい形なんす。しかしコンピューターは0か1の2通りしか判断できないんすよ。なので、コンピューターの処理を理解するためには2進数という考え方を知っておく必要があるんす。
目標 | ・基数の基本的な考え方を理解する。 ・集合の基本的な考え方を理解する。 |
説明 | ・コンピュータで扱う数値やデータに関する基礎的な理論を知るため,2 進数に関する表現と演算,集合と論理演算の基本的な考え方を理解する。 |
目次 非表示
基数とは
基数とは、桁が繰り上がるところをいいます。私たち人間は一般に10のところで桁が繰り上がる数字を使っていますが、これを10進数といいます。つまり、10進数の基数は「10」ということです。
一方、コンピューターは「0」か「1」の2通りしか判断できません。そのため、コンピューターの処理では「0」と「1」の2つの数字を使って表す2進数が用いられます。2進数では2のところで桁が繰り上がるため、2進数の基数は「2」ということになります。
例えば、10進数の「11」は、2進数では「1011」となります。
2進数では「1011」を「せんじゅういち」ではなく「イチゼロイチイチ」と読みます。
でもこれじゃあ、2進数の「1011」(イチゼロイチイチ)なのか、10進数の「1011」(せんじゅういち)なのかわからないよ。
そこで、基数が何かを表すために、10進数の表現は(1011)10 、2進数の表現 は(1011)2 というように書きます。
10進数 | 2進数 |
---|---|
0 | 0 |
1 | 1 |
2 | 10 |
3 | 11 |
4 | 100 |
5 | 101 |
6 | 110 |
7 | 111 |
8 | 1000 |
9 | 1001 |
10進数 | 2進数 |
---|---|
10 | 1010 |
11 | 1011 |
12 | 1100 |
13 | 1101 |
14 | 1110 |
15 | 1111 |
16 | 10000 |
17 | 10001 |
18 | 10010 |
19 | 10011 |
上の表を見て気づいた人もいるかもしれないっすけど、2進数では「2」以上の数字は登場しないっす。
基数変換
10進数を2進数へ変換したり、2進数を10進数へ変換したり、このようなn進数からm進数への変換を基数変換といいます。
10進数から2進数への基数変換
10進数から2進数への基数変換については2つの方法を紹介します。参考書などでよく紹介されるのは「方法②」ですが、個人的には「方法①」がおすすめです。
この方法では「それぞれの桁ごとに2のn乗が何個あるのか?」ということを考えます(2進数の場合は0個or1個)。
例えば(11)10 の場合は、23 が1個、22 が0個、21 が1個、20 が1個あります。これを並べると2進数の(1011)2 となります。
2のn乗 | 10進数の数字 |
---|---|
20 | 1 |
21 | 2 |
22 | 4 |
23 | 8 |
24 | 16 |
25 | 32 |
26 | 64 |
27 | 128 |
28 | 256 |
2倍になっていくだけなので大丈夫だと思いますが、2の8乗(=256)まではすぐに思い浮かぶくらいにはなっておいてほしいところです。
2の0乗は「1」になるという点に注意してください。
この方法は、10進数の数を商(答え)がゼロになるまで2で割っていって、余りを逆に並べるという方法です。
2進数から10進数への基数変換
先に説明した方法①と同様に考えていけばOKです。すなわち「それぞれの桁ごとに2のn乗が何個あるのか?」ということを考えます。
一番右の桁は2の0乗になる点に注意しましょう。
2進数同士の加算・減算
2進数同士の加算
(1010)2と(11)2の加算を行う例で考えていきます。
このとき、「1+1」は2ではなく「10(イチゼロ)」になる、つまり桁が一つ繰り上がるという点に注意です。
2進数同士の減算
(1010)2から(11)2 を減算する例で考えていきます。同じ桁で「0-1」となる場合は、上の位から桁を借りてきます。この考え方は10進数と同じなのですが、借りてくる数字は「10(イチゼロ)」(10進数の2)であるということに注意が必要です。
赤字の数字はわかりやすいように10進数で表しています。つまり「2」は2進数の「10(イチゼロ)」を意味します。
ちょっと難しいっすね。このやり方がしんどい人は、いったん10進数に変換してから加算・減算をして、その答えを再び2進数に変換するという方法でもいいっすよ。
確認○×問題
10進数 155 を2進数で表したものは 10011011 である。
(出典:令和2年度秋期分 問62一部改変)
答え:〇
「それぞれの桁ごとに2のn乗が何個あるのか?」を考えます(2進数の場合は0個or1個)。そうすると、27 が1個、24 が1個、23 が1個、21 が1個、20 が1個あります。これを並べると(10011011)2となります。
28 は256となり、155をオーバーしてしまうので、27 (=128)からスタートとします。
残りは27(=155-128)なので、次に24 (=16)がきます(25 だと32となり、27をオーバーしてしまうため)。
残りは11(=27-16)なので、次に23 (=8)がきます。
残りは3(=11-8)なので、次に21 (=2)がきます。
残りは1(=3-2)なので、次に20 (=1)がきます。
別の解き方として、10進数の数を商(答え)がゼロになるまで2で割っていって、余りを逆に並べるという方法もあります。
二つの2進数 01011010 と 01101011 を加算して得られる2進数は 11000101 である。ここで、2進数は値が正の8ビットで表現するものとする。
(出典:平成29年度春期分 問72一部改変)
答え:〇
「1+1」は2ではなく「10(イチゼロ)」になる、つまり桁が一つ繰り上がるという点に注意しましょう。
2進数 10110 を3倍したものは 1000010 である。
(出典:平成21年度春期分 問64一部改変)
答え:〇
まず、2進数 10110 を10進数に変換します。24 が1個、22 が1個、21 が1個あるので、合計(22)10 となり、これを3倍すると(66)10 となります。
(66)10 を再び2進数へ変換すると、(1000010 )2 となります。