255までの数値を紙とペンでビットパターンに変換する方法
IPアドレスの計算やビットパターンの確認では、
Windows電卓やツールなどを利用すると簡単です。
しかし、そうしたツールがない状態でビットパターンを求めたい場合には、
紙とペンを使って計算で求めることもできます。
ここでは255までの数値を単純作業でビット化する手順をご紹介します。
この方法はあくまでも自己流です。
もっと簡単な方法があったらTwitterなどで教えてください。
この方法は引き算しかしないので、ミスは少ないと思いますが。
目次
255までの数値を紙とペンでビットパターンに変換する方法
試験会場などで、問題用紙の空きスペースで、
ちょっとビットパターンを確認したい場合には、
以下のように紙に書きながら、単純作業でビットを求めます。
STEP1
まず、左から1~8の数字を書きます。
次にその上にでも、右から2の乗数を順に書きます。
この値を利用して計算していきます。
STEP2
①次に求めたい数値を右にでも書きます。
ここでは「123」のビットパターンを求めることとします。
②次に123が各2乗の値の中で納まる位置を探します。
比較は以下の式で行います。
2^n => NUM > 2^n-1
※下側の値に一致した場合は、上を採用します。
「128」が上の値です。
「64」が下の値になります。
③対象の値が収まる範囲の上側の数値の下に「1」を書きます。
④対象の値が収まる範囲の下側の値「64」を、求める値の下に書き、
マイナスを付けて引き算します。
⑤引いた余りを求めて書きます。「123-64=59」
次は求める値を「59」から再び開始します。
この作業の繰り返しを行います。
本当に単純作業です。
最後が1桁になるまで繰り返します。
STEP3
①「59」が収まる位置を求めます。
②上が「64」下が「32」です。
③上の値「64」の下に「1」を書きます。
④下の値「32」を求める値から引き算します。
⑤余りは「59-32=27」です。
STEP4
①「27」が収まる位置を求めます。
②上が「32」下が「16」です。
③上の値「32」の下に「1」を書きます。
④下の値「16」を求める値から引き算します。
⑤余りは「27-16=11」です。
STEP5
①「11」が収まる位置を求めます。
②上が「16」下が「8」です。
③上の値「16」の下に「1」を書きます。
④下の値「8」を求める値から引き算します。
⑤余りは「11-8=3」です。
STEP6
①「3」が収まる位置を求めます。
②上が「4」下が「2」です。
③上の値「4」の下に「1」を書きます。
④下の値「2」を求める値から引き算します。
⑤余りは「3-2=1」です。
ここで解が1桁になりました。
ここで求まった1桁は最終ビットになります。
一番右にそのまま書きます。
これでビットの1が立つ部分が求まりました。
STEP7
「1」が立たなかった部分すべてに「0」を書きます。
ズバリ、このビットパターンが、
求めたかった値の「123」を示しています。
「0111 1011」
Windows電卓で確認します。
確認方法は以下でご紹介しています。
「123」と入力した、直下に表示されているビットパターンと、
求めたパターンは一致しています。
正しく求められています。
最終チェックとして確認する点として以下を確認します。
奇数は最終ビットが「1」
偶数は最終ビットが「0」になります。
その為「123」の時点で最終ビットは「1」が分かっています。
先に「1」と立てておくことで、
最後に求めた値とビットが一致していれば、計算はほぼOKと言えます。
このことからもわかるように、
ネットワークIPアドレス(ホスト部の下位ビットがすべて0)は、
必ず偶数ということも言えます。
偶数の場合の例
次に偶数の場合として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」となりますので、
辻褄も合っています。
こうして偶数の場合には、スコーンと「0」のタイミングが現れて、
計算終了という形になるわけです。
本当かいな?という方へ
まぁ、私も何となくこの方法を見つけた時は、
本当かいなと思ったのですが、ちゃんと求められるんですね。
以下は疑い深い方向けに・・・
「0」の場合
当然、1桁なので最終ビットに「0」で終了
「1」の場合
同じく、1桁なので最終ビットに「1」で終了
「255」の場合
最大値で答えが「11111111」になるので、
これは手間がかかりそうと直感で感じますね。
まさに、計算回数最大の7回で「11111111」が求まります。
「192」の場合
よく見るプライベートネットワークで見る
「192.168.0.0」の「192」です。
ビットパターンを知っていると「11000000」という
すっきりしたパターンだと思うわけですが、
計算でそんなのが出るのか?
そう疑いたくなるわけですが、
計算2回目でいきなり「0」となって、
最終ビットにセットして終了。
「11000000」が求まります。
「129」の場合
では、また面白いビットパターンとして、
「129」というのもあります。
これは「10000001」というビットになります。
計算してみると、そうですね。
1回目で余りが「1」で最終ビットに「1」を立てて終了。
ちょっと気持ちいいと思いませんか?
さいごに
どうです?
面倒なのは「255」位で、
少なくとも7回の計算で正確にビットパターンが求められます。
手で指折り求められる人はいいとして、
紙上で計算して求められるので、後から見直すこともできます。
ちょっとビットパターンを求めてみたくなりませんか?
プログラムを書いたりしていて、
検算をしたりなどを繰り返しているうちに、
偶然この方法を見つけたのですが、
これって既に有名な方法なんですかね?
本サイトで公開しているツールについては、
十分にテストは行っておりますが個人で作成している為、
潜在的なバグがないとは言い切れません。
その為、ツールを用いた結果については十分検証の上ご利用ください。
当サイトおよび、管理人は如何なる損害もその責を負いません。
当サイト内のコンテンツおよび画像において、
出典・引用の外部著作権者の明記がないものは、
すべて管理人による著作物です。
当サイトでご紹介しておりますコンテンツの著作権の放棄は致しません。
サイト内コンテンツを引用される際にはご連絡は不要です。
ただし、出典元として当サイト(個別記事)へのリンクをお願いいたします。
申し訳ございませんが、無断転載、複製をお断りさせて頂いております。
コンテンツを有益であると感じていただけましたら非常に光栄です。
ありがとうございます。
公開日:
最終更新日:2019/06/20