繁体   English   中英

了解Java BitSet类的实现

[英]Understanding the implementation of Java BitSet class

当我尝试测试并理解它时,BitSet对象提供的结果有些不清楚。

主要:

byte f = (byte)0b00101000;
byte s = (byte)0b11111111;
byte[] bytes = new byte[]{f, s};
BitSet bs = BitSet.valueOf(bytes);

printlnLog("Input bitset: " + bs);
printlnLog("Input bitset length: " + bs.size());

输出:

Input bitset: {3, 5, 8, 9, 10, 11, 12, 13, 14, 15}
Input bitset length: 64

输出对我来说毫无意义。 我不了解BitSet的基本逻辑。 感谢您的帮助!

这足够清楚吗?

byte f = (byte)0b00101000;
// Bits 0 to 7   --5-3---                  
byte s = (byte)0b11111111;
// Bits 8 to 15  54321098
byte[] bytes = new byte[]{f, s};
BitSet bs = BitSet.valueOf(bytes);

而64位则归因于当前分配的位数。 设置位的最大位数可以通过调用bs.length()

没有任何迹象表明任何构造函数或方法定义的尾随未设置位,但这不是必需的。 这不会造成任何伤害,因为您不会受到使用值(例如,在BitSet.get(int index)中)超出BitSet的“结束”值的惩罚。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM