Web教材一覧ハードウェアとソフトウェア

データの内部表現(数値)

より高度な内容-小数の基数変換、補数、浮動小数点など-に関しては、「データの内部表現(数値・上級) 」(hs-naibu-suuchi-x)を参照してください。

キーワード

10進数、2進数、16進数


基数変換

人間は0~9の10個の数字を用いた10進法を用いていますが,「コンピュータは2進法だ」といわれます。入出力のときは10進法になっていますが,コンピュータ内部では数値は2進法で取扱われているのです。
 10進法での123は(これを12310のように表記する),
    1×100+2×10+3
の意味です。もっと数学的な表現をすれば,
    1×10+2×10+3×10
となります。
 それと同様に2進法では,たとえば1101
    1×2+1×2+0×2+1×2
   =1×8+1×4+0×2+1×1
   =1310
となります。

それで,10進法と2進法の変換を理解する必要があります。以下,その方法を学習しますが,次の表を覚えておくと便利です。

  10進数  2進数  16進数    10進数  2進数  16進数
    0     0    0       8  1000    8
    1     1    1       9  1001    9
    2    10    2      10  1010    A
    3    11    3      11  1011    B
    4   100    4      12  1100    C
    5   101    5      13  1101    D
    6   110    6      14  1110    E
    7   111    7      15  1111    F

10進法、2進法などを一般化して、n進法を定義することができます。そして、このnを基数、異なる進数に変換することを基数変換といいます。

2進数と10進数の基数変換

2進数→10進数 2進数→10進数(整数):1101→1310
2進数の1101は,2を基数とする基数記数法ですから,その値は1×2+1×2+0×2+1×2=1×8+1×4+0×2+1×1=8+4+1=13となります。右のような表を作れば簡単に計算できます。
練習問題:2進数10111→10進数?
10進数→2進数:1310→1101
10進数→2進数 13=8+4+1と分解すれば1101となることがわかりますが,そのような分解を容易にするためには,次のような手順を覚えておくと便利です。
  1. 10進数を2で割り,商と余りを求める。
  2. その商について,商が0になるまで「1」を繰り返す。
  3. 求めた余りを下から上に記述する。
練習問題:10進数23→2進数?

16進数と2進数、10進数の基数変換

コンピュータ内部では2進数なのですが,2進数では桁数が非常に長くなるので,人間が取扱うのには不便です。それで2進数を16進数に変換して表記することが多いのです。上表のように、4ビットは1桁の16進数、1バイト(8ビット)は2桁の16進数で表されます。
 10進数は0~9の10個の数字があるから10進法なのですし,2進数は0と1の2個の数字しかないので2進法なのだともいえます。すると16進数では16個の数字が必要になります。0~9までは10進数と共通にし,10をA,11をB,・・・,15をFとしています。

2進数→16進数
2進数の右端を基準して4個ずつに区切り,それぞれを上の表により16進数にすればよいのです。たとえば,1111011は,次のような操作により,7B16となります。

     111 1011
      ↓    ↓
      7    B

練習問題:2進数11010011→16進数?

     1101 0011
      ↓    ↓
      D    3   ・・・答 D316

16進数→2進数
16進数の各桁の数字を4桁の2進数にすればよいのです。たとえばD316は,次の操作により11010011となります。

       D    3
       ↓    ↓
     1101 0011

16進数→10進数
2進数→10進数と同じように考えます。7B16を10進数にするには,
   7×16+11=123
とすればよいのです。

練習問題:16進数FF→10進数?

     F×16+F=15×16+15=255
10進数→16進数
これも10進数→2進数と同じようにします。12310を16進数にするには,

     16 )123   余り
     16 )  7   11→B
           0    7

より,7B16になります。