2進数(2進法)とは

2進数とは、0と1だけをつかって数を表す方法です。0と1だけでどうやって数を表すのでしょうか。わかりやすくいうと、2つの塊があれば、繰り上げるという数え方です。10進数の場合は、1の位、10の位、100の位と桁が増えるごとに10倍増えていきますが、2進数では、1の位の次は2の位となり、それから4の位、8の位、16の位と桁が増えると2倍に増えていきます。

2進数で表されている数をかっこでくくって末尾に2を付けて表す方法があります。

たとえば、7を2進数で表すと111なのですが、これだと10進数の百十一(ひゃくじゅういち)と混乱してしまうため、(111)2と表します。10進数の百十一(ひゃくじゅういち)を書く場合は、10進数であることを強調するために(111)10と書きます。

この書き方で1から10までを10進数と2進数で書き並べてみますと

10進数 2進数
1=(1)10 (1)2
2=(2)10 (10)2
3=(3)10 (11)2
4=(4)10 (100)2
5=(5)10 (101)2
6=(6)10 (110)2
7=(7)10 (111)2
8=(8)10 (1000)2
9=(9)10 (1001)2
10=(10)10 (1010)2

となります。

同じような考え方で3つを一塊にしたり、4つを一塊にして数えていくこともできます。それらは、それぞれ3進数、4進数と呼びます。コンピュータでは16を一塊にして数える16進数もよく使われます。数字が10種類の文字(0,1,2,3,4,5,6,7,8,9)しかないので、アルファベットのA、B、C、D、E、Fを追加して記述します。

 

2進数は便利

3進数、4進数などもありますが、2進数ほど使われることはありません。2進数はシンプルがゆえによく使われるのです。ちなみに2進数を2桁ごとに区切ると4進数になるので、4進数は2進数の仲間ともいえます。16進数が使われるのは、16進数が2進数の仲間だからです。

2進数はどうシンプルなのでしょうか。それはそれは、ON(オン)とOFF(オフ)、HIGHT(ハイ)とLOW(ロー)、表と裏、有と無、白と黒、明と暗、陰と陽など、2値のものがあればそれを0と1とで表すと数が作れるからです。

特に、コンピュータでは、電圧の大きさによって2つの状態を作り出せますので、コンピュータで数値を扱うためには2進数は便利なのです。桁数は増えていきますが、一つの桁の状態が2つしかないので、足し算や掛け算の回路もシンプルになります。

普通、私達が使っているのは10進数です。人間の指の数が10本だったので10進数を使うようになったと言われています。指を折っていくことで10まで数えることができるからですね。しかし、この方法は10まで数える場合には非常に便利ですが、大きな数を数える時には適していません。

1を数えるときに、右手の親指を曲げても、左手の親指を曲げても同じ1ですが、この2つは区別できますね。このように指の曲げている数だけでなく、どの指を曲げているかを区別することでもっとたくさんの数を数えることができます。10本の指の曲げ方のパターンはあきらかに10通り以上あります。それでは、何通りあるでしょうか?

10本の指を曲げるか曲げないかでパターンを作る方法は、1024通りあります。10本の指で1024まで数えることができるのです。1024とく聞きますね。そうです、メモリの大きさなどで使うキロバイト(KB)のキロのことです。

1024が1000とだいたい近いので、コンピュータでは1024をキロという単位で表すこともよくあります。

 

2進数で小数を表す

2進数でも小数点をつかって整数以外の実数を表すことができます。

例えば

(0.1)2=(0.5)10
(0.01)2=(0.25)10
(0.11)2=(0.75)10

こんなふうになります。

分数はどうなるでしょうか?

1/3は10進数では、0.333・・・となりますね。

1/3は、3進数だと、(0.1)3と有限小数表示になりますが、2進数では10進数と同様に無限小数の表示になります。

求め方は、次々と2倍し、1より大きくなれば1(そして1を引く),小さいときには0とし丁度1になった場合にはそこで終わり(有限小数)となります。基本はこのやり方で何桁でも掘り下げることができますが、やりにくいです。

そこで、一気に例えば210を(1/3)10に掛け小数点の位置を10桁ずらします。すると、(1024/3)10になりますから、この整数部分を2進数で表して、あとで小数点を10桁左にずらすと小数表示が完成するというわけです。

(1024/3)10=(341.333…)10

なので、341を2進数表示したら1/3の2進数表示の最初の10桁がわかります。

(341)10=(0101010101)2ですから(10桁になるようにあえて先頭に0を追加しています)、

(1/3)10=(0.0101010101…)2

となります。2進数で(1/3)は「01」の繰り返しになるわけですね。

 

1進数(1進法)とは

2進数については、学校やコンピュータの勉強時にもでてきますので、広く知れ渡っていますが、1進数についてはどうでしょうか。

10進数や2進数のように1進数を考えることはできません。1つあれば桁があがると言う状態を考えてみてください。

1を数えようとした瞬間、繰り上がりが発生します、桁があがっても、その桁が1になっているのでさらに桁が上がります。桁があがった瞬間にさらに次の桁に桁上りするわけですから、この桁あがりの状態は永遠に終わりません。つまり、1進数で1を表すことはできません。

なので、1進数というのはありません

しかし、0をつかわず、1だけをつかって数を表す方法はあります。それを1進数という場合があります。

1だけをつかって数を表す方法です。

たとえば、

10進数 1進数 説明
1=(1)10 (1)1 1を1個ならべて1を表す。
2=(2)10 (11)1 1を2個ならべて2を表す。
3=(3)10 (111)1 1を3個ならべて3を表す。
4=(4)10 (1111)1 1を4個ならべて4を表す。
5=(5)10 (11111)1 1を5個ならべて5を表す。
6=(6)10 (111111)1 1を6個ならべて6を表す。
7=(7)10 (1111111)1 1を7個ならべて7を表す。
8=(8)10 (11111111)1 1を8個ならべて8を表す。

 

こんな感じになります。0を使わないので使用する文字(数字)は1だけです。

位は、すべて1の位です。つまり、どの位も1の重みしかありません。たとえば、(111)1は1の位が3個あるので3を表しているというわけですね。

これはこれで、数を表すことができますが、なにか便利がことがあるかというと、私はその便利だと思うことを知りません。あえて、文字が1種類だけで済むということでしょうか。n進数を体系的に考える時になにか便利がことがあるかもしれません。

ちなみに、この1進数は小数点以下の位も重みは全て1になりますから、表すことができるのは自然数だけになります。たとえば、(1.11)1と1進数の小数の値を考えると、これは(3)10になります。(11.1)1も(3)10となります。1進数で小数点は意味がありません

 

[ad#foot]