标签:
转自http://myeyeofjava.iteye.com/blog/1738143
1G=1024M=1024K=1024BYTE=8BIT
1 byte = 1字节 = 8bit 可表达 2的八次方个数字 = 256
1 short= 2字节 = 16bit 可表达2的十六次方个数字 = 65536 约6W
1 char = 2字节 = 16bit 可表达2的十六次方个数字 = 65536 约6W
1 int = 4字节 = 32bit 可表达2的32次方个数 = 4294967296 约42亿
1 float= 4字节 = 32bit 可表达2的32次方个数 = 4294967296 约42亿
1 long = 8字节 = 64bit 可表达2的64次方个数 = 18446744073709551616 约184亿亿 184*10^16次方
1 double= 8字节 = 64bit 可表达2的64次方个数 = 18446744073709551616 约184亿亿
知道这些,才能理解bitmap需要多大的内存来计算10亿个数字里是否有重复数字,每个数字是一个IP,可见存储这些数据只需要一个int大小的内存已经足以,但运算还是需要内存的。
bitmap是比hash更加优越的地方在于此吧
1个IP 192.168.101.129 为12位的数据,也就是说有10亿个12位的数字。1个12位的数字99999999999 999亿那么需要一个double类型的数字来表示这个12位的数字,1个double类型占用8字节,也就是大概需要10亿*8字节来做这个事情,总共需要内存10亿byte,约0.93G内存即可。
标签:
原文地址:http://www.cnblogs.com/yeahwell/p/5177083.html