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

Google or AdMax Promotion (ipvtop)

255までの数値を紙とペンでビットパターンに変換する方法

IPアドレスの計算やビットパターンの確認では、
Windows電卓やツールなどを利用すると簡単です。
しかし、そうしたツールがない状態でビットパターンを求めたい場合には、
紙とペンを使って計算で求めることもできます。
ここでは255までの数値を単純作業でビット化する手順をご紹介します。

この方法はあくまでも自己流です。
もっと簡単な方法があったらTwitterなどで教えてください。
この方法は引き算しかしないので、ミスは少ないと思いますが。

255までの数値を紙とペンでビットパターンに変換する方法

試験会場などで、問題用紙の空きスペースで、
ちょっとビットパターンを確認したい場合には、
以下のように紙に書きながら、単純作業でビットを求めます。

STEP1

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

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

numtobit_st01

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

 

STEP2

①次に求めたい数値を右にでも書きます。
ここでは「123」のビットパターンを求めることとします。

②次に123が各2乗の値の中で納まる位置を探します。
比較は以下の式で行います。

2^n => NUM > 2^n-1
※下側の値に一致した場合は、上を採用します。

「128」が上の値です。
「64」が下の値になります。

③対象の値が収まる範囲の上側の数値の下に「1」を書きます。

④対象の値が収まる範囲の下側の値「64」を、求める値の下に書き、
マイナスを付けて引き算します。

⑤引いた余りを求めて書きます。「123-64=59」

次は求める値を「59」から再び開始します。

この作業の繰り返しを行います。

本当に単純作業です。

最後が1桁になるまで繰り返します。

numtobit_st02

02_求める値を記載計算ステップ2

 

STEP3

①「59」が収まる位置を求めます。

②上が「64」下が「32」です。

③上の値「64」の下に「1」を書きます。

④下の値「32」を求める値から引き算します。

⑤余りは「59-32=27」です。

numtobit_st03

03_求める値を減算で求め計算ステップ3

 

STEP4

①「27」が収まる位置を求めます。

②上が「32」下が「16」です。

③上の値「32」の下に「1」を書きます。

④下の値「16」を求める値から引き算します。

⑤余りは「27-16=11」です。

numtobit_st04

04_求める値を減算で求め計算ステップ4

 

STEP5

①「11」が収まる位置を求めます。

②上が「16」下が「8」です。

③上の値「16」の下に「1」を書きます。

④下の値「8」を求める値から引き算します。

⑤余りは「11-8=3」です。

numtobit_st05

05_求める値を減算で求め計算ステップ5

 

STEP6

①「3」が収まる位置を求めます。

②上が「4」下が「2」です。

③上の値「4」の下に「1」を書きます。

④下の値「2」を求める値から引き算します。

⑤余りは「3-2=1」です。

ここで解が1桁になりました。

ここで求まった1桁は最終ビットになります。
一番右にそのまま書きます。

これでビットの1が立つ部分が求まりました。

numtobit_st06

06_求める値を減算で求め計算ステップ6

 

STEP7

「1」が立たなかった部分すべてに「0」を書きます。

ズバリ、このビットパターンが、
求めたかった値の「123」を示しています。

「0111 1011」

numtobit_st07

07_空ビットに0を記入し完成

 

Windows電卓で確認します。
確認方法は以下でご紹介しています。

「123」と入力した、直下に表示されているビットパターンと、
求めたパターンは一致しています。

numtobit_st08

08_「123」の検算

 

正しく求められています。

最終チェックとして確認する点として以下を確認します。

奇数は最終ビットが「1」
偶数は最終ビットが「0」になります。

その為「123」の時点で最終ビットは「1」が分かっています。

先に「1」と立てておくことで、
最後に求めた値とビットが一致していれば、計算はほぼOKと言えます。

 

このことからもわかるように、

ネットワークIPアドレス(ホスト部の下位ビットがすべて0)
必ず偶数ということも言えます。

 

プロモーション

Google or AdMax Promotion (ipvpos)

偶数の場合の例

次に偶数の場合として1を加えた「124」を見てみます。

この場合も手順は同じですが、
「124」では4回目の時に「4」が求める値になります。

4は「2の2乗」に一致することになります。
しかし、求める式では「」です。

2^n => NUM > 2^n-1

よって、採用される位置は「8=> (位置) > 4」となり、
上が8、下が4になります。

「8」の下に「1」を書き、下の値「4」で引き算すると、
解が「0」となり、1桁になります。

1桁になったら、それは最終ビットにして計算終了です。

求めたビットパターンは「0111 1100」で「124」になっています。

「123」=「0111 1011」でしたから、
1を加算すると繰り上がって「0111 1100」となりますので、
辻褄も合っています。

numtobit_st09

09_「124」の場合の偶数パターン

 

こうして偶数の場合には、スコーンと「0」のタイミングが現れて、

計算終了という形になるわけです。

 

本当かいな?という方へ

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

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

「0」の場合

当然、1桁なので最終ビットに「0」で終了

numtobit_st10

10_「0」の場合

 

「1」の場合

同じく、1桁なので最終ビットに「1」で終了

numtobit_st11

11_「1」の場合

 

「255」の場合

最大値で答えが「11111111」になるので、
これは手間がかかりそうと直感で感じますね。

まさに、計算回数最大の7回で「11111111」が求まります。

numtobit_st12

12_「255」の場合

 

「192」の場合

よく見るプライベートネットワークで見る
「192.168.0.0」の「192」です。

ビットパターンを知っていると「11000000」という
すっきりしたパターンだと思うわけですが、
計算でそんなのが出るのか?

そう疑いたくなるわけですが、

計算2回目でいきなり「0」となって、
最終ビットにセットして終了。
「11000000」が求まります。

numtobit_st13

13_「192」の場合

 

「129」の場合

では、また面白いビットパターンとして、
「129」というのもあります。

これは「10000001」というビットになります。

計算してみると、そうですね。
1回目で余りが「1」で最終ビットに「1」を立てて終了。

numtobit_st14

14_「129」の場合

 

ちょっと気持ちいいと思いませんか?

 

さいごに

どうです?
面倒なのは「255」位で、
少なくとも7回の計算で正確にビットパターンが求められます。

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

ちょっとビットパターンを求めてみたくなりませんか?

 

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

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

 


AdMax Promotion

公開日:
最終更新日:2015/02/24

AdMax Promotion

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

Google or AdMax Promotion (ipvlink)

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