Bitset的使用

默认情况下,BitSet的所有位都是false即0 ,使用set后才将指定的索引处的位变为true即 set ( int bitIndex ) ,set 也可以指定为 false 即 set ( int bitIndex , boolean value ) 。最小的容量为 64 位,内部以 long 来存储的,大小都是 64 的倍数。

如 :
BitSet bits1 = new BitSet(4);
相当于 0000 ,即四个 false
bits1.set(1) 后结果为 0100
and 、 or 、 xor 是对于位值 true 、 false 进行比较的


  1. import java.util.BitSet;
  2. public class BitSetDemo {
  3. public static void main(String args[]) {
  4. BitSet bits1 = new BitSet(16);
  5. BitSet bits2 = new BitSet(16);
  6. // set some bits
  7. for(int i=0; i<16; i++) {
  8. //set将指定索引处的位设置为true,用get获取会得到true
  9. if((i%2) == 0) bits1.set(i);
  10. if((i%5) != 0) bits2.set(i);
  11. }
  12. System.out.println("Initial pattern in bits1: ");
  13. System.out.println(bits1);
  14. System.out.println("\nInitial pattern in bits2: ");
  15. System.out.println(bits2);
  16. // AND bits
  17. bits2.and(bits1);
  18. System.out.println("\nbits2 AND bits1: ");
  19. System.out.println(bits2);
  20. // OR bits
  21. bits2.or(bits1);
  22. System.out.println("\nbits2 OR bits1: ");
  23. System.out.println(bits2);
  24. // XOR bits
  25. bits2.xor(bits1);
  26. System.out.println("\nbits2 XOR bits1: ");
  27. System.out.println(bits2);
  28. }
  29. }

结果如下:

Initial pattern in bits1: {0, 2, 4, 6, 8, 10, 12, 14}

Initial pattern in bits2: {1, 2, 3, 4, 6, 7, 8, 9, 11, 12, 13, 14}

bits2 AND bits1: {2, 4, 6, 8, 12, 14}

bits2 OR bits1: {0, 2, 4, 6, 8, 10, 12, 14}

bits2 XOR bits1: {}

要注意这个bits2是一直在变化的


位运算,0代表假。其他正数为真 注意必须拿两个类型相同的进行运算否则会有问题


位移
1 «  左移位,数变大

2 »
右移位,数变小

与bitmap比较一下

bitmap的实现使用的是 byte[] 数据,bitset 使用的是 long[] 数组

Blog

Dump

Project