ネットワーク技術者のための数値計算

 SEはプログラミングにおいて数値計算することはまれですが、NEはサブネットの計算、帯域計算、トラフィック計算、I/Oの負荷計算等、日常的に数値計算する業務が多くあります。ここではNE必須の数値計算について、要点を絞ってまとめていきたいと思います。

はじめに

基数とは

 例えば「128」という10進数の数字の場合、下図のとおり表せます。

 各々の桁に対して10の0乗、10の1乗、10の2乗~を計算し、その結果を足すことで計算します。この元になる数字を基数と呼び、この場合基数は10です。つまり10進数とは基数が10の数値といえます。

基数変換とは

 10進数から2進数、10進数から16進数というように、基数を変換することです。

2.10進数 ⇔ 2進数 の基数変換

10進数 → 2進数

 2で割ってその余りを並べると、2進数になります。下図のように例えば「23」という10進数の数字の場合、2進数では「10111」となります。


 ネットワークでよく使う256までの数字の場合は、下図の通り、表にあてはめて変換します。
 例えば「101」という10進数の数字の場合、「128」より小さいので、128以上は1にならないことが分かります。次に101は64以上なので64に1を付け、101-64=37。残り37について同様にフラグを立てていきます。この256、128、64、32~という基数の8乗まで覚えておく、つまりこの表を頭に入れておくと計算が速くなります。

2進数 → 10進数

 大きな数字の場合は4桁ごとに区切って、16進数に変換してから10進数に変換します。
 ネットワークで使う256までの数字の場合は、上図の逆パターンです。

3.10進数 ⇔ 16進数 の基数変換

10進数 → 16進数

 方法は2進数と同じで、16で割ってその余りを並べると、16進数になります。余りが10以上の場合は、余り10=A、11=B、12=C、13=D、14=E、15=F、で読み替えます。下図のように例えば「689」という10進数の数字の場合、16進数では「2B1」となります。

 ※小数点以下が存在する場合は方法が異なるのですが、ここでは省略します。

16進数 → 10進数

 各桁を16の0乗、1乗、2乗~で計算してその結果を足します。下図のように例えば「2B1」という16進数の数字の場合、10進数では「689」となります。

 ※小数点以下が存在する場合は方法が異なるのですが、ここでは省略します。

4.現場で良く使う計算単位

「ビット」と「バイト」等の単位

 「0」、「1」で表す2進数1桁をコンピュータ上の単位として1ビット(bit)と呼びます。対して8ビットを1バイト(Byte)と呼びます。

Byteは「B」、bitは「b」と略されます。

 主に、ハードディスクの容量はKB、MB、GBというようにバイトで表現されるのに対して、
ネットワークの通信速度はKbps、Mbps、Gbpsのようにビットで表現されます。

 このため、例えば100MBのデータをネットワークで送信する際、回線速度が100Mbpsであれば、

送信に 100×8 / 100 = 8秒 かかることになります。

 非常に手間ですが、ネットワーク設計の際、頻繁にこのビットとバイトの変換が必要になります。


KB、MB、GB ~

 1000ごとの単位です。KB→MB→GB→TB→PB(ペタバイト)→EB(エクサバイト)と続きます。


メビバイト:MiB

 ごくまれに、MiB単位で容量や転送量を表現する機器があります。1MiB=1.04858MBです。


GT/s(GigaTransfers per second)

 CPUやPCI Expressインターフェース等で利用される転送速度を表す単位です。8b/10b(8ビットを転送するために2ビットをクロック信号として使い、10ビット利用するエンコード方式)の冗長2ビットを加算した単位をGT/sで表します。
 このため1GT/s=0.8Gbpsとなります。



おすすめの関連記事

ネットワーク技術者のための電力計算
電気料金見直しや最大電力の確認のためにパソコン等の消費電力を計算する方法をまとめした。