一度は目にしたことがあるかと思いますが、ドラクエなどでステータスが255以上上がらない現象を目の当たりにして、なんでだろう?と思ったことはないですか?
こんなやつです。
結論から申し上げますと、ステータスの値を1byte(8bit)で表現しようとしたときの上限が255であるからです。
ではこの詳細について紐解いていきましょう。
Table of Contents
コンピュータは0と1しか読み取ることができない
大前提としてコンピュータは0と1しか読み取ることができません。
コンピュータはすべて0と1の組み合わせで表現し、計算も行っています。
人間が電気信号で手や足を動かせる仕組みになっているのと同じで、コンピュータも電気信号を受けて「ON」「OFF」を切り替えています。
電気信号が流れないときは「OFF」要するに「0」
電気信号が流れるとき「ON」要するに「1」
Webページのボタンをマウスでクリックすると「ON」を受け取り、内部では処理が働き、ページが遷移したり、入力した内容が送信されたり、そういった動きをします。
ステータス255である理由は?
255という数字は1byte(8bit)で表現したときの上限である、と冒頭にお話ししましたが、この255という数字は人間が読みやすいように表現された10進法という表記になっています。
コンピュータは0と1しか読み取ることができないよ、というのは前述しましたが、255という数字を0と1だけの表現、要するに2進数に変えると
「11111111」
となります。
1byteはbitに直すと8bit
1bitは「0」か「1」
2bitは「00」「01」「10」「11」のいずれか
8bitは最小「00000000」~最大「11111111」まで存在します。
8bitのデータを10進数で表すと0~255まで存在することになります。
2進数と10進数の計算について
10進数を2進数への変換の仕方は以下の表を用いて計算してみましょう
2進数表記 | 10進数表記 |
---|---|
10000000 | 128 |
01000000 | 64 |
00100000 | 32 |
00010000 | 16 |
00001000 | 8 |
00000100 | 4 |
00000010 | 2 |
00000001 | 1 |
計算方法は次の通りです。
例えば「150」を2進数へ変換する場合、
150 | 128 | → | 22 | 1 | 減算できるので「1」 |
22 | 64 | → | -42 | 0 | 減算できないので「0」 |
22 | 32 | → | -10 | 0 | 減算できないので「0」 |
22 | 16 | → | 6 | 1 | 減算できるので「1」 |
6 | 8 | → | -2 | 0 | 減算できないので「0」 |
6 | 4 | → | 2 | 1 | 減算できるので「1」 |
2 | 2 | → | 0 | 1 | 減算できるので「1」 |
0 | 1 | → | -1 | 0 | 減算できないので「0」 |
上記の計算結果から150の2進数表記で表すと
「10010110」
となります。
255の場合は128~1まですべて減算できます。
逆に2進数を10進数への計算方法は以下の通りです。
桁数 | 8桁目 | 7桁目 | 6桁目 | 5桁目 | 4桁目 | 3桁目 | 2桁目 | 1桁目 |
計算式 | 2^7 | 2^6 | 2^5 | 2^4 | 2^3 | 2^2 | 2^1 | 2^0 |
2進数表記 | 1 | 0 | 0 | 1 | 0 | 1 | 1 | 0 |
10進数表記 | 128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 |
2進数で1の部分をすべて加算していくと
128+16+4+2=150
となります。
255の場合は2進数にするとすべて1になるので、128+64+32+16+8+4+2+1 = 255
この0と1が8桁つまり8bitすべて11111111となって時点で上限に到達し、これ以上カウントアップできなくなります。
上限255のまとめ
実際に計算してみることで255の謎が解けたと思います。
過去のドラクエなどのRPGを今やってみると、数値の意味が理解できるようになるかと思います。
今回の内容はIPアドレスのIPv4における表記についても同じ計算方法で求めることができます。
192.168.1.1という10進数表記を2進数に変えた場合どうなるか?をご自身で計算して求めてみるとより深く理解することができるのではないでしょうか?
IPアドレスはTCP/IPの知識の基礎となる部分です。
マスタリングTCP/IPという本はITエンジニアの中でもかなり高評価を受けている本です。
僕自身もこの本でTCP/IPの基礎を勉強する上で非常に役立っております。
TCP/IPの基礎を学びたいという方は以下から
マスタリングTCP/IP―入門編―(第6版)
Amazonで井上 直也, 村山 公保, 竹下 隆史, 荒井 透, 苅田 幸雄のマスタリングTCP/IP―入門編―(第6版)。アマゾンならポイント還元本が多数。井上 直也, 村山 公保, 竹下 隆史, 荒井 透, 苅田 幸雄作品ほか、お急ぎ便対象商品は当日お届けも可能。またマスタリングTCP/IP―入門編―(第6版)もアマゾン配送商品なら通常配送無料。
\無料コンテンツを配布しております/
毎日エンジニアとして勉強をしているのに
そんな毎日に悩みを抱えている方
もしかしたら間違った勉強方法をしているかもしれません。
エンジニアとして生きていくための正しい勉強とは
一体何でしょうか?
以下からご確認ください