10進数がわかれば 2進数もわかる


2進数各桁の重み

4桁の二進数なら 0 0 0 1 B = 1 + 0 0 1 0 B = 2 + 0 1 0 0 B = 4 + 1 0 0 0 B = 8 です。 ================= 足し算してみると 1 1 1 1 B = 15 となります。 | | | | これは 8+4+2+1 = 15 という意味です。←ひと桁あがれば二倍になります。 ( 2進数を Bで示します。桁が多いと頭が痛いので最初は 4bit で考えましょう )

二進数の考え方を十進数の考え方と見比べる

十進数を十進数で表現 最初に、馴染みのある十進数の考え方を見てみましょう。 ご存じのとおり、12という数は、 10 + 2です。 混乱したら、その都度、十進数に戻っておさらいしましょう。 二進数を十進数で表現 では、なかなか馴染めない二進数の考え方はどうでしょう。 二進数では、12を 8 + 4 + 0 + 0のように扱いますから それぞれの桁の有無( 0 or 1 )で、桁の重みを合計すれば、十進数の値が求められます。 +--------- 1 0 0 0 B → 8 あり 8 | +------- 0 1 0 0 B → 4 あり +4 | | +----- 0 0 1 0 B → 2 なし +0 | | | +--- 0 0 0 1 B → 1 なし +0 | | | | =12 1 1 0 0 B

十進数を二進数で表現

10進数の 12を例にとります。( 15だと、どの桁がどこに対応するかわからない(笑) 2進数にするには、2で割った余りを逆順に並べます。 商 余 ( 1100B ) 12 / 2 = ( 0110B ) 6 + 12 % 2 = 0 ( 0110B ) 7 / 2 = ( 0011B ) 3 + 7 % 2 = 0 ( 0011B ) 3 / 2 = ( 0001B ) 1 + 3 % 2 = 1 ← 下ひと桁がこぼれた==余り ( 0001B ) 1 / 2 = ( 0000B ) 0 + 1 % 2 = 1 ↑2で割るたび、右へ↑ひと桁ずれて半分になり、最下位桁が外れ(こぼれ)てゆくことに注目です。 2で割る度に、元の数は半分になっていきます。 * C言語、perl、javascript等では % 記号で、割り算した結果の余りを求める演算子です。 最初に2で割って得られた余りは、「重み 1の桁」==「0 なのか 1なのか」を調べたということです。 そして、最後に得た値は、二進数の一番上の桁です。→この場合は、「重み 8の桁」==「0 なのか 8なのか」を調べたということです。 つまり、最初にこぼれるのは、一番小さな桁( 1)。最後に求まるのは、一番大きな桁ということです。 したがって、最初に求めた余りから順番に並べてはいけません。 最後に求まった値が最上位桁に、最初に求めた値が最下位桁になります。

なぜ余りを逆順に?

Q. 2進数を10進数にするのは解ったけれど、10進数を2進数に変えるのが解らない。 どうして 2で割った余りを逆の順番に並べるの? A. 2進数は、おいといて。。。10進数の計算を見直せば、すっきりします。
十進数の進数として
10進数 : 14 は、 14 / 10 = 1 ... 4 ( 1の位 ) 1 / 10 = 0 ... 1 ( 10の位 ) ↑ 並べるなら 1→4 です。

余談

デジタル機器、デジタル通信では、取り扱いの容易な2進数を用いますが、普通、人間には必要ありません。 ただ、10本の指で 0〜1023まで数えらるようになると、自慢できるかもしれません。( 10bitあるので ) 二進数を知らないとこれからの時代、生きて行けないとか コンピュータがすごいとか、デジタルってすごいとか、本気で思わないでくださいね。 あれらの機器は基本的には、0と1の違いしか区別できない代物ですから、決して崇拝しないようにしましょう(笑 計算機は、2倍する、2で割ることが得意( 速い )です。足す、引くは、まぁまぁ。 奇数の掛け算、割り算はとっても苦手です。( 時間が余分にかかる ) メモリ上(レジスタ)には、二進数( 0か1か )が格納されているので 左にずらせば二倍。右にずらせば 1/2 になるわけです。 ( ビットシフト、キャリア、ボロー:アセンブラ言語(CPUレジスタ)関連書籍参照 ) Windows なら Win+r で calc とすれば、計算機がすぐに使えるので 関数電卓として使えば、入力した10進数を2進数に変えることができますし。 プログラムの分野でも絶対必要な分野と、まったく知らなくて済む分野とがあります。 必要な分野の人たちは、それぞれ自分の関数電卓を持っていますから。暗算できなくても大丈夫です。 ( というか、検算しなくちゃ... ) 16進数? 簡単です。
十進数の進数として

関連サイト

since 04/09/25(sat)


©