パソコンの数値表現は、2進数で行われる。2進数は2が基数[1]2倍すると桁が一つ上がる。同じように10進数であれば、10倍すると桁が一つ上がる。。
1+1はもちろん、10ですよね。
数値表現
10進数 | 2進数 |
0 | 0000 |
1 | 0001 |
2 | 0010 |
3 | 0011 |
4 | 0100 |
5 | 0101 |
6 | 0110 |
7 | 0111 |
8 | 1000 |
9 | 1001 |
10 | 1010 |
2桁目は2倍になるので重みは21。2進数の1桁目は1倍なので、重みは20。16進数の場合、16倍で桁が上がることになる。数字が足りないのでアルファベットを使う。(0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F,10…)
n桁目は2n-1で表せることが分かる。
(2A.4C)16を2進数の和で表すと?
2 | A . | 4 | C |
0010 | 1010 . | 0100 | 1100 |
〇〇25〇 | 23〇21〇 | 〇2-2〇〇 | 2-52-6〇〇 |
16進数の各桁を2進数に直して、桁が重いところだけ抜き出す(1が立ってるところに2の重みがあるということ)と、答えはこうなる。
(2A.4C)16=25+23+21+2-2+2-5+2-6
2進数からr進数に基数変換する
2進数から10進数にするには、各桁に重み分の基数をかけて全部加算すればOK。
(111011)2だったら(73)8だから10進数に直すと7×81+3×80=56
r進数から2進数に基数変換する
含まれる重みを抜いていく。もしくは2で割れるところまで割っていく。
(230.375)10を2進数に基数変換する
整数部分230について、230がなくなるまで大きい方から基数の重みを充当してみる。含められた桁に、1が入る。
128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 |
1 | 1 | 1 | 0 | 0 | 1 | 1 | 0 |
小数部分0.375についても同様。
0.5 | 0.25 | 0.125 |
0 | 1 | 1 |
(230.375)10 を2進数に直すと(11100110.011)2
脚注
↑1 | 2倍すると桁が一つ上がる。同じように10進数であれば、10倍すると桁が一つ上がる。 |