技術コラム集

2進数と16進数を覚えよう

大文字と小文字の違い

1kgの「k」と1KBの「K」の違いは知っているかな?

1kg=1000g, 1km=1000mの意味だよね。一般的な数量を表す単位系だと、小文字の「k」というのがつくと「1000」を意味する。これに対して「ファイルのサイズは50KBです」というようにコンピュータの世界だと大文字の「K」が使われている。この大文字の「K」は「1000」ではなく「1024」を意味してる。つまり、1KB=1024Bだね。

コンピュータは0/1の2進数で動作している、とよく言われてる。 実は「1000」というのは、2進数では大変切りの悪い数字なんだ。そこで、210(2の10乗)である「1024」を基本にしたというわけ。ちなみに1MBの「M」も1024×1024の意味だよ。

大文字と小文字のついでに「b」と「B」の違いについても触れてみよう。

例えば、ネットワークの通信速度の表記などでよく見かける「bps」と「Bps」という単位。これらは、どれくらい違うのだろうか。小文字の「b」は「ビット」の意味。ビットは、コンピュータが動作する最小単位で0N(1)とOFF(0)の2つの状態を持つ小さなスイッチだと考えて。ビット値はそのまま2進数で表すことができる。ビットが4個あれば、24=16の状態の組み合わせを表現することができるよね。ビットが16個あれば、216=65536になる。「コンピュータは2進数で動作している」と言われるゆえんなんだ。

これに対して、大文字の「B」は「バイト」を意味してる。1バイト=8ビットと決められていて、これもコンピュータでデータを扱う上で基本単位となっているんだ。

先の例に戻ってみよう。「bps」は「ビット/秒」、「Bps」は「バイト/秒」を意味してる。つまり、100Kbpsと100KBpsを比べると、100KBpsのほうが8倍高速であることを示しているんだ。

2進数と16進数

前置きが長くなってしまったけど、組込みの世界では、2進数や16進数をいかに早く正確に扱えるかが大変重要なスキルのひとつになる。いろいろな場面で、2/10/16進数をパッと相互変換できる力を求められる。これを間違えるとバグに直結するし、いちいち考えてしまうようでは仕事にならないんだ。

よく使う値をご紹介するね。まるごと暗記してしまってもいいと思う。
(注)ここでは以下のルールで「進数」を表現することにします。

  • 10進数:何もつけない
  • 16進数:先頭に「0x」をつける
  • 2進数:最後に「b」をつける

換算表

上記をみてもらえると分かるけど、2進数だと数が大きくなるにつれて桁数が膨大になってしまうよね。16進数を使うのはこれを扱いやすくするためなんだ。

2進数と16進数を覚えよう(2)へ続く

零の巻:組込みというお仕事 弐の巻:割り込みとポーリング

ビリーの講義一覧へ

このページの上へ