首页 > 其他 > 详细

8亿个整数存储

时间:2014-11-11 18:02:33      阅读:368      评论:0      收藏:0      [点我收藏+]

用int型存储占 800000000 * 4 / 1000 /1000/ = 3200M = 3.2G

用位数组存储占 3.2G /32 = 100M

#include<stdio.h>
#include "tire.h"
#include "limits.h"


#define BITSLOTS(nb) (nb + CHAR_BIT -1)/CHAR_BIT
#define BITMASK(b) (1 << ((b) % CHAR_BIT))
#define BITSLOT(b) ((b)/CHAR_BIT)
#define BITSET(a,b) ((a)[BITSLOT(b)] |= BITMASK(b))
#define BITCLEAR(a,b) ((a)[BITSLOT(b)] &= ~BITMASK(b))
#define BITTEST(a,b) ((a)[BITSLOT(b)] & BITMASK(b))

int main(int,char**)
{

	char* bitarray = new char[BITSLOTS(1000 * 1000 * 800)];
	for(int i = 0;i< BITSLOTS(1000 * 1000 * 800);i++)
		bitarray[i] = 0;

	for(int i = 0;i< 1000 * 1000 * 800;i++)
	{
		if((i % (1000 * 1000 * 10)) != 0)
		{
			BITSET(bitarray,i);
		}
	}
	
	for(int i = 0;i< 1000 * 1000 * 800;i++)
	{
		if(!BITTEST(bitarray,i))
		{
			printf("i==%d \n",i);
		}
	}
	
	getchar();
	return 0;
}

 

8亿个整数存储

原文:http://www.cnblogs.com/kangbry/p/4089950.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!