IPアドレス・ネットマスクの変換・チェック・統合・除外を簡単に。

Google or AdMax Promotion (ipvtop)

8桁のビットパターンを紙とペンで10進数に変換する方法

IPアドレスやサブネットマスクなどの値を2進数に戻して、
計算した後に再び10進数に戻すような場合には、
紙とペンがあれば簡単に2進数を10進数に戻すことができます。
ここではその手順についてご紹介します。

IPアドレスの問題やネットワーク関連の問題では、
10進数・2進数変換を良く利用します。
とても頻繁に利用するのですが、試験などでは電卓やツールが使えず、
暗算で求める必要があったりと慣れるまでは難しいものです。

8桁のビットパターンを紙とペンで10進数に変換する方法

変換の手順をご紹介する前に、
簡単な例で10進数をまず2進数に変換してみます。

10進数を2進数にする際も紙とペンで簡単に求められます。

 

2の乗数とビットパターンの関係

まず、2の2乗である4はビットパターンにするとどうなるでしょうか。

0(10進数) ⇒ 0(2進数)
1(10進数) ⇒ 1(2進数)
2(10進数) ⇒ 10(2進数)
3(10進数) ⇒ 11(2進数)
4(10進数) ⇒ 100(2進数)

では、2の3乗の8は?

4(10進数) ⇒ 100(2進数)
5(10進数) ⇒ 101(2進数)
6(10進数) ⇒ 110(2進数)
7(10進数) ⇒ 111(2進数)
8(10進数) ⇒ 1000(2進数)

気付きましたか?

2の乗数だと、乗数(2乗・3乗)の数に一致する数の「0」と、
繰り上がった桁に「1」があります。

では、2の8乗(256)は?
計算する必要もありませんね。

100000000」です(1が1つ0が8つ

この法則については以下でご紹介しました。

 

サブネットマスクなどでよく見る「255」という数字。
これはまさに、この「256-1=255」です。

256で1繰り上がって9桁になっているこのビットから、
繰り上がる前のー1をした値を考えると、
「11111111」が255なのはすぐに想像がつきますね。

サブネットマスク「255.255.255.0」なんかは、
「11111111.11111111.11111111.00000000」だと分かります。

 

2の乗数のビットパターンから10進数に戻す

さて、では今までは2の乗数とビットパターンの関係を見てきました。

ですので、

もう「100000」と見れば、
0が5つあるな・・・2の5乗と言うことだな。
なら「32」だとすぐに求めることができます。

2の5乗が32だって電卓もなく計算できない?
そこは呪文を唱えて指折り求めるんです。

 

任意のビットパターンから10進数に戻す

では、ここからが本題です。

「10101010」というビットパターンを
10進数に戻したい場合には、どうしますか?
※ここではIPアドレスに関しての処理なので8bit(8桁)を前提とします。

求める手順を順を追ってご紹介します。

STEP1

まず、左から1~8の数字を書きます。
次にその上にでも、右から2の乗数を順に書きます。

この値を利用して計算していきます。

bittonum_st01

01_ベースの値を準備・ステップ1

 

STEP2

①次に求めたいビットパターンを番号の下に書きます。

bittonum_st02

02_求めるビットパターンを記載・計算ステップ2

 

STEP3

①1を書いた部分の下に一つ右の乗数値を書きます。

bittonum_st03

03_ビットの下に値を記載・計算ステップ3

 

STEP4

①書いた乗数の値をすべて足します。

②合計して求めた値が、10進数に戻した値です。

bittonum_st04

04_書いた値を加算・ステップ4

 

STEP5

練習では検算をWindows電卓などを利用して行うといいでしょう。

bittonum_st05

05_求めた値の検算・ステップ5

 

Windows電卓でビットパターンを確認する方法は以下でご紹介しています。

 

プロモーション

Google or AdMax Promotion (ipvpos)

本当かいな?という方へ

まぁ、私も何となくこの方法を見つけた時は、
本当かいなと思ったのですが、ちゃんと求められるんですね。

以下は疑い深い方向けに・・・

「00000000」の場合

当然、1が一つもないので何も加算するものがありません。

bittonum_st06

06_「00000000」の場合

 

「00000001」の場合

1の場合は?

一つ右に乗数した値がありません。何を加算しましょうか?

最終ビットに1が立っている場合には、そのまま下に「1」を書きます。
結果「1」となります。

 

これは1に関わらず、その他の値でも同じです。

最終ビットはそのまま下に1を書く。

bittonum_st07

07_「00000001」の場合

 

「11111111」の場合

これが一番計算数の多いパターンです。

まぁ、先ほどの「10000000(256)- 1  = 255」とインド式のような、
計算方法を利用したほうが楽ですし、
「11111111」は計算するまでもなく「255」と覚えてしまうでしょうけど。

このルールで計算しても正しく求まります。

bittonum_st08

08_「11111111」の場合

 

「10000001」の場合

最終ビットに「1」が立ったこのパターンはどうでしょう。

正しく求められます。

bittonum_st09

09_「10000001」の場合

 

「11000000」の場合

よく目にする(10進数として)このビットパターンはどうでしょう。

正しく求められます。
プライベートアドレスでよく見かける「192.168.0.0」の192です。

bittonum_st10

10_「11000000」の場合

 

「11001100」の場合

では「11001100」の場合はどうでしょうか。

ちょっと足し算してみて下さい。

bittonum_st11

11_「11001100」の場合

 

 

答えは以下です。

bittonum_st12

12_「11001100」の解

 

ちょっとすぐに求められたら便利だと思いませんか?

 

さいごに

どうです?
面倒なのは「255」位で、すべて足し算で求められます。

手で指折り求められる人はいいとして、
紙上で計算して求められるので、後から見直すこともできます。

ちょっとビットパターンが簡単に感じることができませんか?

 

プログラムを書いたりしていて、
検算をしたりなどを繰り返しているうちに、

偶然この方法を見つけたのですが、
これも既に有名な方法なんですかね?

 


AdMax Promotion

公開日:

AdMax Promotion

サイト内コンテンツ
すべて展開 | すべて省略

Google or AdMax Promotion (ipvlink)

QRコードからもこのURLを開けます。