2進数とその各桁の重み
2進法(2進位取り記法)
次のように、例えば1と0という2つの記号だけで数を表現する方法(記数法)を2進法(2進位取り記法)と呼ぶ。
0, 1, 10, 11, 100, 101, 110, 111, 1000, 1001, 1010, 1011, 1100, 1101, 1110, 1111, 10000, 10001, 10010, 10011, 10100, 10101, 10110, 10111, 11000, 11001, 11010, 11011, 11100, 11101, 11110, 11111, 100000, ...(,は区切りを、...は省略を意味する)
このように2進法を用いて表した数を2進数(binary number)と呼ぶ。10進法では1桁に0から9までの十の値を持つことができるが、2進法では1つの桁に0か1かの二つの値しか持つことができない。
10進法では、9の次が10、99の次が100、999の次が1000、9999の次が10000というふうにすべての桁が9の値で満たされるごとに桁数が増え、位が1桁上がってゆくが、2進法では、1の次が10、11の次が100、111の次が1000、1111の次が10000...というふうにすべての桁が1の値で満たされるごとに桁数が増え、位が1桁上がってゆく。このようにして桁数を増やしてゆく表記方法を位取り記数法と呼ぶ。
10進法の場合:
2進法の場合:
n進数のnとは、その数の1桁(1つの位)が持つことができる値とその値を表す記号の数を意味しており、これを基数と呼ぶ。数学では底とも言う。10進数では10、2進数では2が、それぞれその基数(または底)である。
2進数が10進数ではどの数に対応しているか、つまり2進数の数が10進数ではどの数と等しい関係にあるかを表にしてみた。
| 2進数 | 10進数 |
|---|---|
| 0 | 0 |
| 1 | 1 |
| 10 | 2 |
| 11 | 3 |
| 100 | 4 |
| 101 | 5 |
| 110 | 6 |
| 111 | 7 |
| 1000 | 8 |
| 1001 | 9 |
| 1010 | 10 |
| 1011 | 11 |
| 1100 | 12 |
| 1101 | 13 |
| 1110 | 14 |
| 1111 | 15 |
| 10000 | 16 |
| 10001 | 17 |
| 10010 | 18 |
| 10011 | 19 |
| 10100 | 20 |
| 10101 | 21 |
| 10110 | 22 |
| 10111 | 23 |
| 11000 | 24 |
| 11001 | 25 |
| 11010 | 26 |
| 11011 | 27 |
| 11100 | 28 |
| 11101 | 29 |
| 11110 | 30 |
| 11111 | 31 |
| 100000 | 32 |
| 100001 | 33 |
| 100010 | 34 |
| 100011 | 35 |
| 100100 | 36 |
| 100101 | 37 |
| 100110 | 38 |
| 100111 | 39 |
| 101000 | 40 |
| 101001 | 41 |
| 101010 | 42 |
| 101011 | 43 |
| 101100 | 44 |
| 101101 | 45 |
| 101110 | 46 |
| 101111 | 47 |
| 110000 | 48 |
| 110001 | 49 |
| 110010 | 50 |
| 110011 | 51 |
| 110100 | 52 |
| 110101 | 53 |
| 110110 | 54 |
| 110111 | 55 |
| 111000 | 56 |
| 111001 | 57 |
| 111010 | 58 |
| 111011 | 59 |
| 111100 | 60 |
| 111101 | 61 |
| 111110 | 62 |
| 111111 | 63 |
| 1000000 | 64 |
| 1000001 | 65 |
| 1000010 | 66 |
| 1000011 | 67 |
| 1000100 | 68 |
| 1000101 | 69 |
| 1000110 | 70 |
| 1000111 | 71 |
| 1001000 | 72 |
| 1001001 | 73 |
| 1001010 | 74 |
| 1001011 | 75 |
| 1001100 | 76 |
| 1001101 | 77 |
| 1001110 | 78 |
| 1001111 | 79 |
| 1010000 | 80 |
| 1010001 | 81 |
| 1010010 | 82 |
| 1010011 | 83 |
| 1010100 | 84 |
| 1010101 | 85 |
| 1010110 | 86 |
| 1010111 | 87 |
| 1011000 | 88 |
| 1011001 | 89 |
| 1011010 | 90 |
| 1011011 | 91 |
| 1011100 | 92 |
| 1011101 | 93 |
| 1011110 | 94 |
| 1011111 | 95 |
| 1100000 | 96 |
| 1100001 | 97 |
| 1100010 | 98 |
| 1100011 | 99 |
| 1100100 | 100 |
| 1100101 | 101 |
| 1100110 | 102 |
| 1100111 | 103 |
| 1101000 | 104 |
| 1101001 | 105 |
| 1101010 | 106 |
| 1101011 | 107 |
| 1101100 | 108 |
| 1101101 | 109 |
| 1101110 | 110 |
| 1101111 | 111 |
| 1110000 | 112 |
| 1110001 | 113 |
| 1110010 | 114 |
| 1110011 | 115 |
| 1110100 | 116 |
| 1110101 | 117 |
| 1110110 | 118 |
| 1110111 | 119 |
| 1111000 | 120 |
| 1111001 | 121 |
| 1111010 | 122 |
| 1111011 | 123 |
| 1111100 | 124 |
| 1111101 | 125 |
| 1111110 | 126 |
| 1111111 | 127 |
| 10000000 | 128 |
10進数の正の整数は、計算機やコンピュータの中では、上の表のように対応する2進数に変換されて扱われる。2進数での桁上がりは10進数では2, 4, 8, 16, 32, 64, 128のところで生じていることが、この表から分かる。これは直前の値のちょうど2倍になる数が並んだ等比数列である。
2進法におけるそれぞれの桁の重み(位)
n進数と10進数の対応関係を表すために桁の重みという概念がある。桁の重みは数学ではplace value(桁値または桁価)と呼ばれている。桁の重みは10進数で表される。桁の重みは次のように定義することができる。Wはある桁の重み、nはn進数のnを意味する基数、xはその桁が右端から何桁目かを表す自然数。指数においてxから1を引くのは、桁の数は実際には0から数えるからである。
このことは下のような表にしてみると直観的に分かりやすい。
| 各桁 | 1 | 0 | 0 | 0 | 0 | 0 |
|---|---|---|---|---|---|---|
| 重み | \( 2^5 \) | \( 2^4 \) | \( 2^3 \) | \( 2^2 \) | \( 2^1 \) | \( 2^0 \) |
| 32 | 16 | 8 | 4 | 2 | 1 |
\( 2^0 = 1 \)で、\( 2^1 = 2 \)であることに要注意。右肩の上に小さな数字(指数)の乗った指数表記によって表される累乗は、本当は次のような数式を意味しているので、こうなる。要するに最初の1が省略されているわけである。乗法では1は他の数を変化させないので、この1を乗法の恒等元、すなわち単位元と呼ぶ。
例えば2進数の整数1010110における下線部の桁は、右端から左へ数えて5桁目に位置しているので、2の「5マイナス1乗」すなわち2の4乗、 \begin{align*} 2^{5-1} &= 2^4 \\ &= 2 \times 2 \times 2 \times 2 \\ &= 4 \times 4 \\ &= 16 \end{align*} と計算することができ、この桁は10進数として見ると16倍の重みを持っていると言うことができる。つまり、1010110(下線部の1)は2進数では10000のことであるが、10進数では\( 1 \times 16 = 16 \)に等しい。実際、2進数と10進数の対応表を見ると、2進数の10000が10進数では16に対応しているのが分かる。これは2進数の10000が10進数では16であることを示している。
2進数の整数10110011の下線部の桁は右端から左へ数えて7桁目にあるので、2の「7マイナス1乗」すなわち2の6乗、 \begin{align*} 2^{7-1} &= 2^6 \\ &= 2 \times 2 \times 2 \times 2 \times 2 \times 2 \\ &= 4 \times 4 \times 4 \\ &= 16 \times 4 \\ &= 10 \times 4 + 6 \times 4 \\ &= 40 + 24 \\ & = 40 + 20 + 4 \\ &= 60 + 4 \\ &= 64 \end{align*} と計算することができ、この桁は64倍の重みを持っていることになる。つまり、10110011(下線部の0)は10進数で表すと\( 0 \times 64 = 0 \)を意味している。その位の値が0である場合、0を何倍しても0であることに変わりないので、どの位に位置していようとも0になる。ちなみに、実数の掛け算における0はすべての数を0へと吸収してしまうので吸収元と呼ばれている。
2進数の整数11101の下線部の1は右端から左へ数えて3桁目にあるので、2の「3マイナス1乗」すなわち2の2乗、 \begin{align*} 2^{3-1} &= 2^2 \\ &= 2 \times 2 \\ &= 4 \end{align*} となり、この桁は4倍の重みを持っていることになる。つまり、この11101(下線部の1)は10進数では\( 1 \times 4 = 4 \)を意味している。一般に、2進数において右端から左へ数えてn桁目の数は\(2^{n-1}\)倍の桁の重みまたは位の重みを持っていると考えることができる。
2進数における負の整数での桁の重み
英語では負数をネガティブ・ナンバーと呼び、引き算の「引く」をマイナスと呼ぶので、ここではその呼び方に従っている。
例えばネガティブを意味する符号-が付けられた負の整数-11101の下線部の1は右端から左へ数えて4桁目にあるので、 \begin{align*} -\left(2^{4-1}\right) &= -\left(2^3\right) \\ &= -\left(2 \times 2 \times 2\right) \\ &= -\left(4 \times 2\right) \\ &= -8 \end{align*} となり、-8倍の重みを持っていることが分かる。つまり、-11101(下線部の1)は10進数では\( 1 \times -8 = -8 \)を意味している。2進数-101110の下線部の0は右端から左へ5桁目に位置しているので、 \begin{align*} -\left(2^{5-1}\right) &= -\left(2^4\right) \\ &= -\left(2 \times 2 \times 2 \times 2\right) \\ &= -\left(4 \times 4\right) \\ &= -16 \end{align*} となり、この桁は-16倍の重みを持っていることになる。つまり、-101110の下線部の0は10進数では\( 0 \times -16 = -0 = 0 \)を意味している。-0は0と等しいので0になる。
負(ネガティブ)の数の重みは\( -\left(2^{n-1}\right) \)であって\( \left(-2\right)^{n-1} \)ではないことに要注意。負(ネガティブ)の数でも正(ポジティブ)の数でも各桁の重みそのものが\( 2^{n-1} \)になる点は同じで、負の整数の場合には計算結果にネガティブ符号を後からくっつければよいだけである。
2進数における小数点以下での桁の重み
2進数の小数点以下の桁の重みはどうなるのだろうか。例えば、2進数11.00101の下線部の1は小数点から右へ数えて5桁目にあるので、 \begin{align*} 2^{-5} &= \dfrac{1}{2^5} \\ &= \dfrac{1}{2 \times 2 \times 2 \times 2 \times 2} \\ &= \dfrac{1}{4 \times 4 \times 2} \\ &= \dfrac{1}{4 \times 8} \\ &= \dfrac{1}{32} \\ \end{align*} となり、\( \dfrac{1}{32}倍 \)の重みを持っていることになる。つまり、この2進数11.00101の下線部の1は: \begin{align*} 1 \times \dfrac{1}{32} &= \dfrac{1 \times 1}{1 \times 32} \\ &= \dfrac{1}{32} \end{align*} を意味している。2進数0.1100110011の下線部の1は小数点から右へ数えて9桁目にあるので、 \begin{align*} 2^{-9} &= \dfrac{1}{2^9} \\ &= \dfrac{1}{2 \times 2 \times 2 \times 2 \times 2 \times 2 \times 2 \times 2 \times 2} \\ &= \dfrac{1}{512} \end{align*} となり、\( \dfrac{1}{512}倍 \)の重みを持っていることになる。つまり、この2進数0.1100110011の下線部の1は: \begin{align*} 1 \times \dfrac{1}{512} &= \dfrac{1 \times 1}{1 \times 512} \\ &= \dfrac{1}{512} \end{align*} を意味している。2の-n乗というのは2のn乗分の1のことを意味していて、2進数における小数点以下の各桁の重みは一般に、 \[2^{-n} = \dfrac{1}{2^n} \] という式によって表すことができる。
桁の重みは、その桁が右端から左へ何桁目であるかを数え、2進数なら2をその序数(~番目)の回数だけ倍にしてやることで求められる。小数点以下の場合には、小数点から右に何桁目であるかを数え、そのn桁目の回数だけ2進数の2を倍にすることで、その桁が持つ重みを求めることができる。
| 各桁 | -(1 | 1 | 1 | 1 | 1 | 1) |
|---|---|---|---|---|---|---|
| 重み | \( -(2^5) \) | \( -(2^4) \) | \( -(2^3) \) | \( -(2^2) \) | \( -(2^1) \) | \( -(2^0) \) |
| -32 | -16 | -8 | -4 | -2 | -1 |
| 各桁 | 1. | 1 | 1 | 1 | 1 | 1 |
|---|---|---|---|---|---|---|
| 重み | \( 2^{-0} \) | \( 2^{-1} \) | \( 2^{-2} \) | \( 2^{-3} \) | \( 2^{-4} \) | \( 2^{-5} \) |
| \( \dfrac{1}{2^0} \) | \( \dfrac{1}{2^1} \) | \( \dfrac{1}{2^2} \) | \( \dfrac{1}{2^3} \) | \( \dfrac{1}{2^4} \) | \( \dfrac{1}{2^5} \) | |
| \( \dfrac{1}{1} \) | \( \dfrac{1}{2} \) | \( \dfrac{1}{4} \) | \( \dfrac{1}{8} \) | \( \dfrac{1}{16} \) | \( \dfrac{1}{32} \) | |
| \( 0.5^0 \) | \( 0.5^1 \) | \( 0.5^2 \) | \( 0.5^3 \) | \( 0.5^4 \) | \( 0.5^5 \) | |
| 1.0 | 0.5 | 0.25 | 0.125 | 0.0625 | 0.03125 |
小数点以下についても一目瞭然。小数点以上(小数点の左側)は右端と同じ意味であるが、あえて負の指数表記か分数か小数点付きで表してある。
\[ 2^{-0} = 2^0 = \dfrac{1}{2^0} = \dfrac{1}{1} = 1.0 = 1 \] 等式で結びつけてあるこれらの数は、表記が異なるだけで、その値としてはすべて等しい。
負(ネガティブ)の指数を持つ累乗は次のような数式を表している。要するに、分子を1、分母を\( 2^n \)とする分数、あるいは\( 0.5^n \)の小数を表している。 \begin{align*} 2^{-0} &= \frac{1}{2^0} = \dfrac{1}{1} \\ &= 0.5^0 = 1.0 \\ 2^{-1} &= \frac{1}{2^1} = \dfrac{1}{1 \times 2} \\ &= 0.5^1 = 0.5 \\ 2^{-2} &= \frac{1}{2^2} = \dfrac{1}{1 \times 2 \times 2} \\ &= 0.5^2 = 0.25 \\ 2^{-3} &= \frac{1}{2^3} = \dfrac{1}{1 \times 2 \times 2 \times 2} \\ &= 0.5^3 = 0.125 \\ 2^{-4} &= \frac{1}{2^4} = \dfrac{1}{1 \times 2 \times 2 \times 2 \times 2} \\ &= 0.5^4 = 0.0625 \\ 2^{-5} &= \frac{1}{2^5} = \dfrac{1}{1 \times 2 \times 2 \times 2 \times 2 \times 2} \\ &= 0.5^5 = 0.03125 \end{align*}
それぞれの桁が持つ重みという概念は、それぞれの桁が持つ単位を意味する。それぞれの桁として記された数をその重みのぶんだけ掛ける(n倍にする)ことによってその各桁(位)の正しい値を弾き出すことができる。
まとめ
- 2進数の正(ポジティブ)の整数の各桁の重みは(nは右端から左へ数えてn桁目):
- \[ = 2^{n-1} \]
- 2進数の負(ネガティブ)の整数の各行の重みは(nは右端から左へ数えてn桁目):
- \[ = -\left(2^{n-1}\right) \]
- 2進数の正(ポジティブ)の小数点以下の各桁の重みは(nは小数点から数えてn桁目):
- \[ = 2^{-n} = \dfrac{1}{2^n} \]
- 2進数の負(ネガティブ)の小数点以下の各桁の重みは(nは小数点から数えてn桁目):
- \[ = -\left(2^{-n}\right) = -\left( \dfrac{1}{2^n}\right) \]
コメント
コメントを投稿