ネットワーク技術の本を読んでいると,見慣れない計算式や用語につまずくことがあります。ここでは,ネットワークに関係する代表的な計算式について,その必要性と具体的な計算方法,適用例を解説していきます。今回 のテーマは基数変換です。

図1●2進数,10進数,16進数の特徴
図1●2進数,10進数,16進数の特徴

 日常生活で数値が出てくるときは,基本的に10進数です。つまり,0~9の10個の文字を使って数を表現します。しかし,コンピュータ・ネットワークの世界では2進数が基準になっています。2進数は1と0の二つの文字だけで数を表現します。これはなぜなのでしょうか。

 それは,コンピュータにとっては10進数よりも2進数の方が扱いやすいからです。オンとオフ,あるいは5Vと0Vのように,コンピュータ内の電気回路は二つの異なる状態を作り出したり,その違いを読み取るのが比較的簡単にできます。

 ただし人間にとっては,2進数は扱いにくいものです。大きな数を表記しようとすると桁数が多くなります。例えば10進数の9を2進数で表すと,1001と4桁が必要になります。そこで登場するのが16進数です。

 なぜ10進数を飛び越して16進数なのかというと,2進数⇔16進数の変換が簡単だからです。ただし,2進数の0000~1111が16進数の0~Fに1対1で対応していることは押さえている必要があります。これさえ知っていれば,どんなに長い桁数の2進数でも4桁(4ビット)ごとに区切って,それぞれを16進数1文字に変換できます。

 一方,2進数を10進数に変換するには,2進数の各桁を10進数に直して合計する必要があります。

図2●基数変換
図2●基数変換

キロは1000?,それとも1024?

図3●キロは1000?1024?
図3●キロは1000?1024?

 基数変換の方法はここまでにして,話題を少し変えましょう。同じ読みの「キロ」でも10の3乗(=1000)のときは小文字のkを使い,2の10乗(=1024)のときは大文字のKを使って表記するのは,ご存じでしょうか(Kの方は「ケイ」と呼んだりするケースもあります)。

 例えば,ネットワークの速度を表すときに使う単位は「ビット/秒」です。1秒間に何ビットを送れるかという意味です。1kビット/秒と表記した場合は,毎秒103ビット=1000ビットを送るという意味になります。

 ところが,コンピュータ・メモリーの容量を表すときはKが使われます。1Kバイトは1024バイトです。これはOSのアドレス空間が2進数ベースで振られているため,2の累乗にした方が扱いやすいからです。

 ちなみに国際電気標準会議(IEC)では,k(1000)と区別するためにK(1024)のことを「キロバイナリ(kilobinary),略してキビ(kibi)と呼ぶ」と定めていますが,あまり普及していません。

出口 雄一(でぐち ゆういち)
株式会社タケキ IT教育事業部取締役
大手ソフトウエア・ベンダーを経て2003年に独立。現在はネットワーク技術講習会や情報処理技術者試験対策講座の講師を務める。テクニカルエンジニア(ネットワーク)やセキュリティアドミニストレーターなど数多くの国家資格を取得している。