2進数など備忘録

プログラム素人です。
ただのメモです。
*******************************


最近、基本情報技術者試験の問題について、ネット記事やネット動画など見ている。
面白いと思っています。

人のマクロとか見せてもらうと勉強になりますが、基本情報技術者試験アルゴリズムとか見ると、
なるほどと思う気がします。
いろんなジャンルの問題を見ると、今まであやふやだったことが明確になるような気もしています。


====================
で、「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進数にして、
一番最初の基数での割り算(組み立て割り算)でもいいです。