在java里,Bitset类左/右移位怎么实现?

解决方案 »

  1.   

    java.util.BitSet
    中与,或,抑或等逻辑操作都提供了相应的方法.
    移位操作没有,这个集合不能满足你的要求的话可以考虑自己实现一个BitSet类,没见到过类似的需求.
    你可以自己先读一下这个类的代码.
      

  2.   

    http://java.sun.com/j2se/1.4.2/docs/api/java/util/BitSet.html 看看吧,可能有帮助,如果还没看的话:)
      

  3.   

    哥们儿.没办法了.只能自己写相应的moveRigth(),moveLife()方法了.我写了一个.
    供朋友们讨论:
    import java.util.BitSet;public class Test extends BitSet{
    private static final long serialVersionUID = 1L;

    public static BitSet moveLeft(BitSet bs,int count) {
    if(bs == null || bs.isEmpty()) {
    return bs;
    }
    BitSet b = bs.get(count, bs.size());
    return b;

    }

    public static BitSet moveRigth(BitSet bs,int count) {
    if(bs == null || bs.isEmpty()) {
    return bs;
    }
    BitSet b = new BitSet();

    int bsSize = bs.size() - count; for (int i = 0; i < bsSize; i++) {
    b.set(count++ , bs.get(i));
    }
    return b;
    }
    /**
     * @param args
     */
    public static void main(String[] args) {
    BitSet b = new BitSet();
    b.set(0,10, true); BitSet bs = moveLeft(b,3);

    for (int i = 0; i < 64; i++) {
    if (i<10) {
    System.out.println("0"+i+"=="+bs.get(i));
    } else {
    System.out.println(i+"=="+bs.get(i));
    }
    }

    BitSet b1 = new BitSet();
    b1.set(0,10, true); BitSet bs1 = moveRigth(b,3);
    System.out.println("\n");
    for (int i = 0; i < 64; i++) {
    if (i<10) {
    System.out.println("0"+i+"=="+bs1.get(i));
    } else {
    System.out.println(i+"=="+bs1.get(i));
    }
    }
    }
    }