举个简单例子在java中一个int类型的數有32位,而这32只表示一个数太过浪费于是就考虑让这32位可以表示32个数,每一位表示该数是否存在例如:
这里用16位的二进制就能表示十陸个数字,1表示存在0表示不存在,上图就表示存在(1612,64,1)这五个数
在海量数据中查找重复出现的元素或者去除重复出现的元素吔是常考的问题。针对此类问题一般可以通过位图法实现,例如已知某个文件内包含一些电话号码,每个号码为8位数字统计不同号碼的个数。
本题最好的解决办法就是通过位图法来实现
8位整数可以表示的最大十进制数值为,如果每个数字对应于位图中的一个bit位那麼存储八位整数需要bit大约99Mbit,因为1Byte=8bit所以99Mbit折合成内存为99/8=12.375MB的内存,及可以只用12.375MB的内存表示所有的8位数电话号码的内容