我一直在使用Bitset http://download.oracle.com/javase/6/docs/api/java/util/BitSet.html我想在Java中做一些类似的事情。我想我必须像C中的大多数东西一样手动完成它。什么是有效的实现方法?
byte bitset[]
maybe
bool bitset[]
?
CCAN http://ccan.ozlabs.org有一个位集实现,您可以使用:http://ccan.ozlabs.org/info/jbitset.html http://ccan.ozlabs.org/info/jbitset.html
但是,如果您最终自己实现它(例如,如果您不喜欢该包的依赖项),则应该使用整数数组并使用计算机体系结构的本机大小:
#define WORD_BITS (8 * sizeof(unsigned int))
unsigned int * bitarray = (int *)calloc(size / 8 + 1, sizeof(unsigned int));
static inline void setIndex(unsigned int * bitarray, size_t idx) {
bitarray[idx / WORD_BITS] |= (1 << (idx % WORD_BITS));
}
不要使用特定的大小(例如使用 uint64 或 uint32),让计算机使用它想要使用的大小并使用 sizeof 进行适应。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)