资讯专栏INFORMATION COLUMN

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

宋华 / 1509人阅读

摘要:前言对于程序员的世界,一切东西皆二进制。地址的计算根据常识,的每一位的区域只有在区间。根据它的二进制就明了。查询的话,数字效率是高于字符串的。

前言

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

PHP整型长度与二进制原理

  我们一直说的整型有32位,很多人都说整型数最大值有2^32 -1,其实这个相对于无符号整型数,那么这里来谈论下有符号整型数。一个整型占四个字节,每个字节有8bit,假设一个整数3 可以表达为:
在这里为了方便观察,八位隔开,真正意义上来说,它是连续的。
00000000 00000000 00000000 00000011
SUM = 2^0 + 2^1 = 3
那么怎么表示正负数?规定中,有符号整型数,第32位为0代表正,1则为负
所以-1这么表示
10000000 00000000 00000000 00000001
最大正整数就可以这么表示
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]
套公式计算一下,[0,255]

开发中的应用

IP字符串与整型的互换

PHP确实是好东西,帮我们弄了两个函数`ip2long()`,`long2ip()`,代码说话:

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

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/21020.html

相关文章

  • 浅析微信支付:商户平台开通现金红包、指定用户发放、红包记录查询

    摘要:本文是浅析微信支付系列文章的第十三篇,主要讲解在如何开通商户平台的红包功能和为用户发放红包,以及查询发送红包记录。操作路径登录微信支付商户平台产品中心现金红包开通。 本文是【浅析微信支付】系列文章的第十三篇,主要讲解在如何开通商户平台的红包功能和为用户发放红包,以及查询发送红包记录。 浅析微信支付系列已经更新十三篇了哟~,没有看过的朋友们可以看一下哦。 浅析微信支付:(余额提现)企业...

    fizz 评论0 收藏0
  • PHP入门

    摘要:运行在浏览器端。未来软件的大趋势。相同点为语言结构,不是函数输出一个或者多个变量的类型,长度及值一般用于打印复杂变量结合标记格式化输出如数组对象等输出变量的值。一般用于打印变量。中认为变量的值为时,变量虽然定义了,但是无实际的意义。 PHP目录======== php介绍 2 基础 31 运算符 70 流程控制 77 函数 91 文件引入 100 ...

    abson 评论0 收藏0
  • 浅析微信支付:(余额提现)企业付款到微信用户零钱或银行卡账户

    摘要:本文是浅析微信支付系列文章的第十二篇,主要讲解在商户存在的提现商户付款到微信用户零钱或者银行卡需求。应用场景微信支付已上线企业付款至银行卡功能。企业付款到银行卡发票与交易手续费发票为拆分单独开具。 本文是【浅析微信支付】系列文章的第十二篇,主要讲解在商户存在的提现、商户付款到微信用户零钱或者银行卡需求。 浅析微信支付系列已经更新十二篇了哟~,没有看过的朋友们可以看一下哦。 浅析微信支...

    ad6623 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<