C/C++ 言語 2進数 16進数 入門
Copyright (C) 2014 by Nobuhide Tsuda

2進数 16進数 とは

我々が日常生活で使用するのは10進数である。
なぜ10進数なのかというと、手の指が合計10本あるからではないかと言われている。 もし手の指が4本だったなら、8進数が使われていて、読者が2進数に混乱することももっと少なかったかもしれない。

コンピュータ内部では、通常2進数が使用される。何故かというと、10進数よりも2進数の方がコンピュータにとって扱いやすいからである。 なので、気がつかないかもしれないが、入出力の時に10進数←→2進数の変換が陰でこっそり行われているのだ。

コンピュータは 0 または 1 のデータを取り扱う。これを「ビット(bit)」と呼ぶ。
ひとつのビットだけでは、表現できる状態が2つしかない。

これでは状態数が少なすぎなので、通常は8個のビットをひとまとまりとして取り扱う。
これを「バイト(byte)」と呼ぶ。

1バイトで表現可能な範囲は、2進数で書けば 00000000 から 11111111 まで。
10進数で書けば 0 から 255 までとなる。

2進数で表記すると桁が多くなりすぎるので、2進数の4桁をひとまとまりにして、通常は16進数を用いる。
0から9までは通常の数を用い、10~15は 'A', 'B', 'C', 'D', 'E', 'F' を用いる。
小文字('a', 'b', 'c', 'd', 'e', 'f')で表記してもよい。

16進数1桁は4ビットに相当する。

 10進数  2進数  16進数 
000000
100011
200102
300113
401004
501015
601106
701117
810008
910019
101010A
111011B
121100C
131101D
141110E
151111F

Nビットの数値を16進数に変換すると、(Nが4の倍数であれば、)N/4桁の16進数で表記できる。

演習問題

  1. 10進数の100を、2進数、16進数に変換してみなさい
  2. 2進数の 01011010 を 10進数、16進数に変換してみなさい
  3. 32ビットの数値を16進数に変換すると何桁になるか?
  4. 4桁の16進数を2進数に変換すると何桁になるか?

C/C++ 言語での16進数、2進数

C/C++ 言語による16進数表記

C/C++ 言語による2進数表記

C/C++ 言語による16進数表示

C/C++ 言語による2進数表示

C/C++ 言語による整数・16進数表記変換

C/C++ 言語による整数・2進数表記変換

参考


演習問題解答例