我不知道问题具体的关键字是什么,所以只好写这个标题
我的问题是这样:
我有一个二进制的数据块,共有1024位,用于表示1024个连续对象的使用状况,每位0表示对象空闲,1表示对象使用中。现有两种搜索需求:查找并定位单个的空闲对象;查找并定位连续两个的空闲对象,而且第一个对象编号必须是偶数。我的想法是把1024位分为32为一组,与cpu寄存器的大小一致,那么整个数据块就是一个长度为32的int数组。
定位单个的对象就不说了,不外乎比特位与或操作,然后移位
现在说定位连续连个空闲对象,也就是说比特位出现00这种模式,而且第一位还必须是偶数位,我觉得可以分为两步:第一步判断这32位中是否存在这种模式,若存在则转向第二步,否则查找下32位;第二步查找该模式存在于那两位;
但是对于这种方式的第一步,我始终没有想出高效的算法,不知各位有什么高见?