プログラム素人です。
ただのメモです。
*******************************
最近、基本情報技術者試験の問題について、ネット記事やネット動画など見ている。
面白いと思っています。
人のマクロとか見せてもらうと勉強になりますが、基本情報技術者試験のアルゴリズムとか見ると、
なるほどと思う気がします。
いろんなジャンルの問題を見ると、今まであやふやだったことが明確になるような気もしています。
====================
で、「2進数・8進数・16進数」などの変換についてのメモ。
自分たちが日常使用するのが「10進数」。
2進数・8進数・16進数などに変換が必要です。
<10進数から変換する>
10進数から変換する場合は「基数での割り算」。
2進数は基数が2。
16進数は基数が8。
10進数で表された数字を基数で割れなくなるまで割っていきます。
そのあまりを「下から」並べれば完成。※
(この計算方法の具体例は、他のネットを見て下さい。)
追記:
注意点は、最後1で割れなくなっても、割って余りを出す。
最後 商1(割り切れない)と書いたが、下記のように、商0(割り切れない)あまり1とした方がすっきりするかもしれない。
<10進数以外の変換>
2進数から16進数に変換、
16進数から2進数に変換などは、
「桁の重み」を考える。
その前に前提:
16進数は、0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,Fで進みます。
16進数を2進数で表すには、1,0で□□□□桁使います。
(8進数は3桁)
桁には重みがあり、2進数なら以下の感じです。
〇2進数を16進数に
例 11001010
16進数は4桁区切りなので
1100 と1010 に分けます。
桁の重みは、8,4,2,1なのでそれぞれ計算すると
1100は、8+4+0+0=12→C(途中の12は10進数)
1010は、8+0+2+0=10→A(途中の10は10進数)
並べて答えはCA
〇2進数を16進数に
例 11001010
16進数は4桁区切りなので
1100 と1010 に分けます。
桁の重みは、8,4,2,1なのでそれぞれ計算すると
1100は、8+4+0+0=12→C
1010は、8+0+2+0=10→A
並べて答えはCA
16進数を2進数に
例 CA
CとAを4桁区切りでそれぞれ表します。
Cは、10進数で12、
Aは、10進数で10なので、
並べて答えは11001010です。
なお、16進数を2進数にする場合、一度10進数にして、
一番最初の基数での割り算(組み立て割り算)でもいいです。