BitSet 和整数/长整数

新手上路,请多包涵

如果我有一个我想对其执行位操作的整数,我如何将它加载到 java.util.BitSet ?如何将它转换回 int 或 long?我不太关心 BitSet 的大小——它总是 32 或 64 位长。 I’d just like to use the set() , clear() , nextSetBit() , and nextClearBit() methods rather than bitwise operators, but I can’找不到一种简单的方法来初始化数字类型的位集。

原文由 ataylor 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 653
2 个回答

下面的代码从一个 long 值创建一个位集,反之亦然:

 public class Bits {

  public static BitSet convert(long value) {
    BitSet bits = new BitSet();
    int index = 0;
    while (value != 0L) {
      if (value % 2L != 0) {
        bits.set(index);
      }
      ++index;
      value = value >>> 1;
    }
    return bits;
  }

  public static long convert(BitSet bits) {
    long value = 0L;
    for (int i = 0; i < bits.length(); ++i) {
      value += bits.get(i) ? (1L << i) : 0L;
    }
    return value;
  }
}

编辑:现在双向,@leftbrain:当然,你是对的

原文由 Arne Burmeister 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题