首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java BitSet示例

Java BitSet示例
EN

Stack Overflow用户
提问于 2012-02-18 02:45:57
回答 4查看 96.2K关注 0票数 62

我正在寻找一个好的Java BitSet示例来处理0和1。我试着看了Javadoc,但我不能通过阅读来理解类的用法。例如,andorxor方法如何在两个不同的BitSet对象上工作?

例如:

代码语言:javascript
复制
  BitSet bits1 = new BitSet();
  BitSet bits2 = new BitSet();

  bits2.set(1000001);
  bits1.set(1111111);

  bits2.and(bits1);

  System.out.println(bits2);

如果我这样做,它返回bits2为空,为什么呢?

EN

回答 4

Stack Overflow用户

发布于 2012-02-18 03:42:11

如果您想使用bits,您可以在Java7中使用int值。

代码语言:javascript
复制
int bits2 = 0b1000001;
int bits1 = 0b1111111;
bits2 &= bits1;
System.out.println(Integer.toBinaryString(bits2));

打印

代码语言:javascript
复制
1000001
票数 58
EN

Stack Overflow用户

发布于 2012-02-18 03:24:30

BitSet没有方便的方法来接受这样的位串。我在下面提供了一些,现在示例按照您的预期工作。注意,这使用了Java 7中的新功能;如果您想使用Java 6,可以很容易地在网上找到这些方法的实现。

代码语言:javascript
复制
import java.util.BitSet;

class Scratch {
    public static void main(String[] args) {
        BitSet bits1 = fromString("1000001");
        BitSet bits2 = fromString("1111111");

        System.out.println(toString(bits1)); // prints 1000001
        System.out.println(toString(bits2)); // prints 1111111

        bits2.and(bits1);

        System.out.println(toString(bits2)); // prints 1000001
    }

    private static BitSet fromString(final String s) {
        return BitSet.valueOf(new long[] { Long.parseLong(s, 2) });
    }

    private static String toString(BitSet bs) {
        return Long.toString(bs.toLongArray()[0], 2);
    }
}
票数 48
EN

Stack Overflow用户

发布于 2013-09-21 04:48:13

我正在分享我使用位串作为输入来创建BitSet对象的实现。

代码语言:javascript
复制
private static BitSet createFromString(String s) {
    BitSet t = new BitSet(s.length());
    int lastBitIndex = s.length() - 1;

    for (int i = lastBitIndex; i >= 0; i--) {
        if ( s.charAt(i) == '1'){
            t.set(lastBitIndex - i);                            
        }               
    }

    return t;
}

对于字符串输入"1001“

代码语言:javascript
复制
BitSet s1 = createFromString("1001");
    System.out.println(s1);

输出:

代码语言:javascript
复制
{0, 3}
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9333681

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档