php ip二进制存储,浅析二进制与int范围/IP计算及PHP应用

前言

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

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(),代码说话:

三个var_dump类型分别为int,string,int

这个的应用的话,有一点是很实在的,那就是存SQL。

1.一个整型用的空间比一串字符串来的小。

2.SQL查询的话,数字效率是高于字符串的。

其他还有很多,期待其他同学补充。

本文原创发布php中文网,转载请注明出处,感谢您的尊重!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值