バイナリおよび int 範囲/IP 計算と PHP アプリケーションの簡単な分析

WBOY
リリース: 2016-06-20 12:52:52
オリジナル
1157 人が閲覧しました

はじめに

??プログラマの世界では、すべてがバイナリです。

PHP の整数の長さとバイナリの原理

?? 多くの人は、整数の最大値は 2^32 -1 だと言います。は本当です 間違っています。整数は 4 バイトを占め、各バイトが 8 ビットであるとします。 整数 3 は次のように表現できます。
観察の便宜上、ここでは 8 ビットが分離されています。本当の意味では、それは連続しています。
00000000 00000000 00000000 00000011
SUM = 2^0 + 2^1 = 3
では、正の数と負の数をどのように表現するのでしょうか?規定によれば、符号付き整数の場合、32 ビット目は正の場合は 0、負の場合は 1 となります
したがって、-1 は次のように表されます
10000000 00000000 00000000 00000011
最大の正の整数は次のように表すことができます
01111111 11111111 11111111 11111111
SUM = 2^0 + 2^1 + 2^2... > 式を確認してください:
Sn = (1-q^n)/(1-q)
前の式から、公比は 2 で、項は 31 個あることがわかります。
Sn = 2^31 - 1
符号付き整数の最大値は 2^31 - 1 = 2147483647
最小値は -2147483648 であることを覚えておいてください。研究に興味がある場合は、検索できます。百度でね。

IPアドレスの計算

??常識的に考えて、IPの各桁の領域は0~255の範囲しかありません。それはバイナリから明らかです。

たとえば、IP 127.0.0.1

011111111 000000000000000001
IP は [00000000, 11111111111111111111, 255] でのみ計算できます

開発中のアプリケーション
🎜>

IP 文字列と整数の交換

PHP は、2 つの関数 ip2long() と long2ip() を取得するのに役立ちました。

  • 3 つの var_dump タイプ。 are int, string, int
これを適用すると、非常に実用的なことが 1 つあります。それは、SQL を格納することです。
<?php    $ip = '192.168.104.120';    var_dump($ip);    $ip = ip2long($ip);    var_dump($ip);    $ip = long2ip($ip);    var_dump($ip)?>
ログイン後にコピー
1. 整数は文字列よりも使用するスペースが少なくなります。

2. SQL クエリでは、文字列よりも数値の効率が高くなります。
他にもたくさんありますので、他の学生が追加してくれることを楽しみにしています。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!