Maison > développement back-end > tutoriel php > 浅析二进制与int范围/IP计算及PHP应用

浅析二进制与int范围/IP计算及PHP应用

WBOY
Libérer: 2016-06-20 12:52:52
original
1181 Les gens l'ont consulté

前言

??对于程序员的世界,一切东西皆二进制。

PHP整型长度与二进制原理

??我们一直说的整型有32位,很多人都说整型数最大有2^32 -1,其实这个是有错误的。一个整型占四个字节,每个字节有8bit,假设一个整数3 可以表达为:
在这里为了方便观察,八位隔开,真正意义上来说,它是连续的。
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·······
可以发现,这个变成了我们高中数学,求等比数列前N项和
重温下公式:
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
01111111 00000000 00000000 00000001
IP每位区间只能在 [00000000,11111111]
套公式计算一下,255

开发中的应用

  • IP字符串与整型的互换
    PHP确实是好东西,帮我们弄了两个函数ip2long(),long2ip(),代码说话:
<?php    $ip = '192.168.104.120';    var_dump($ip);    $ip = ip2long($ip);    var_dump($ip);    $ip = long2ip($ip);    var_dump($ip)?>
Copier après la connexion

三个var_dump类型分别为int,string,int
这个的应用的话,有一点是很实在的,那就是存SQL。
1.一个整型用的空间比一串字符串来的小。
2.SQL查询的话,数字效率是高于字符串的。
其他还有很多,期待其他同学补充。

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal