1,はじめに
現在2か月の職業訓練を受けていて、その中で進数計算について学んだので、記事を書く練習も兼ねてまとめてみたいと思います。
教員時代、算数のちょっとした発展課題で4進数の計算問題をだしたことがあったのですが、自分も勉強不足で子供と一緒に悪戦苦闘したのは良い思い出です。w
2,2進数とは
そもそもPCは電気で動いているので、電気が通っている
・通っていない
の2つで信号を区別しているので、0と1の二つが使われています。
0と1のみで考えるので、0→1→10というように位が変わります。
ちなみに、人間は指が10本だから10進数という説もあるそうな。
指で計算している小学生をたくさん見てきたから確かにー!
3,16進数とは
16進数はbyte単位での計算と相性が良い進数で、
0→1→2→・・・・9→A→B→C→D→E→F→ 10
と16個の数字で位が変わります。
4,進数変換
2進数 ⇒ 10進数
2進数の「1011」を10進数に変換します。
1011(2進数)
= $2^3 * 1 +2^2 * 0 + 2^1 * 1 + 2^0 * 1 $
= $8 * 1 + 4 * 0 + 2 * 1 + 1 * 1 $
= $8+2+1 $
= $11$(10進数)
各桁に2の重みをかけて足すだけですね。
10進数 ⇒ 2進数
9(10進数)
ひたすた2で割り続けます。
$11 / 2 = 5...1$
$ 5 / 2 = 2...1$
$ 2 / 2 = 1...0$
$ 1/2=0...1$
余りは下から読んでいきます。
1011(2進数)
※16進数も同じ方法ですので簡単に、、、(省略してすみません。)
アルファベット部分は自分で数えるしかないですね。
16進数→10進数
各桁に16の重みをかけて、足す。
10進数→16進数
ひたすら16で割って、その余りを下から読んでいく。
2進数 ⇒ 16進数
基本的には2進数→10進数→16進数で考えていきます。
1011→11→B
では桁が大きいもので考えてみましょう。
11101011(2進数)
まず、4つずつに分けます。
1110 1011
あとはそれぞれ→10進数→16進数と変換します。
14 11
E B
→EB(16進数)
補足
- 16進数は10進数と区別するために先頭に「0x」をつけることもあります。
例)0xEB - 2進数は場合によっては8桁のまとまりで書くこともあります。(サーバー系の方が仰っていました。)
例)1011→0001011 - 指で2進数を数える方法が、意外と便利ですね。片手で31まで数えられます。
グーの状態で親指から順番に、指を立てている→1、指をおろしている→0、で順番に数えます。
言葉で説明が難しいのです。Youtubeで調べるとたくさん出てきますので、あとは自分で…(悪しからず)