PHP中用法BigMap实例_

PHP中用法BigMap实例_

ID:63498279

大小:12.63 KB

页数:4页

时间:2021-08-25

PHP中用法BigMap实例__第1页
PHP中用法BigMap实例__第2页
PHP中用法BigMap实例__第3页
PHP中用法BigMap实例__第4页
资源描述:

《PHP中用法BigMap实例_》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、PHP中用法BigMap实例_这篇文章主要介绍了PHP中用法BigMap实例,本文挺直给出实现代码,代码中包含具体说明,需要的伴侣可以参考下?php//所谓的Bit-map就是用一个bit位来标记某个元素对应的Value,而Key即是该元素。由于采纳了Bit为单位来存储数据,因此在存储空间方面,可以大大节约。/*若N=1;申请内存空间为inta[2];假设需要排序或者查找的总数N=10000000,那么我们需要申请内存空间的大小为inta[1+N/32],其中:a[0]在内存中占32为可以对应十进制数0-31,依次类推:1.

2、求十进制0-N对应在数组a中的下标:n/322.求0-N对应0-31中的数:N%32=M3.利用移位0-31使得对应32bit位为1:1M,并置1;举例:假如想存储3(1)a下标30/32=0;放在a[0]中;(2)3%32=30;(3)左移30位01000000000000000000000000000000这个对应的值$a[0]=1073741824;1.求十进制0-N对应在数组a中的下标:十进制0-31,对应在a[0]中,先由十进制数n转换为与32的余可转化为对应在数组a中的下标。比如n=24,那么n/32=0,则24

3、对应在数组a中的下标为0。又比如n=60,那么n/32=1,则60对应在数组a中的下标为1,同理可以计算0-N在数组a中的下标。2.求0-N对应0-31中的数:十进制0-31就对应0-31,而32-63则对应也是0-31,即给定一个数n可以通过模32求得对应0-31中的数。3.利用移位0-31使得对应32bit位为1.找到对应0-31的数为M,左移M位:即2^M.然后置1.由此我们计算10000000个bit占用的空间:1byte=8bit1kb=1024byte1mb=1024kb占用的空间为:10000000/8/102

4、4/1024mb。也许为1mb多一些。*/classbigMap{//用法两个字节保存private$mask=0x1f;private$bitsperword=32;//移位的位数为5pow(2,5)=32private$shift=5;//存储数据的数组public$bitArray=array();/**$i对应的数归零*/functionclearbit($i){////则将当前byte中的指定bit位取0,后其他对方数组bit位必定不变,这就是1的妙用//$iSHIFT这里相当于intval($i/32);//$i

5、$this-mask这里相当于$i%$this-mask,取余@$this-bitArray[$i$this-shift]=~(1($i$this-mask));}/**$i对应的数致1*/functionsetbit($i){@$this-bitArray[$i$this-shift]

6、=(1($i$this-mask));}//test测试所在的bit为是否为1functiontestbit($i){return$this-bitArray[$i$this-shift](1($i$this-mask));}}$oBig=

7、newbigMap();$oBig-setbit(30);var_dump($oBig-testbit(2));var_dump($oBig-bitArray);更多信息请查看IT技术专栏...

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。